<?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>171192</bug_id>
          
          <creation_ts>2017-04-23 01:41:32 -0700</creation_ts>
          <short_desc>[macOS] AVTouchBarMediaSelectionOptions should be created with the correct type</short_desc>
          <delta_ts>2017-04-23 04:28:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jer.noble</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300301</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 01:41:32 -0700</bug_when>
    <thetext>[macOS] AVTouchBarMediaSelectionOptions should be created with the correct type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300302</commentid>
    <comment_count>1</comment_count>
      <attachid>307925</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 01:47:17 -0700</bug_when>
    <thetext>Created attachment 307925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300303</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 01:48:11 -0700</bug_when>
    <thetext>rdar://problem/29875010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300308</commentid>
    <comment_count>3</comment_count>
      <attachid>307925</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-23 02:33:09 -0700</bug_when>
    <thetext>Comment on attachment 307925
Patch

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

r=me! I&apos;m not very familiar with this part of the media code, but the plumbing looks reasonable.

&gt; Source/WebCore/page/CaptionUserPreferences.cpp:219
&gt; +MediaSelectionOption CaptionUserPreferences::mediaSelectionOptionForTrack(TextTrack* track) const

I see that displayNameForTrack currently takes a raw TextTrack*, but could we also make the new CaptionUserPreferences::mediaSelectionOptionForTrack take an std::optional&lt;TextTrack&gt; instead? Maybe we can do that in a later patch.

&gt; Source/WebCore/page/CaptionUserPreferences.cpp:266
&gt; +MediaSelectionOption CaptionUserPreferences::mediaSelectionOptionForTrack(AudioTrack* track) const

I think this would also be better as an std::optional&lt;AudioTrack&gt;. However, that would probably require refactoring displayNameForTrack as well, so maybe that&apos;s for later.

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:697
&gt; +    return m_playbackModel ? m_playbackModel-&gt;audioMediaSelectionOptions() : Vector&lt;MediaSelectionOption&gt;();

Can we use a struct initializer here?

&gt; Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm:-709
&gt; -    return m_playbackModel ? m_playbackModel-&gt;legibleMediaSelectionOptions() : Vector&lt;String&gt;();

Can we just use a { } here instead of Vector&lt;MediaSelectionOption&gt;()?

&gt; Source/WebCore/platform/mac/WebPlaybackControlsManager.mm:234
&gt; +    }

Could we also have a default return value at the end here, just in case anything in the future tries to static_cast a number to an invalid MediaSelectionOption::Type?

&gt; Source/WebCore/platform/mac/WebPlaybackControlsManager.mm:243
&gt; +        if (RetainPtr&lt;AVTouchBarMediaSelectionOption&gt; webOption = adoptNS([allocAVTouchBarMediaSelectionOptionInstance() initWithTitle:option.displayName type:toAVTouchBarMediaSelectionOptionType(option.type)]))

This could be auto webOption.

&gt; Source/WebCore/platform/mac/WebPlaybackControlsManager.mm:245
&gt; +        if (RetainPtr&lt;AVTouchBarMediaSelectionOption&gt; webOption = adoptNS([allocAVFunctionBarMediaSelectionOptionInstance() initWithTitle:option.displayName]))

auto webOption</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300309</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 02:44:05 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 307925 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307925&amp;action=review
&gt; 
&gt; r=me! I&apos;m not very familiar with this part of the media code, but the
&gt; plumbing looks reasonable.

Thanks for the review! I made the changes you suggested except for these:

&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferences.cpp:219
&gt; &gt; +MediaSelectionOption CaptionUserPreferences::mediaSelectionOptionForTrack(TextTrack* track) const
&gt; 
&gt; I see that displayNameForTrack currently takes a raw TextTrack*, but could
&gt; we also make the new CaptionUserPreferences::mediaSelectionOptionForTrack
&gt; take an std::optional&lt;TextTrack&gt; instead? Maybe we can do that in a later
&gt; patch.

There&apos;s quite a bit of cleanup that can be done here. Lots of TextTrack*s that can be TextTrack&amp;s, RefPtr&lt;TextTrack&gt;s that can be Ref&lt;TextTrack&gt;s, etc. Ditto for AudioTrack.

I agree this makes sense to do in a separate patch.

&gt; 
&gt; &gt; Source/WebCore/page/CaptionUserPreferences.cpp:266
&gt; &gt; +MediaSelectionOption CaptionUserPreferences::mediaSelectionOptionForTrack(AudioTrack* track) const
&gt; 
&gt; I think this would also be better as an std::optional&lt;AudioTrack&gt;. However,
&gt; that would probably require refactoring displayNameForTrack as well, so
&gt; maybe that&apos;s for later.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300310</commentid>
    <comment_count>5</comment_count>
      <attachid>307927</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 02:50:09 -0700</bug_when>
    <thetext>Created attachment 307927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300313</commentid>
    <comment_count>6</comment_count>
      <attachid>307928</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-04-23 03:14:04 -0700</bug_when>
    <thetext>Created attachment 307928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300316</commentid>
    <comment_count>7</comment_count>
      <attachid>307928</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-23 04:27:59 -0700</bug_when>
    <thetext>Comment on attachment 307928
Patch

Clearing flags on attachment: 307928

Committed r215672: &lt;http://trac.webkit.org/changeset/215672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300317</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-23 04:28:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307925</attachid>
            <date>2017-04-23 01:47:17 -0700</date>
            <delta_ts>2017-04-23 02:50:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171192-20170423014715.patch</filename>
            <type>text/plain</type>
            <size>59837</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRlYWJiOTJlMjVmNmJh
MTEyMjE2ZDZmNmQwNGEwZTc1MDM3ZGM3NS4uOGY1YTJjN2NlN2M1M2UwYTQ5ZDc0YjA1MzY3MjVh
OTViMWI3OTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA0LTIzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEx
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODc1MDEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9w
dGlvbiB3YXMgYWx3YXlzIGJlaW5nIGNyZWF0ZWQgd2l0aCB0eXBlCisgICAgICAgIEFWVG91Y2hC
YXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGVSZWd1bGFyLCBidXQgd2Uga25vdyBpZiBhIFRleHRU
cmFjayBpcyByZWFsbHkgdGhlIGxlZ2libGUKKyAgICAgICAgb2ZmIG9yIGxlZ2libGUgYXV0byB0
cmFjay4gVGhpcyBjaGFuZ2UgcGx1bWJzIHRoYXQgaW5mb3JtYXRpb24gaW50bworICAgICAgICBX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzbyB0aGF0IEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbnMgY2FuIGJlIGNyZWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgcmlnaHQgQVZUb3VjaEJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZS4gCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2Vz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6Om1lZGlhU2Vs
ZWN0aW9uT3B0aW9uRm9yVHJhY2spOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDo6YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0Lmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6bWVkaWFTZWxlY3Rp
b25PcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAgICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW06
CisgICAgICAgICh0b0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUpOgorICAgICAg
ICAobWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9s
c01hbmFnZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2l0aFNlbGVjdGVkSW5kZXg6
XSk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyIHNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnM6d2l0aFNlbGVjdGVkSW5kZXg6XSk6CisgICAgICAgICgtW1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyIHdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY10pOgor
ICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6XSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKwogMjAxNy0wNC0yMSAgQW5keSBFc3RlcyAgPGFl
c3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBFbmFibGUgbWVkaWEgc2VsZWN0aW9u
IGJ1dHRvbiBvbiBBVlRvdWNoQmFyU2NydWJiZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiOGE3NjFlODdiNjIz
MjdiZmNhY2ZlNTk4NTE3NjA5YzI5YWMxZDczLi44NmIzNTU2ZTA3NTA5NWFkOWE1NTg4Njc4MzEw
ODdkOGJhYWQ3ZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTctMDQtMjMgIEFu
ZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFttYWNPU10gQVZUb3VjaEJh
ck1lZGlhU2VsZWN0aW9uT3B0aW9ucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIHRoZSBjb3JyZWN0
IHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MTE5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk4NzUwMTA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rp
b25PcHRpb24+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKwogMjAxNy0wNC0yMSAgQW5keSBFc3RlcyAgPGFlc3Rl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBFbmFibGUgbWVkaWEgc2VsZWN0aW9uIGJ1
dHRvbiBvbiBBVlRvdWNoQmFyU2NydWJiZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YTkwNTViYjNhZDBkN2Q2MmZiZTQ0Zjgz
ZjFiOTk2ODYwN2Q2ZDkzLi5lMjdiY2YzNTU1YWM4OGUwYjkwZjAwYWYxNmEzZDM3ZDAxMjQxNWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MjcxLDYgKzQyNzEsNyBAQAogCQlBMTc2M0Y0MTFFMjA1ODZFMDAxRDU4REUgLyog
Q0ZOZXR3b3JrLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExNzYzRjQwMUUyMDU4NkUwMDFENThERSAvKiBDRk5ldHdvcmsuZnJhbWV3
b3JrICovOyB9OwogCQlBMTdDODEyMjBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0
b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
N0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9Owog
CQlBMTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMTBGMkE1Q0Y3
MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CisJCUExN0QyNzVFMUVBQzU3
OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3RDI3NUQxRUFDNTc5ODAwQkYwMUU3IC8qIE1l
ZGlhU2VsZWN0aW9uT3B0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQTE4MkQ1QjcxQkU3MjI2NzAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2Eu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVC
NjFCRTcyMjYyMDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSAqLzsgfTsKIAkJQTE4NUI0Mjkx
RTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTg1QjQyNzFFODIxMUExMDBEQzkxMTggLyogUHJl
dmlld0xvYWRlci5tbSAqLzsgfTsKIAkJQTE4NUI0MkExRTgyMTFBMTAwREM5MTE4IC8qIFByZXZp
ZXdMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExODVCNDI4MUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3TG9hZGVyLmggKi87IH07CkBAIC0x
MjQ3MSw2ICsxMjQ3Miw3IEBACiAJCUExNzYzRjQwMUUyMDU4NkUwMDFENThERSAvKiBDRk5ldHdv
cmsuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDRk5ldHdvcmsuZnJhbWV3b3JrOyBwYXRo
ID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DRk5ldHdvcmsuZnJhbWV3b3JrOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKIAkJQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVt
ZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1M
RWxlbWVudEZhY3RvcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTdDODEy
MTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBMTdEMjc1RDFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25P
cHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTZWxlY3Rpb25PcHRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjYxQkU3MjI2MjAwODdBN0NDIC8qIFNldHRpbmdz
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXR0aW5n
c0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTg1QjQyNzFFODIxMUEx
MDBEQzkxMTggLyogUHJldmlld0xvYWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFByZXZpZXdMb2FkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExODVCNDI4MUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3TG9hZGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByZXZpZXdMb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIzOTgzLDYgKzIzOTg1LDcgQEAKIAkJCQk3QUU2QzkzQTFCRTBDNjAx
MDBFMTlFMDMgLyogTWFpblRocmVhZFNoYXJlZFRpbWVyLmggKi8sCiAJCQkJQ0RGMkIwMDMxODFG
MDU5QzAwRjJCNDI0IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAqLywKIAkJCQlDRDY0MUVDNzE4MUVE
NjAxMDBFRTRDNDEgLyogTWVkaWFTYW1wbGUuaCAqLywKKwkJCQlBMTdEMjc1RDFFQUM1Nzk4MDBC
RjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCAqLywKIAkJCQlCQzc3MkM0QzBDNEVCMzA0
MDA4MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5jcHAgKi8sCiAJCQkJQkM3NzJDNEQwQzRFQjMw
NDAwODMyODVGIC8qIE1JTUVUeXBlUmVnaXN0cnkuaCAqLywKIAkJCQlFMTUxM0Q1MDE2NzdGMDg4
MDAxNDlGQ0IgLyogTm90SW1wbGVtZW50ZWQuY3BwICovLApAQCAtMjg5MDYsNiArMjg5MDksNyBA
QAogCQkJCTA2NkM3NzMxMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNDODI5OEUxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRl
ckZsZXhpYmxlQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MDhDQ0E0RjEzQ0YxMDZCMDAzMTUx
RjMgLyogUmVuZGVyRmxvd1RocmVhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3RDI3NUUxRUFD
NTc5ODAwQkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODcxREVEMzBBMTUzMEM3MDBCMTJBNjggLyogUmVuZGVyRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRDMwODBGMTE3Q0Y3RTcwMEE3OTFGNyAvKiBSZW5kZXJGcmFtZUJhc2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4NzFERUQxMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZVNl
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzLmNwcAppbmRleCBkMWEwZjIwOTY4YzUzYjhmNzA0YWE2ZTdjNmQ5YzJlN2U4OTVm
ZTM2Li43ZjdhZTE4ZDJlOTJhMzVlNjgzODkzYTRhYmJjMDljMDM2MGQ1M2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICsz
MCw3IEBACiAKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdyYXBw
ZXJXb3JsZC5oIgorI2luY2x1ZGUgIk1lZGlhU2VsZWN0aW9uT3B0aW9uLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBA
IC0yMTQsNiArMjE1LDE2IEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpkaXNwbGF5
TmFtZUZvclRyYWNrKFRleHRUcmFjayogdHJhY2spIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRyYWNr
RGlzcGxheU5hbWUodHJhY2spOwogfQorCitNZWRpYVNlbGVjdGlvbk9wdGlvbiBDYXB0aW9uVXNl
clByZWZlcmVuY2VzOjptZWRpYVNlbGVjdGlvbk9wdGlvbkZvclRyYWNrKFRleHRUcmFjayogdHJh
Y2spIGNvbnN0Cit7CisgICAgYXV0byB0eXBlID0gTWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU6
OlJlZ3VsYXI7CisgICAgaWYgKHRyYWNrID09IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVPZmZJdGVt
KCkpCisgICAgICAgIHR5cGUgPSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6TGVnaWJsZU9m
ZjsKKyAgICBlbHNlIGlmICh0cmFjayA9PSBUZXh0VHJhY2s6OmNhcHRpb25NZW51QXV0b21hdGlj
SXRlbSgpKQorICAgICAgICB0eXBlID0gTWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU6OkxlZ2li
bGVBdXRvOworICAgIHJldHVybiB7IGRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2spLCB0eXBlIH07
Cit9CiAgICAgCiBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5j
ZXM6OnNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCogdHJhY2tMaXN0KQogewpA
QCAtMjUyLDYgKzI2MywxMSBAQCBTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6ZGlzcGxh
eU5hbWVGb3JUcmFjayhBdWRpb1RyYWNrKiB0cmFjaykgY29uc3QKICAgICByZXR1cm4gdHJhY2tE
aXNwbGF5TmFtZSh0cmFjayk7CiB9CiAKK01lZGlhU2VsZWN0aW9uT3B0aW9uIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXM6Om1lZGlhU2VsZWN0aW9uT3B0aW9uRm9yVHJhY2soQXVkaW9UcmFjayogdHJh
Y2spIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjayksIE1l
ZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpSZWd1bGFyIH07Cit9CisKIFZlY3RvcjxSZWZQdHI8
QXVkaW9UcmFjaz4+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OnNvcnRlZFRyYWNrTGlzdEZvck1l
bnUoQXVkaW9UcmFja0xpc3QqIHRyYWNrTGlzdCkKIHsKICAgICBBU1NFUlQodHJhY2tMaXN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKaW5kZXggOTll
ZjY0NjM3OWMzN2I4NTgxMDk5ZTQwODU5NTljMTIzNDg0Y2FhNi4uOTZmZTY2MzEzNjcwMzQ5Njhj
NWI5NTI4ZTJhNmRkMzhkYjA2MDU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9u
VXNlclByZWZlcmVuY2VzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTYgIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBIVE1MTWVkaWFFbGVt
ZW50OwogY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgQXVkaW9UcmFja0xpc3Q7CiBjbGFzcyBUZXh0
VHJhY2tMaXN0Oworc3RydWN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uOwogCiBjbGFzcyBDYXB0aW9u
VXNlclByZWZlcmVuY2VzIHsKIHB1YmxpYzoKQEAgLTg1LDkgKzg2LDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0aWNzKCkg
Y29uc3Q7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkaXNwbGF5TmFtZUZvclRyYWNrKFRleHRUcmFj
ayopIGNvbnN0OworICAgIE1lZGlhU2VsZWN0aW9uT3B0aW9uIG1lZGlhU2VsZWN0aW9uT3B0aW9u
Rm9yVHJhY2soVGV4dFRyYWNrKikgY29uc3Q7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRl
eHRUcmFjaz4+IHNvcnRlZFRyYWNrTGlzdEZvck1lbnUoVGV4dFRyYWNrTGlzdCopOwogCiAgICAg
dmlydHVhbCBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhBdWRpb1RyYWNrKikgY29uc3Q7Cisg
ICAgTWVkaWFTZWxlY3Rpb25PcHRpb24gbWVkaWFTZWxlY3Rpb25PcHRpb25Gb3JUcmFjayhBdWRp
b1RyYWNrKikgY29uc3Q7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPEF1ZGlvVHJhY2s+PiBz
b3J0ZWRUcmFja0xpc3RGb3JNZW51KEF1ZGlvVHJhY2tMaXN0Kik7CiAKICAgICB2b2lkIHNldFBy
aW1hcnlBdWRpb1RyYWNrTGFuZ3VhZ2VPdmVycmlkZShjb25zdCBTdHJpbmcmIGxhbmd1YWdlKSB7
IG1fcHJpbWFyeUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlID0gbGFuZ3VhZ2U7ICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMWVjMjY0OWIzYThmZjJmODlmNTY0ZGFmMzFlMjUzODllZjY3NTRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVkaWFTZWxlY3Rpb25PcHRpb24uaApAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgTWVkaWFT
ZWxlY3Rpb25PcHRpb24geworICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIFJlZ3VsYXIs
CisgICAgICAgIExlZ2libGVPZmYsCisgICAgICAgIExlZ2libGVBdXRvLAorICAgIH07CisKKyAg
ICBTdHJpbmcgZGlzcGxheU5hbWU7CisgICAgVHlwZSB0eXBlOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgKaW5kZXggZTMwZjgwYzEyMzRlNzE4YjRmYWE1ZGMyYTRi
OWM4MTJlN2YxYjA1NC4uOTA5MjUxOWVhNTBlMzhmYzcxMjYyOThlYjZmMzNlYWMxN2ZlOTU0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNz
aW9uTW9kZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25Nb2RlbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsX2gKLSNkZWZp
bmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiAKQEAgLTM1LDggKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGlt
ZVJhbmdlczsKLQogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ7CitzdHJ1Y3Qg
TWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsIHsK
IHB1YmxpYzoKQEAgLTY4LDkgKzY3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgcGxh
eWJhY2tSYXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmPFRpbWVSYW5nZXM+IHNlZWth
YmxlUmFuZ2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5RmFzdFJldmVy
c2UoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBhdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRf
dCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Qg
PSAwOwpAQCAtODgsOCArODcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJhdGVDaGFu
Z2VkKGJvb2wgLyogaXNQbGF5aW5nICovLCBmbG9hdCAvKiBwbGF5YmFja1JhdGUgKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIC8qIG9wdGlvbnMgKi8sIHVpbnQ2NF90IC8qIHNlbGVjdGVkSW5k
ZXggKi8pIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyog
c2VsZWN0ZWRJbmRleCAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiAvKiBv
cHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxlY3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyogc2VsZWN0ZWRJ
bmRleCAqLykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJv
b2wgLyogZW5hYmxlZCAqLywgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIC8qIGxvY2FsaXplZERldmljZU5hbWUgKi8pIHsg
fQogICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQo
Ym9vbCkgeyB9CiB9OwpAQCAtOTcsNSArOTYsMyBAQCBwdWJsaWM6CiB9CiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJ
T05fTU9ERSkpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50LmgK
aW5kZXggMTM1MDk3ZDk1ZDI4ZDZiZTUzYjQ4MzU4NmFmMjc5ODkwZWM0MTdjYy4uNThlZjRkZTU3
OGE5YzE2MjBhOGFhZWYzZjA3OGE0ZWFiZGRiNTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50X2gKLSNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnRfaAorI3By
YWdtYSBvbmNlCisKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CisKIGNsYXNzIEF1ZGlvVHJhY2s7CiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50Owog
Y2xhc3MgVGV4dFRyYWNrOwpAQCAtNzcsOSArNzgsOSBAQCBwdWJsaWM6CiAgICAgZmxvYXQgcGxh
eWJhY2tSYXRlKCkgY29uc3QgZmluYWw7CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFu
Z2VzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBm
aW5hbDsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
KCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBhdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IGF1ZGlvTWVk
aWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWw7Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBs
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWw7CisgICAgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qg
ZmluYWw7CiAgICAgdWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdCBmaW5hbDsKICAg
ICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgp
IGNvbnN0IGZpbmFsOwpAQCAtMTAyLDkgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIHBs
YXliYWNrU3RhcnRlZFRpbWUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUxlZ2libGVPcHRpb25z
KCk7CiB9OwotICAgIAotfQogCi0jZW5kaWYKK30KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGY2MzVhZWQzYjk3ZjAxMjlmZjllYTgzZDE0Yzc5
MWJiZTc1ZjhiN2YuLjA3MjVhZjliODBhZGIzN2NkNGNmMzU5MThhZWFlNDY3YjMxYmRiNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW1wb3J0ICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJNZWRpYUNvbnRyb2xzSG9zdC5oIgorI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRpb24u
aCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiU29m
dExpbmtpbmcuaCIKQEAgLTM0OCwyMCArMzQ5LDIwIEBAIGJvb2wgV2ViUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OmNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm1pbkZhc3RSZXZlcnNlUmF0ZSgpIDwg
MC4wIDogZmFsc2U7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8
TWVkaWFTZWxlY3Rpb25PcHRpb24+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPFN0cmlu
Zz4gYXVkaW9UcmFja0Rpc3BsYXlOYW1lczsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRp
b24+IGF1ZGlvT3B0aW9uczsKIAogICAgIGlmICghbV9tZWRpYUVsZW1lbnQgfHwgIW1fbWVkaWFF
bGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGF1ZGlvVHJhY2tEaXNw
bGF5TmFtZXM7CisgICAgICAgIHJldHVybiBhdWRpb09wdGlvbnM7CiAKICAgICBhdXRvJiBjYXB0
aW9uUHJlZmVyZW5jZXMgPSBtX21lZGlhRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPmdyb3Vw
KCkuY2FwdGlvblByZWZlcmVuY2VzKCk7CiAKLSAgICBhdWRpb1RyYWNrRGlzcGxheU5hbWVzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkobV9hdWRpb1RyYWNrc0Zvck1lbnUuc2l6ZSgpKTsKKyAgICBh
dWRpb09wdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2F1ZGlvVHJhY2tzRm9yTWVudS5z
aXplKCkpOwogICAgIGZvciAoYXV0byYgYXVkaW9UcmFjayA6IG1fYXVkaW9UcmFja3NGb3JNZW51
KQotICAgICAgICBhdWRpb1RyYWNrRGlzcGxheU5hbWVzLnVuY2hlY2tlZEFwcGVuZChjYXB0aW9u
UHJlZmVyZW5jZXMuZGlzcGxheU5hbWVGb3JUcmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CisgICAg
ICAgIGF1ZGlvT3B0aW9ucy51bmNoZWNrZWRBcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLm1lZGlh
U2VsZWN0aW9uT3B0aW9uRm9yVHJhY2soYXVkaW9UcmFjay5nZXQoKSkpOwogCi0gICAgcmV0dXJu
IGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXM7CisgICAgcmV0dXJuIGF1ZGlvT3B0aW9uczsKIH0KIAog
dWludDY0X3QgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFT
ZWxlY3RlZEluZGV4KCkgY29uc3QKQEAgLTM3MywxOSArMzc0LDE5IEBAIHVpbnQ2NF90IFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgp
IGNvbnN0CiAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsK
IH0KIAotVmVjdG9yPFdURjo6U3RyaW5nPiBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiB0
cmFja0Rpc3BsYXlOYW1lczsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGxlZ2li
bGVPcHRpb25zOwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9tZWRpYUVsZW1lbnQt
PmRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gdHJhY2tEaXNwbGF5TmFtZXM7Cisg
ICAgICAgIHJldHVybiBsZWdpYmxlT3B0aW9uczsKIAogICAgIGF1dG8mIGNhcHRpb25QcmVmZXJl
bmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9u
UHJlZmVyZW5jZXMoKTsKIAogICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2xlZ2libGVUcmFja3NG
b3JNZW51KQotICAgICAgICB0cmFja0Rpc3BsYXlOYW1lcy5hcHBlbmQoY2FwdGlvblByZWZlcmVu
Y2VzLmRpc3BsYXlOYW1lRm9yVHJhY2sodHJhY2suZ2V0KCkpKTsKKyAgICAgICAgbGVnaWJsZU9w
dGlvbnMuYXBwZW5kKGNhcHRpb25QcmVmZXJlbmNlcy5tZWRpYVNlbGVjdGlvbk9wdGlvbkZvclRy
YWNrKHRyYWNrLmdldCgpKSk7CiAKLSAgICByZXR1cm4gdHJhY2tEaXNwbGF5TmFtZXM7CisgICAg
cmV0dXJuIGxlZ2libGVPcHRpb25zOwogfQogCiB1aW50NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbE1lZGlhRWxlbWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5oCmluZGV4IDIzZDc3MmRkMTFiODEyZmYwMGQ4OTA2MGMyODg5
NDQwMDU5Mjc1MGEuLmUxNWE2N2RhZDcxYzVmMWIyNTBiODg5OTRmY2FmODYxMDZlZGM5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oCkBAIC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBw
bGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Vla2FibGVS
YW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9y
PE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZChib29sIGVuYWJsZWQsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hh
bmdlZChib29sKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4
IDcxYjliOWI3YmM1NGI2YWI3NTU3YWZiNjI1NjViOWRkYzRjZmU3ZDUuLjNjYzRkNzcyOWZhYTkw
MWQyMjc2MmJjNDcyN2RiZThmZGY1YjFkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQu
bW0KQEAgLTMyLDYgKzMyLDcgQEAKIAogI2ltcG9ydCAiQVZLaXRTUEkuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKKyNpbXBvcnQgIk1lZGlhU2VsZWN0aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJUaW1l
UmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJBVlBsYXllckNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCkBAIC0xNzEsMTggKzE3MiwxOCBAQCB2b2lkIFdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJv
b2wgY2FuUGxheUZhcwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0Q2FuU2NhbkJhY2t3YXJk
OmNhblBsYXlGYXN0UmV2ZXJzZV07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJy
YXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucykK
K3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zKQogewogICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAgIGZvciAoYXV0
byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IG9wdGlvbnMpIHsK
ICAgICAgICAgUmV0YWluUHRyPFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9
IGFkb3B0TlMoW1tXZWJBVk1lZGlhU2VsZWN0aW9uT3B0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAg
ICAgIFt3ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6bmFtZV07CisgICAgICAgIFt3
ZWJPcHRpb24gc2V0TG9jYWxpemVkRGlzcGxheU5hbWU6b3B0aW9uLmRpc3BsYXlOYW1lXTsKICAg
ICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07CiAgICAgfQogICAg
IHJldHVybiB3ZWJPcHRpb25zOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMg
PSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CiAgICAgW21fcGxheWVyQ29udHJvbGxl
ciBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTE5
MCw3ICsxOTEsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjphdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVgogICAgICAgICBbbV9wbGF5ZXJD
b250cm9sbGVyIHNldEN1cnJlbnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25z
IG9iamVjdEF0SW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldXTsK
IH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6bGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9u
T3B0aW9ucyhvcHRpb25zKTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQppbmRleCBjMDA0YmI2NDNhYTczNTkyMGQ2MmE5NjczMWJiMTllOTU1ODZmMTQz
Li4xZjUzNmRhMjY0NjdlMzQyMzFhMTcxNGY3NmJjNThkOWVmM2FhYTU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE1NSw5ICsxNTUsOSBAQCBwcml2YXRlOgogICAgIGZs
b2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlZjxUaW1lUmFuZ2VzPiBz
ZWVrYWJsZVJhbmdlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuUGxheUZhc3RSZXZl
cnNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgVmVjdG9yPFN0cmluZz4gYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25P
cHRpb24+IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKLSAgICBW
ZWN0b3I8U3RyaW5nPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdWludDY0X3QgbGVnaWJsZU1lZGlhU2Vs
ZWN0ZWRJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZXh0ZXJuYWxQbGF5YmFja0Vu
YWJsZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSBl
eHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTcxLDggKzE3
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZChjb25zdCBUaW1lUmFuZ2VzJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjYW5QbGF5RmFzdFJldmVy
c2VDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlv
bnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgZXh0ZXJuYWxQ
bGF5YmFja0NoYW5nZWQoYm9vbCBlbmFibGVkLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFt
ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5n
ZWQoYm9vbCkgb3ZlcnJpZGU7CiAKQEAgLTM3NCw3ICszNzQsNyBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wg
Y2FuUGxheQogICAgICAgICBjbGllbnQtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxh
eUZhc3RSZXZlcnNlKTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7CiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29ucwogICAg
ICAgICBjbGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRf
dCBzZWxlY3RlZEluZGV4KQogewogICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAg
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CkBAIC02OTEsMTAgKzY5MSwxMCBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdAogICAgIHJldHVy
biBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmNhblBsYXlGYXN0UmV2ZXJzZSgp
IDogZmFsc2U7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojph
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7Ci0gICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSA6IFZlY3RvcjxTdHJpbmc+KCk7CisgICAgcmV0dXJu
IG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnMoKSA6IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4oKTsKIH0KIAogdWludDY0X3Qg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3RlZElu
ZGV4KCkgY29uc3QKQEAgLTcwMywxMCArNzAzLDEwIEBAIHVpbnQ2NF90IFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNl
bGVjdGVkSW5kZXgoKSA6IC0xOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0
CitWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8gbV9wbGF5
YmFja01vZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgOiBWZWN0b3I8U3RyaW5n
PigpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSA6IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4o
KTsKIH0KIAogdWludDY0X3QgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6Omxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAppbmRleCA5NTI2
NjJmNmJkMmI0MmI4ZGQ3OGU4NDY1NDljNmYyNjg0ODc2M2QyLi43Njk2ZDE5ZGE3ZjJlOGIzYTBl
NjE3ZmM3NTI1ZWU2MzcxZTc0NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMyw2IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcl9oCi0jZGVmaW5lIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
X2gKLQogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RF
KQogCiAjaW1wb3J0IDxXZWJDb3JlL0FWS2l0U1BJLmg+CkBAIC0zNCw2ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsK
K3N0cnVjdCBNZWRpYVNlbGVjdGlvbk9wdGlvbjsKIH0KIAogI2lmIEVOQUJMRShXRUJfUExBWUJB
Q0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTczLDEyICs3MSwxMCBAQCBXRUJDT1JFX0VYUE9SVAog
LSAodm9pZClzZXRDdXJyZW50QXVkaW9Ub3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKilvcHRpb247CiAtIChBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb24gKiljdXJyZW50TGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b247CiAtICh2b2lkKXNldEN1cnJlbnRMZWdpYmxlVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
bjooQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0aW9uOwotLSAodm9pZClzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0
aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3RlZEluZGV4OwotLSAodm9p
ZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7
CistICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihO
U1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7CistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mKW9w
dGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleDsKIEBlbmQK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQot
Ci0jZW5kaWYgLy8gV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1t
CmluZGV4IDdkMjRjMTExNWYwOTFhNjVlYjJhMzlhOTQ3Mjk2OTYzYzY0NmI4MjcuLjQ4MGQ2MzUw
OGMzZjQwNmViZjc5ZTcxN2Y1YmU4NTM2OTdhYzNhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE2ICsyMywxOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
ci5oIgorI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja0NvbnRyb2xzTWFu
YWdlci5oIgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpICYmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAorI2ltcG9y
dCAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1w
b3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKICNpbXBvcnQgIldlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsLmgiCiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdudWxsYWJpbGl0eS1jb21wbGV0ZW5l
c3MiCiBTT0ZUX0xJTktfRlJBTUVXT1JLKEFWS2l0KQpAQCAtMjE4LDIxICsyMjEsMzUgQEAgLSAo
dm9pZClzZXRDdXJyZW50TGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk8KICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LT53ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5k
ZXggIT0gTlNOb3RGb3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7CiB9CiAKLXN0YXRpYyBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb3B0aW9ucykKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwMTMwMAorc3RhdGljIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgdG9BVlRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlKE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBl
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVNlbGVjdGlvbk9w
dGlvbjo6VHlwZTo6UmVndWxhcjoKKyAgICAgICAgcmV0dXJuIEFWVG91Y2hCYXJNZWRpYVNlbGVj
dGlvbk9wdGlvblR5cGVSZWd1bGFyOworICAgIGNhc2UgTWVkaWFTZWxlY3Rpb25PcHRpb246OlR5
cGU6OkxlZ2libGVPZmY6CisgICAgICAgIHJldHVybiBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25UeXBlTGVnaWJsZU9mZjsKKyAgICBjYXNlIE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBl
OjpMZWdpYmxlQXV0bzoKKyAgICAgICAgcmV0dXJuIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9w
dGlvblR5cGVMZWdpYmxlQXV0bzsKKyAgICB9Cit9CisjZW5kaWYKKworc3RhdGljIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9u
cykgeworICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykgewogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwCi0gICAgICAgIGlmIChSZXRhaW5QdHI8QVZU
b3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FW
VG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1l
IHR5cGU6QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyAgICAg
ICAgaWYgKFJldGFpblB0cjxBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlv
biA9IGFkb3B0TlMoW2FsbG9jQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2Uo
KSBpbml0V2l0aFRpdGxlOm9wdGlvbi5kaXNwbGF5TmFtZSB0eXBlOnRvQVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZShvcHRpb24udHlwZSldKSkKICNlbHNlCi0gICAgICAgIGlmIChS
ZXRhaW5QdHI8QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9w
dE5TKFthbGxvY0FWRnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbkluc3RhbmNlKCkgaW5p
dFdpdGhUaXRsZTpuYW1lXSkpCisgICAgICAgIGlmIChSZXRhaW5QdHI8QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWRnVuY3Rpb25CYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpvcHRpb24uZGlzcGxh
eU5hbWVdKSkKICNlbmRpZiAvLyBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTMwMAogICAgICAgICAgICAgW3dlYk9wdGlvbnMgYWRkT2JqZWN0OndlYk9wdGlvbi5nZXQoKV07
CiAgICAgfQogICAgIHJldHVybiB3ZWJPcHRpb25zOwogfQogCi0tICh2b2lkKXNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JilvcHRpb25zIHdp
dGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXgKKy0gKHZvaWQpc2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlv
bj4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleAog
ewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0
aW9uT3B0aW9ucyhvcHRpb25zKTsKICAgICBbc2VsZiBzZXRBdWRpb1RvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwpAQCAtMjQwLDcgKzI1Nyw3IEBAIC0gKHZv
aWQpc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mKW9wdGlvbnMgd2l0aFNlCiAgICAgICAgIFtzZWxmIHNldEN1cnJlbnRBdWRpb1RvdWNoQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzZWxlY3RlZElu
ZGV4XV07CiB9CiAKLS0gKHZvaWQpc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczooY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50
ZWdlcilzZWxlY3RlZEluZGV4CistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnM6KGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mKW9wdGlvbnMgd2l0aFNlbGVj
dGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleAogewogICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsK
ICAgICBbc2VsZiBzZXRMZWdpYmxlVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0
aW9ucy5nZXQoKV07CkBAIC0yNDgsMTIgKzI2NSwxMiBAQCAtICh2b2lkKXNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0
aAogICAgICAgICBbc2VsZiBzZXRDdXJyZW50TGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb246W3dlYk9wdGlvbnMgb2JqZWN0QXRJbmRleDpzZWxlY3RlZEluZGV4XV07CiB9CiAKLS0g
KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyopd2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjCistIChXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYwogewogICAgIHJldHVybiBfd2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLmdldCgpOwogfQogCi0tICh2b2lkKXNldFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYzooV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKil3
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKKy0gKHZvaWQpc2V0V2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjOihXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMqKXdlYlBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZU1hYwogewogICAgIGlmIChfd2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjID09IHdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYykKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCmluZGV4IDJjNzRkMmE3MjQ5YmExMGFlMmI0NWE4
YzEwNzA4ODFkMTFhYjY2OTMuLjViMGE5ZGM2NjhkMTNmYjEyZTU5NDJjNGZmODc0OGI1NjdhY2I2
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjX2gKLSNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjX2gK
KyNwcmFnbWEgb25jZQogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VO
VEFUSU9OX01PREUpCiAKQEAgLTU4LDggKzU3LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSAvKmN1cnJlbnRUaW1lKi8sIGRvdWJs
ZSAvKmFuY2hvclRpbWUqLykgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByYXRlQ2hh
bmdlZChib29sIC8qaXNQbGF5aW5nKi8sIGZsb2F0IC8qcGxheWJhY2tSYXRlKi8pIGZpbmFsOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVS
YW5nZXMmKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2
NF90IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5hbDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAv
Km9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZl
Y3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVj
dGVkSW5kZXgqLykgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+
JiAvKm9wdGlvbnMqLywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
ZW5zdXJlQ29udHJvbHNNYW5hZ2VyKCk7CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9M
U19NQU5BR0VSKQpAQCAtODMsNSArODIsMyBAQCBwcml2YXRlOgogfQogCiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KaW5kZXggMjhhZGM0ZmE3ODUyNWU0M2ZkM2RkZTJiYWQ1
NjE3NmNlOTE3MzViNS4uNTcxOTc2NzIyYTMyMWFiYWViN2MxMjViODM0YmMyNmRhYjA4YTliNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEzICsyMywxNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgiCiAKICNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCAi
QVZLaXRTUEkuaCIKICNpbXBvcnQgIkludFJlY3QuaCIKKyNpbXBvcnQgIk1lZGlhU2VsZWN0aW9u
T3B0aW9uLmgiCiAjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24uaCIKICNpbXBvcnQgIlRp
bWVSYW5nZXMuaCIKICNpbXBvcnQgIldlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmgiCkBAIC0x
MzgsNyArMTM5LDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNlZWth
YmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJiB0aW0KICNlbmRpZgogfQogCi12b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6YXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAjaWYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgIFtwbGF5QmFja0NvbnRyb2xzTWFuYWdl
cigpIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVjdGVkSW5k
ZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOwpAQCAtMTQ4LDcgKzE0
OSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjphdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6bGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9u
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICNpZiBFTkFCTEUoV0VCX1BM
QVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkg
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4
OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5kZXgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNThhYWVjMzFmZTNj
NWM0MzgwOTI2Zjk4Y2EzZjM0ZTY4ZGY2MDc1Yi4uMzUwNTIzYjEwNTk3NThlM2JhNzYxYWU3Nzg5
ODRlZmFkYmQwNWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTGVuZ3RoQm94Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlv
bk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF0aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CkBAIC0y
NDc4LDQgKzI0NzksMjEgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNjcm9sbE9mZnNldFJhbmdlPGZs
b2F0Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTY3JvbGxPZmYKIAogI2VuZGlmCiAKK3Zv
aWQgQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBNZWRpYVNlbGVjdGlvbk9wdGlvbiYgb3B0aW9uKQoreworICAgIGVuY29k
ZXIgPDwgb3B0aW9uLmRpc3BsYXlOYW1lOworICAgIGVuY29kZXIgPDwgb3B0aW9uLnR5cGU7Cit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyLCBNZWRpYVNlbGVjdGlvbk9wdGlvbiYgb3B0aW9uKQoreworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUob3B0aW9uLmRpc3BsYXlOYW1lKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb24udHlwZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA0YTYz
NjliYTI5ZjZkYWE1MWZlYzhkNTYzNWZjMTRlYzU3YzkxMDg1Li5kOWVkYWM1ZDE1ODdiNTFkZjU4
NjYzYTI0MjAyMDRlZjYzMGJkNzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
VHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luZGV4ZWREQi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2Fk
TWV0cmljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgpAQCAtNjUyLDYgKzY1MywxMSBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcm9sbE9mZnNldFJhbmdl
PGZsb2F0Pj4gewogCiAjZW5kaWYKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24mKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uJik7
Cit9OworCiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogbmFtZXNwYWNlIFdURiB7CkBAIC03MTIsNCAr
NzE4LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6Q2FwdHVyZURl
dmljZTo6RGV2aWNlVHlwZT4gewogfTsKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlPiB7CisgICAgdXNpbmcg
dmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRp
b246OlR5cGUsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpS
ZWd1bGFyLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6TGVn
aWJsZU9mZiwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU6Okxl
Z2libGVBdXRvCisgICAgPjsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5oCmluZGV4IDdiZThlZDcyZjdkNDc4NGNmOTg1ZmYzZWFkYzU0YTI4ODli
M2U1NjguLjhmMjEzNWEzMGIxNzI0YmI4ZWU2YzYzODc4MDU3NTkxNzhkMzVlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTIgKzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHlfaAotI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlfaAorI3By
YWdtYSBvbmNlCisKICNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVZpZXcu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVSYW5nZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsLmg+CkBAIC03Niw4ICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CiAgICAgdm9p
ZCBzZXRTZWVrYWJsZVJhbmdlcyhXZWJDb3JlOjpUaW1lUmFuZ2VzJik7CiAgICAgdm9pZCBzZXRD
YW5QbGF5RmFzdFJldmVyc2UoYm9vbCk7Ci0gICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRl
eCk7Ci0gICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVj
dGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IGluZGV4KTsKKyAgICB2b2lkIHNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0
aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3QgaW5kZXgpOwogICAgIHZvaWQgc2V0RXh0ZXJu
YWxQbGF5YmFjayhib29sLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWQoYm9vbCk7CiAKQEAgLTExMyw5ICsxMTQsOSBAQCBwcml2YXRlOgogICAg
IGZsb2F0IHBsYXliYWNrUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGxheWJhY2tSYXRl
OyB9CiAgICAgUmVmPFdlYkNvcmU6OlRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zZWVrYWJsZVJhbmdlcy5jb3B5UmVmKCk7IH0KICAgICBib29sIGNh
blBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2FuUGxheUZhc3RSZXZl
cnNlOyB9Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0K
KyAgICBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IGF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczsgfQogICAgIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleDsgfQotICAgIFZlY3RvcjxX
VEY6OlN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQorICAgIFZlY3RvcjxXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsgfQog
ICAgIHVpbnQ2NF90IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7IH0KICAgICBib29sIGV4dGVybmFsUGxh
eWJhY2tFbmFibGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9leHRlcm5hbFBsYXliYWNrRW5h
YmxlZDsgfQogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSBleHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGU7IH0KQEAgLTEzNSw5ICsxMzYsOSBAQCBwcml2
YXRlOgogICAgIGZsb2F0IG1fcGxheWJhY2tSYXRlIHsgMCB9OwogICAgIFJlZjxXZWJDb3JlOjpU
aW1lUmFuZ2VzPiBtX3NlZWthYmxlUmFuZ2VzIHsgV2ViQ29yZTo6VGltZVJhbmdlczo6Y3JlYXRl
KCkgfTsKICAgICBib29sIG1fY2FuUGxheUZhc3RSZXZlcnNlIHsgZmFsc2UgfTsKLSAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAgVmVjdG9y
PFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zOwogICAgIHVpbnQ2NF90IG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggeyAwIH07Ci0gICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CisgICAg
VmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBtX2xlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnM7CiAgICAgdWludDY0X3QgbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4IHsg
MCB9OwogICAgIGJvb2wgbV9leHRlcm5hbFBsYXliYWNrRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIG1fZXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgeyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0
VHlwZU5vbmUgfTsKQEAgLTE3OCw4ICsxNzksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0QnVm
ZmVyZWRUaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSk7CiAgICAg
dm9pZCBzZXRTZWVrYWJsZVJhbmdlc1ZlY3Rvcih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3Rvcjxz
dGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXMpOwogICAgIHZvaWQgc2V0Q2FuUGxheUZh
c3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJp
bmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAgIHZvaWQgc2V0TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZvaWQgc2V0QXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2ViQ29yZTo6TWVk
aWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAg
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3Ry
aW5nIGxvY2FsaXplZERldmljZU5hbWUpOwogICAgIHZvaWQgc2V0V2lyZWxlc3NWaWRlb1BsYXli
YWNrRGlzYWJsZWQodWludDY0X3QgY29udGV4dElkLCBib29sKTsKICAgICB2b2lkIHNldER1cmF0
aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKTsKQEAgLTIxMCw1ICsyMTEs
MyBAQCBwcml2YXRlOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCi0KLSNlbmRpZiAvLyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHlfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWNlNjlmNmY2
NjVkZTFmMTQyN2ZmYTc3MGZmMmMyODZlZjI4MWE3OC4uYTdmMTRiZjRkNGYxYTRlZTIzNzNhYTQx
NzU1MGY1YzcwMWNkMTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDggKzI3LDggQEAgbWVzc2FnZXMgLT4gV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5IHsKICAgICBTZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVm
ZmVyZWRUaW1lKQogICAgIFNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgVmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcykKICAgICBTZXRDYW5Q
bGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQotICAgIFNldEF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmlu
Zz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKLSAgICBTZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9w
dGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKKyAgICBTZXRMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogICAg
IFNldEV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBl
bmFibGVkLCB1aW50MzJfdCB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkK
ICAgICBTZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgZGlzYWJsZWQpCiAgICAgU2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgZHVyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBhYmNiZmM1
OTE0NTkzZTE3ZDc4NDYwYmUwYjBkMWEwOGUyNDFjMjg3Li5mZjU3MDFiZmI2YmEwZDI4MDYwNjA1
MWFlODYyODUxOTEyNGI3MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRDYW5Q
bGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyCiAgICAgICAgIGNsaWVudC0+Y2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOwogfQogCi12b2lkIFdl
YlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMs
IHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLCB1aW50
NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX2F1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CiAgICAgbV9hdWRpb01lZGlh
U2VsZWN0ZWRJbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OwpAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRBdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8CiAgICAgICAgIGNsaWVudC0+YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zLCBhdWRpb01l
ZGlhU2VsZWN0ZWRJbmRleCk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIHVpbnQ2NF90IGxlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0
TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25P
cHRpb24+JiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLCB1aW50NjRfdCBsZWdpYmxlTWVk
aWFTZWxlY3RlZEluZGV4KQogewogICAgIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9
IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7CiAgICAgbV9sZWdpYmxlTWVkaWFTZWxlY3Rl
ZEluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleDsKQEAgLTM1OSwxMiArMzU5LDEyIEBA
IHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRDYW5QbGF5RmFzdFJldmVy
c2UodWludDY0X3QgY29udGV4dElkLCBiCiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRD
YW5QbGF5RmFzdFJldmVyc2UodmFsdWUpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4
dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCkuc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJbmRl
eCk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNv
bnRleHRJZCwgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewogICAgIGVuc3VyZU1vZGVsKGNvbnRleHRJZCkuc2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmgKaW5kZXggMjU0Nzk0YWZmZTA4NjEzNzEzNjg2NjM3OGNiOTEwMjhmMjhlNWMy
OS4uZDQ1NDc5YWZhMTFjOWVmNDYwZDhiOGZiN2YzYTZhZGIyNGU0OGE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCi0jZGVmaW5l
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFURk9S
TShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9E
RSkpCiAKQEAgLTgyLDggKzgxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJhdGVDaGFuZ2VkKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIGZpbmFsOwogICAgIHZvaWQgc2Vla2Fi
bGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmKSBmaW5hbDsKICAgICB2
b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCB2YWx1ZSkgZmluYWw7Ci0gICAgdm9p
ZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwotICAgIHZvaWQgbGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlv
bnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOworICAgIHZvaWQgYXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlv
bk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOworICAgIHZv
aWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQs
IFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0
VHlwZSwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBmaW5hbDsKICAgICB2b2lk
IHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBmaW5hbDsKIApAQCAt
MTI4LDggKzEyNyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHJhdGVDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSk7CiAgICAgdm9p
ZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3Jl
OjpUaW1lUmFuZ2VzJik7CiAgICAgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7Ci0gICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpOworICAgIHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rp
b25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIGV4
dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBX
ZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKICAgICB2b2lkIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogCkBAIC0x
NTgsNSArMTU3LDMgQEAgcHJvdGVjdGVkOgogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVT
RU5UQVRJT05fTU9ERSkpCi0KLSNlbmRpZiAvLyBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBiODA2NjIzOGRhMDcwYThlYzExMjY5NGJlZDkw
NDFiODk4NjcxZmZiLi5jNzQ0NTM0NWM3YzJiNWE0ZWJhNjIxNWVmZTBjOWY5ZWZmMjk5OTI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgotCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKIAogI2lmIFBMQVRGT1JNKElPUykgfHwg
KFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIApAQCAt
MTE0LDEzICsxMTMsMTMgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgdmFsdWUpCiAgICAgICAgIG1fbWFuYWdl
ci0+Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChtX2NvbnRleHRJZCwgdmFsdWUpOwogfQogCi12
b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgaWYg
KG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxl
Y3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIGlm
IChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQobV9jb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwpAQCAtMzE3
LDEyICszMTYsMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm8KICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0Q2FuUGxheUZhc3RS
ZXZlcnNlKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
VmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6U2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4dElkLCBvcHRp
b25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpTZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnRleHRJZCwgb3B0
aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307927</attachid>
            <date>2017-04-23 02:50:09 -0700</date>
            <delta_ts>2017-04-23 03:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171192-20170423025008.patch</filename>
            <type>text/plain</type>
            <size>60996</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRlYWJiOTJlMjVmNmJh
MTEyMjE2ZDZmNmQwNGEwZTc1MDM3ZGM3NS4uOTY4MDE1ODQ4YzE4OGJlNjgxMzlkZDdiZGNiNzYz
ZmY1MWY3MjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA0LTIzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEx
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODc1MDEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gd2FzIGFsd2F5cyBiZWluZyBjcmVhdGVkIHdpdGggdHlwZQorICAgICAgICBBVlRvdWNoQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlUmVndWxhciwgYnV0IHdlIGtub3cgaWYgYSBUZXh0VHJh
Y2sgaXMgcmVhbGx5IHRoZSBsZWdpYmxlCisgICAgICAgIG9mZiBvciBsZWdpYmxlIGF1dG8gdHJh
Y2suIFRoaXMgY2hhbmdlIHBsdW1icyB0aGF0IGluZm9ybWF0aW9uIGludG8KKyAgICAgICAgV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgc28gdGhhdCBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlCisgICAgICAgIHJpZ2h0IEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUuIAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjptZWRpYVNlbGVj
dGlvbk9wdGlvbkZvclRyYWNrKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENsaWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgor
ICAgICAgICAodG9BVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndpdGhTZWxlY3RlZEluZGV4Ol0p
OgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOndpdGhTZWxlY3RlZEluZGV4Ol0pOgorICAgICAgICAoLVtXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciB3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisKIDIwMTctMDQtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gRW5hYmxlIG1lZGlhIHNlbGVjdGlvbiBi
dXR0b24gb24gQVZUb3VjaEJhclNjcnViYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhhNzYxZTg3YjYyMzI3
YmZjYWNmZTU5ODUxNzYwOWMyOWFjMWQ3My4uMDllMmRjNzA4ZWVjNTZiYzJjOTJlOGJhZjIxZDQw
Y2UyNWNkZTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA0LTIzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEx
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODc1MDEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9u
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorCiAyMDE3LTA0LTIxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEVuYWJsZSBtZWRpYSBzZWxlY3Rpb24gYnV0dG9u
IG9uIEFWVG91Y2hCYXJTY3J1YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlhOTA1NWJiM2FkMGQ3ZDYyZmJlNDRmODNmMWI5
OTY4NjA3ZDZkOTMuLmUyN2JjZjM1NTVhYzg4ZTBiOTBmMDBhZjE2YTNkMzdkMDEyNDE1ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQyNzEsNiArNDI3MSw3IEBACiAJCUExNzYzRjQxMUUyMDU4NkUwMDFENThERSAvKiBDRk5l
dHdvcmsuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsg
Ki87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3Qzgx
MjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUEx
N0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKKwkJQTE3RDI3NUUxRUFDNTc5ODAw
QkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdEMjc1RDFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFT
ZWxlY3Rpb25PcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMTgyRDVCNzFCRTcyMjY3MDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUI2MUJF
NzIyNjIwMDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovOyB9OwogCQlBMTg1QjQyOTFFODIx
MUExMDBEQzkxMTggLyogUHJldmlld0xvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODVCNDI3MUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3
TG9hZGVyLm1tICovOyB9OwogCQlBMTg1QjQyQTFFODIxMUExMDBEQzkxMTggLyogUHJldmlld0xv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4
NUI0MjgxRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCAqLzsgfTsKQEAgLTEyNDcx
LDYgKzEyNDcyLDcgQEAKIAkJQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSBT
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVt
ZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExN0QyNzVEMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTgyRDVCNjFCRTcyMjYyMDA4N0E3Q0MgLyogU2V0dGluZ3NDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNldHRpbmdzQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODVCNDI3MUU4MjExQTEwMERD
OTExOCAvKiBQcmV2aWV3TG9hZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJldmlld0xvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE4NUI0MjgxRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJldmlld0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjM5ODMsNiArMjM5ODUsNyBAQAogCQkJCTdBRTZDOTNBMUJFMEM2MDEwMEUx
OUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCAqLywKIAkJCQlDREYyQjAwMzE4MUYwNTlD
MDBGMkI0MjQgLyogTWVkaWFEZXNjcmlwdGlvbi5oICovLAogCQkJCUNENjQxRUM3MTgxRUQ2MDEw
MEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovLAorCQkJCUExN0QyNzVEMUVBQzU3OTgwMEJGMDFF
NyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oICovLAogCQkJCUJDNzcyQzRDMEM0RUIzMDQwMDgz
Mjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCAqLywKIAkJCQlCQzc3MkM0RDBDNEVCMzA0MDA4
MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oICovLAogCQkJCUUxNTEzRDUwMTY3N0YwODgwMDE0
OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi8sCkBAIC0yODkwNiw2ICsyODkwOSw3IEBACiAJ
CQkJMDY2Qzc3MzEwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1M0M4Mjk4RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxl
eGlibGVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAv
KiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTdEMjc1RTFFQUM1Nzk4
MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzFERUQzMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEMzA4MEYxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURFRDEwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lU2V0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IGQxYTBmMjA5NjhjNTNiOGY3MDRhYTZlN2M2ZDljMmU3ZTg5NWZlMzYu
LjdmN2FlMThkMmU5MmEzNWU2ODM4OTNhNGFiYmMwOWMwMzYwZDUzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldv
cmxkLmgiCisjaW5jbHVkZSAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTIx
NCw2ICsyMTUsMTYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmRpc3BsYXlOYW1l
Rm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKIHsKICAgICByZXR1cm4gdHJhY2tEaXNw
bGF5TmFtZSh0cmFjayk7CiB9CisKK01lZGlhU2VsZWN0aW9uT3B0aW9uIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6Om1lZGlhU2VsZWN0aW9uT3B0aW9uRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykg
Y29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6UmVn
dWxhcjsKKyAgICBpZiAodHJhY2sgPT0gVGV4dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKSkK
KyAgICAgICAgdHlwZSA9IE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpMZWdpYmxlT2ZmOwor
ICAgIGVsc2UgaWYgKHRyYWNrID09IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVt
KCkpCisgICAgICAgIHR5cGUgPSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6TGVnaWJsZUF1
dG87CisgICAgcmV0dXJuIHsgZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjayksIHR5cGUgfTsKK30K
ICAgICAKIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCiB7CkBAIC0y
NTIsNiArMjYzLDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpkaXNwbGF5TmFt
ZUZvclRyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKSBjb25zdAogICAgIHJldHVybiB0cmFja0Rpc3Bs
YXlOYW1lKHRyYWNrKTsKIH0KIAorTWVkaWFTZWxlY3Rpb25PcHRpb24gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6bWVkaWFTZWxlY3Rpb25PcHRpb25Gb3JUcmFjayhBdWRpb1RyYWNrKiB0cmFjaykg
Y29uc3QKK3sKKyAgICByZXR1cm4geyBkaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrKSwgTWVkaWFT
ZWxlY3Rpb25PcHRpb246OlR5cGU6OlJlZ3VsYXIgfTsKK30KKwogVmVjdG9yPFJlZlB0cjxBdWRp
b1RyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudShB
dWRpb1RyYWNrTGlzdCogdHJhY2tMaXN0KQogewogICAgIEFTU0VSVCh0cmFja0xpc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCA5OWVmNjQ2
Mzc5YzM3Yjg1ODEwOTllNDA4NTk1OWMxMjM0ODRjYWE2Li45NmZlNjYzMTM2NzAzNDk2OGM1Yjk1
MjhlMmE2ZGQzOGRiMDYwNThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNiAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiBjbGFzcyBQYWdlR3JvdXA7CiBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKIGNsYXNzIFRleHRUcmFj
a0xpc3Q7CitzdHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMgewogcHVibGljOgpAQCAtODUsOSArODYsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikg
Y29uc3Q7CisgICAgTWVkaWFTZWxlY3Rpb25PcHRpb24gbWVkaWFTZWxlY3Rpb25PcHRpb25Gb3JU
cmFjayhUZXh0VHJhY2sqKSBjb25zdDsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0Kik7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBkaXNwbGF5TmFtZUZvclRyYWNrKEF1ZGlvVHJhY2sqKSBjb25zdDsKKyAgICBN
ZWRpYVNlbGVjdGlvbk9wdGlvbiBtZWRpYVNlbGVjdGlvbk9wdGlvbkZvclRyYWNrKEF1ZGlvVHJh
Y2sqKSBjb25zdDsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QqKTsKIAogICAgIHZvaWQgc2V0UHJpbWFy
eUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpIHsgbV9w
cmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUgPSBsYW5ndWFnZTsgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
ZWMyNjQ5YjNhOGZmMmY4OWY1NjRkYWYzMWUyNTM4OWVmNjc1NGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYVNlbGVj
dGlvbk9wdGlvbiB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgUmVndWxhciwKKyAg
ICAgICAgTGVnaWJsZU9mZiwKKyAgICAgICAgTGVnaWJsZUF1dG8sCisgICAgfTsKKworICAgIFN0
cmluZyBkaXNwbGF5TmFtZTsKKyAgICBUeXBlIHR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaAppbmRleCBlMzBmODBjMTIzNGU3MThiNGZhYTVkYzJhNGI5Yzgx
MmU3ZjFiMDU0Li45MDkyNTE5ZWE1MGUzOGZjNzEyNjI5OGViNmYzM2VhYzE3ZmU5NTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAotI2RlZmluZSBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
IApAQCAtMzUsOCArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lUmFu
Z2VzOwotCiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDsKK3N0cnVjdCBNZWRp
YVNlbGVjdGlvbk9wdGlvbjsKIAogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVi
bGljOgpAQCAtNjgsOSArNjcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFj
a1JhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGVS
YW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPE1lZGlhU2VsZWN0aW9u
T3B0aW9uPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4
dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCA9IDA7
CkBAIC04OCw4ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQo
Ym9vbCAvKiBpc1BsYXlpbmcgKi8sIGZsb2F0IC8qIHBsYXliYWNrUmF0ZSAqLykgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyogc2VsZWN0ZWRJbmRleCAq
LykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxl
Y3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIC8qIG9wdGlv
bnMgKi8sIHVpbnQ2NF90IC8qIHNlbGVjdGVkSW5kZXggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxlY3RlZEluZGV4
ICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCAv
KiBlbmFibGVkICovLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUsIGNvbnN0IFN0cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAqLykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29s
KSB7IH0KIH07CkBAIC05Nyw1ICs5NiwzIEBAIHB1YmxpYzoKIH0KIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRl
eCAxMzUwOTdkOTVkMjhkNmJlNTNiNDgzNTg2YWYyNzk4OTBlYzQxN2NjLi41OGVmNGRlNTc4YTlj
MTYyMGE4YWFlZjNmMDc4YTRlYWJkZGI1NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnRf
aAotI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjcHJhZ21h
IG9uY2UKKwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFz
cyBUZXh0VHJhY2s7CkBAIC03Nyw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwbGF5YmFj
a1JhdGUoKSBjb25zdCBmaW5hbDsKICAgICBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0IGZpbmFs
OwotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBj
b25zdCBmaW5hbDsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgYXVkaW9NZWRpYVNl
bGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbDsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5h
bDsKICAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIEV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29u
c3QgZmluYWw7CkBAIC0xMDIsOSArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgcGxheWJh
Y2tTdGFydGVkVGltZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsK
IH07Ci0gICAgCi19CiAKLSNlbmRpZgorfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggZjYzNWFlZDNiOTdmMDEyOWZmOWVhODNkMTRjNzkxYmJl
NzVmOGI3Zi4uMDcyNWFmOWI4MGFkYjM3Y2Q0Y2YzNTkxOGFlYWU0NjdiMzFiZGI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
Ik1lZGlhQ29udHJvbHNIb3N0LmgiCisjaW1wb3J0ICJNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIgog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgpAQCAtMzQ4LDIwICszNDksMjAgQEAgYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6Y2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QKICAgICByZXR1cm4gbV9t
ZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjAg
OiBmYWxzZTsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBh
dWRpb1RyYWNrRGlzcGxheU5hbWVzOworICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
YXVkaW9PcHRpb25zOwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9tZWRpYUVsZW1l
bnQtPmRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gYXVkaW9UcmFja0Rpc3BsYXlO
YW1lczsKKyAgICAgICAgcmV0dXJuIGF1ZGlvT3B0aW9uczsKIAogICAgIGF1dG8mIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKTsKIAotICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2F1ZGlvVHJhY2tzRm9yTWVudS5zaXplKCkpOworICAgIGF1ZGlv
T3B0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUo
KSk7CiAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrIDogbV9hdWRpb1RyYWNrc0Zvck1lbnUpCi0g
ICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMudW5jaGVja2VkQXBwZW5kKGNhcHRpb25QcmVm
ZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKGF1ZGlvVHJhY2suZ2V0KCkpKTsKKyAgICAgICAg
YXVkaW9PcHRpb25zLnVuY2hlY2tlZEFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMubWVkaWFTZWxl
Y3Rpb25PcHRpb25Gb3JUcmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CiAKLSAgICByZXR1cm4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKKyAgICByZXR1cm4gYXVkaW9PcHRpb25zOwogfQogCiB1aW50
NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVj
dGVkSW5kZXgoKSBjb25zdApAQCAtMzczLDE5ICszNzQsMTkgQEAgdWludDY0X3QgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOwogfQog
Ci1WZWN0b3I8V1RGOjpTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNr
RGlzcGxheU5hbWVzOworICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbGVnaWJsZU9w
dGlvbnM7CiAKICAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX21lZGlhRWxlbWVudC0+ZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lczsKKyAgICAg
ICAgcmV0dXJuIGxlZ2libGVPcHRpb25zOwogCiAgICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2Vz
ID0gbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpOwogCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUpCi0gICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworICAgICAgICBsZWdpYmxlT3B0aW9u
cy5hcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLm1lZGlhU2VsZWN0aW9uT3B0aW9uRm9yVHJhY2so
dHJhY2suZ2V0KCkpKTsKIAotICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lczsKKyAgICByZXR1
cm4gbGVnaWJsZU9wdGlvbnM7CiB9CiAKIHVpbnQ2NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0LmgKaW5kZXggMjNkNzcyZGQxMWI4MTJmZjAwZDg5MDYwYzI4ODk0NDAw
NTkyNzUwYS4uZTE1YTY3ZGFkNzFjNWYxYjI1MGI4ODk5NGZjYWY4NjEwNmVkYzk2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrUmF0ZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVrYWJsZVJhbmdl
c0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSBvdmVycmlkZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJv
b2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNzFi
OWI5YjdiYzU0YjZhYjc1NTdhZmI2MjU2NWI5ZGRjNGNmZTdkNS4uM2NjNGQ3NzI5ZmFhOTAxZDIy
NzYyYmM0NzI3ZGJlOGZkZjViMWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQpA
QCAtMzIsNiArMzIsNyBAQAogCiAjaW1wb3J0ICJBVktpdFNQSS5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgorI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKICNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaCIKQEAgLTE3MSwxOCArMTcyLDE4IEBAIHZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBj
YW5QbGF5RmFzCiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDYW5TY2FuQmFja3dhcmQ6Y2Fu
UGxheUZhc3RSZXZlcnNlXTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
bWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQorc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMpCiB7CiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBu
YW1lIDogb3B0aW9ucykgeworICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykgewogICAg
ICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0aW9uID0gYWRv
cHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxsb2NdIGluaXRdKTsKLSAgICAgICAg
W3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpuYW1lXTsKKyAgICAgICAgW3dlYk9w
dGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpvcHRpb24uZGlzcGxheU5hbWVdOwogICAgICAg
ICBbd2ViT3B0aW9ucyBhZGRPYmplY3Q6d2ViT3B0aW9uLmdldCgpXTsKICAgICB9CiAgICAgcmV0
dXJuIHdlYk9wdGlvbnM7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwpAQCAtMTkwLDcg
KzE5MSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWCiAgICAgICAgIFttX3BsYXllckNvbnRy
b2xsZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRp
b25zKG9wdGlvbnMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tCmluZGV4IGMwMDRiYjY0M2FhNzM1OTIwZDYyYTk2NzMxYmIxOWU5NTU4NmYxNDMuLjk3
MTc3ODgyODRjYTNkNzMwMjQ3ZTFiMzVmZTVjMThiMzA2YzdhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0LmgiCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQg
Ik1lZGlhU2VsZWN0aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJRdWFydHpDb3JlU1BJLmgiCiAjaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgpAQCAtMTU1LDkgKzE1
Niw5IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRp
b24+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICB1
aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNzEsOCArMTcyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJhdGVDaGFu
Z2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgbGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZv
aWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlh
U2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBvdmVycmlkZTsKIApAQCAtMzc0LDExICsz
NzUsMjAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXkKICAgICAgICAgY2xpZW50LT5jYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKK3N0YXRpYyBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGlzb2xhdGVkQ29weShj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zKQoreworICAgIFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9uc0NvcHk7CisgICAgb3B0aW9uc0NvcHkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShvcHRpb25zLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBvcHRp
b24gOiBvcHRpb25zKQorICAgICAgICBvcHRpb25zQ29weS51bmNoZWNrZWRBcHBlbmQoeyBvcHRp
b24uZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbi50eXBlIH0pOworICAgIHJldHVy
biBvcHRpb25zQ29weTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAg
ICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMs
IG9wdGlvbnMgPSBvcHRpb25zLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0g
aXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zODgsMTEgKzM5
OCwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29ucwogICAgICAgICBjbGllbnQtPmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewog
ICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlz
LCBvcHRpb25zID0gb3B0aW9ucywgc2VsZWN0ZWRJbmRleF0geworICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgb3B0aW9ucyA9
IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC02OTEsMTAg
KzcwMSwxMCBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5Q
bGF5RmFzdFJldmVyc2UoKSBjb25zdAogICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3Bs
YXliYWNrTW9kZWwtPmNhblBsYXlGYXN0UmV2ZXJzZSgpIDogZmFsc2U7CiB9CiAKLVZlY3RvcjxT
dHJpbmc+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fcGxh
eWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KSA6IFZlY3RvcjxTdHJpbmc+KCk7CisgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxh
eWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSA6IHsgfTsKIH0KIAogdWlu
dDY0X3QgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxl
Y3RlZEluZGV4KCkgY29uc3QKQEAgLTcwMywxMCArNzEzLDEwIEBAIHVpbnQ2NF90IFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9N
ZWRpYVNlbGVjdGVkSW5kZXgoKSA6IC0xOwogfQogCi1WZWN0b3I8U3RyaW5nPiBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygp
IGNvbnN0CitWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8g
bV9wbGF5YmFja01vZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgOiBWZWN0b3I8
U3RyaW5nPigpOworICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwt
PmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSA6IHsgfTsKIH0KIAogdWludDY0X3QgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGVkSW5k
ZXgoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIuaAppbmRleCA5NTI2NjJmNmJkMmI0MmI4ZGQ3OGU4NDY1
NDljNmYyNjg0ODc2M2QyLi43Njk2ZDE5ZGE3ZjJlOGIzYTBlNjE3ZmM3NTI1ZWU2MzcxZTc0NTQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tDb250cm9sc01hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMyw2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcl9o
Ci0jZGVmaW5lIFdlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyX2gKLQogI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCiAjaW1wb3J0IDxXZWJDb3Jl
L0FWS2l0U1BJLmg+CkBAIC0zNCw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKK3N0cnVjdCBNZWRpYVNlbGVjdGlv
bk9wdGlvbjsKIH0KIAogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikK
QEAgLTczLDEyICs3MSwxMCBAQCBXRUJDT1JFX0VYUE9SVAogLSAodm9pZClzZXRDdXJyZW50QXVk
aW9Ub3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOihBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb24gKilvcHRpb247CiAtIChBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24gKiljdXJy
ZW50TGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb247CiAtICh2b2lkKXNldEN1cnJl
bnRMZWdpYmxlVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZUb3VjaEJhck1lZGlhU2Vs
ZWN0aW9uT3B0aW9uICopb3B0aW9uOwotLSAodm9pZClzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uczooY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRl
eDooTlNVSW50ZWdlcilzZWxlY3RlZEluZGV4OwotLSAodm9pZClzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JilvcHRpb25zIHdpdGhTZWxl
Y3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXg7CistICh2b2lkKXNldEF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25P
cHRpb24+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5k
ZXg7CistICh2b2lkKXNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5k
ZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleDsKIEBlbmQKIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQotCi0jZW5kaWYgLy8gV2ViUGxheWJh
Y2tDb250cm9sc01hbmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tCmluZGV4IDdkMjRjMTExNWYwOTFh
NjVlYjJhMzlhOTQ3Mjk2OTYzYzY0NmI4MjcuLjRkNzM0NzZlZGU1MzFjNTkwNjYyODk5NGMyMDc5
ZjkwY2Q5NmUyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE2ICsyMywxOSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5oIgorI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5oIgogCiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpICYmIEVOQUJMRShXRUJf
UExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKIAorI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRp
b24uaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMuaCIKICNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsLmgiCiAj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdudWxsYWJpbGl0eS1jb21wbGV0ZW5lc3MiCiBTT0ZUX0xJTktfRlJBTUVX
T1JLKEFWS2l0KQpAQCAtMjE4LDIxICsyMjEsMzcgQEAgLSAodm9pZClzZXRDdXJyZW50TGVnaWJs
ZVRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk8K
ICAgICBfd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT53ZWJQbGF5YmFja1Nlc3Npb25N
b2RlbCgpLT5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RGb3VuZCA/IGlu
ZGV4IDogVUlOVDY0X01BWCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucykKKyNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAorc3RhdGljIEFWVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgdG9BVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25UeXBlKE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6UmVndWxhcjoK
KyAgICAgICAgcmV0dXJuIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGVSZWd1bGFy
OworICAgIGNhc2UgTWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU6OkxlZ2libGVPZmY6CisgICAg
ICAgIHJldHVybiBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlTGVnaWJsZU9mZjsK
KyAgICBjYXNlIE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpMZWdpYmxlQXV0bzoKKyAgICAg
ICAgcmV0dXJuIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGVMZWdpYmxlQXV0bzsK
KyAgICB9CisKKyAgICByZXR1cm4gQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZVJl
Z3VsYXI7Cit9CisjZW5kaWYKKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVk
aWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9w
dGlvbnMpCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6
ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykgeworICAgIGZvciAoYXV0byYg
b3B0aW9uIDogb3B0aW9ucykgewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwCi0gICAgICAgIGlmIChSZXRhaW5QdHI8QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9u
T3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FWVG91Y2hCYXJNZWRpYVNlbGVjdGlv
bk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpuYW1lIHR5cGU6QVZUb3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9uVHlwZVJlZ3VsYXJdKSkKKyAgICAgICAgaWYgKGF1dG8gd2ViT3B0aW9u
ID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25JbnN0YW5jZSgp
IGluaXRXaXRoVGl0bGU6b3B0aW9uLmRpc3BsYXlOYW1lIHR5cGU6dG9BVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb25UeXBlKG9wdGlvbi50eXBlKV0pKQogI2Vsc2UKLSAgICAgICAgaWYgKFJl
dGFpblB0cjxBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb24+IHdlYk9wdGlvbiA9IGFkb3B0
TlMoW2FsbG9jQVZGdW5jdGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0
V2l0aFRpdGxlOm5hbWVdKSkKKyAgICAgICAgaWYgKGF1dG8gd2ViT3B0aW9uID0gYWRvcHROUyhb
YWxsb2NBVkZ1bmN0aW9uQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25JbnN0YW5jZSgpIGluaXRXaXRo
VGl0bGU6b3B0aW9uLmRpc3BsYXlOYW1lXSkpCiAjZW5kaWYgLy8gX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKICAgICAgICAgICAgIFt3ZWJPcHRpb25zIGFkZE9iamVj
dDp3ZWJPcHRpb24uZ2V0KCldOwogICAgIH0KICAgICByZXR1cm4gd2ViT3B0aW9uczsKIH0KIAot
LSAodm9pZClzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPFdURjo6
U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3RlZElu
ZGV4CistICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8
TWVkaWFTZWxlY3Rpb25PcHRpb24+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRl
Z2VyKXNlbGVjdGVkSW5kZXgKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9w
dGlvbnMgPSBtZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucyk7CiAgICAgW3NlbGYgc2V0QXVk
aW9Ub3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTI0
MCw3ICsyNTksNyBAQCAtICh2b2lkKXNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25z
dCBWZWN0b3I8V1RGOjpTdHJpbmc+JilvcHRpb25zIHdpdGhTZQogICAgICAgICBbc2VsZiBzZXRD
dXJyZW50QXVkaW9Ub3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVj
dEF0SW5kZXg6c2VsZWN0ZWRJbmRleF1dOwogfQogCi0tICh2b2lkKXNldExlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNl
bGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleAorLSAodm9pZClzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+
JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXgKIHsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IHdlYk9wdGlvbnMgPSBtZWRpYVNlbGVjdGlv
bk9wdGlvbnMob3B0aW9ucyk7CiAgICAgW3NlbGYgc2V0TGVnaWJsZVRvdWNoQmFyTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwpAQCAtMjQ4LDEyICsyNjcsMTIgQEAgLSAo
dm9pZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JilvcHRpb25zIHdpdGgKICAgICAgICAgW3NlbGYgc2V0Q3VycmVudExlZ2libGVUb3Vj
aEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOlt3ZWJPcHRpb25zIG9iamVjdEF0SW5kZXg6c2VsZWN0
ZWRJbmRleF1dOwogfQogCi0tIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWMqKXdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYworLSAoV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjKil3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKIHsKICAgICByZXR1
cm4gX3dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5nZXQoKTsKIH0KIAotLSAodm9pZClz
ZXRXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6KFdlYkNvcmU6OldlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYyopd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjCistICh2b2lk
KXNldFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzooV2ViUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjKil3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKIHsKICAgICBpZiAoX3dl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyA9PSB3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaAppbmRleCAyYzc0
ZDJhNzI0OWJhMTBhZTJiNDVhOGMxMDcwODgxZDExYWI2NjkzLi41YjBhOWRjNjY4ZDEzZmIxMmU1
OTQyYzRmZjg3NDhiNTY3YWNiNmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hY19oCi0jZGVmaW5lIFdlYlBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hY19oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCkBAIC01OCw4ICs1Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGN1cnJlbnRUaW1lQ2hhbmdlZChkb3VibGUgLypj
dXJyZW50VGltZSovLCBkb3VibGUgLyphbmNob3JUaW1lKi8pIGZpbmFsOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCAvKmlzUGxheWluZyovLCBmbG9hdCAvKnBsYXli
YWNrUmF0ZSovKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNlZWthYmxlUmFuZ2Vz
Q2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgZmluYWw7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRleCov
KSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiAvKm9wdGlvbnMq
LywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90IC8qc2VsZWN0ZWRJbmRl
eCovKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGludmFsaWRhdGUoKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGVuc3VyZUNvbnRyb2xzTWFuYWdlcigpOwogI2lmIEVOQUJMRShX
RUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKQEAgLTgzLDUgKzgyLDMgQEAgcHJpdmF0ZToK
IH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCmluZGV4IDI4YWRjNGZh
Nzg1MjVlNDNmZDNkZGUyYmFkNTYxNzZjZTkxNzM1YjUuLjU3MTk3NjcyMmEzMjFhYmFlYjdjMTI1
YjgzNGJjMjZkYWIwOGE5YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMyArMjMs
MTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgi
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oIgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9O
X01PREUpCiAKICNpbXBvcnQgIkFWS2l0U1BJLmgiCiAjaW1wb3J0ICJJbnRSZWN0LmgiCisjaW1w
b3J0ICJNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIgogI2ltcG9ydCAiTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmgiCiAjaW1wb3J0ICJUaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJXZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlci5oIgpAQCAtMTM4LDcgKzEzOSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYgdGlt
CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0
b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQogewogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBbcGxh
eUJhY2tDb250cm9sc01hbmFnZXIoKSBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczpvcHRp
b25zIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHNlbGVjdGVkSW5k
ZXgpXTsKQEAgLTE0OCw3ICsxNDksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlYwogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWM6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxN
ZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7
CiAjaWYgRU5BQkxFKFdFQl9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgIFtwbGF5QmFj
a0NvbnRyb2xzTWFuYWdlcigpIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM6b3B0aW9u
cyB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4
KV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDU4YWFlYzMxZmUzYzVjNDM4MDkyNmY5OGNhM2YzNGU2OGRmNjA3NWIuLjM1MDUyM2Ix
MDU5NzU4ZTNiYTc2MWFlNzc4OTg0ZWZhZGJkMDVmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00OSw2ICs0OSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9MZW5ndGguaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aEJveC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhdGguaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb3Rl
Y3Rpb25TcGFjZS5oPgpAQCAtMjQ3OCw0ICsyNDc5LDIxIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxT
Y3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2Nyb2xs
T2ZmCiAKICNlbmRpZgogCit2b2lkIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25PcHRpb24+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgTWVkaWFTZWxlY3Rpb25PcHRpb24mIG9w
dGlvbikKK3sKKyAgICBlbmNvZGVyIDw8IG9wdGlvbi5kaXNwbGF5TmFtZTsKKyAgICBlbmNvZGVy
IDw8IG9wdGlvbi50eXBlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8TWVkaWFTZWxlY3Rpb25P
cHRpb24+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgTWVkaWFTZWxlY3Rpb25PcHRpb24mIG9w
dGlvbikKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbi5kaXNwbGF5TmFtZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUob3B0aW9uLnR5
cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNGE2MzY5YmEyOWY2ZGFhNTFmZWM4ZDU2MzVmYzE0ZWM1N2M5MTA4NS4u
ZDllZGFjNWQxNTg3YjUxZGY1ODY2M2EyNDIwMjA0ZWY2MzBiZDczOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2VsZWN0aW9uT3B0aW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRI
ZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KQEAg
LTY1Miw2ICs2NTMsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTY3JvbGxPZmZzZXRSYW5nZTxmbG9hdD4+IHsKIAogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9u
T3B0aW9uJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbiYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKIG5hbWVzcGFj
ZSBXVEYgewpAQCAtNzEyLDQgKzcxOCwxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRz
PFdlYkNvcmU6OkNhcHR1cmVEZXZpY2U6OkRldmljZVR5cGU+IHsKIH07CiAjZW5kaWYKIAordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6
VHlwZT4geworICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYkNvcmU6
Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVNlbGVj
dGlvbk9wdGlvbjo6VHlwZTo6UmVndWxhciwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFTZWxlY3Rp
b25PcHRpb246OlR5cGU6OkxlZ2libGVPZmYsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhU2VsZWN0
aW9uT3B0aW9uOjpUeXBlOjpMZWdpYmxlQXV0bworICAgID47Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaAppbmRleCA3YmU4ZWQ3MmY3ZDQ3ODRj
Zjk4NWZmM2VhZGM1NGEyODg5YjNlNTY4Li44ZjIxMzVhMzBiMTcyNGJiOGVlNmM2Mzg3ODA1NzU5
MTc4ZDM1ZTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyICsyMywxMyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5X2gKLSNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5X2gKKyNwcmFnbWEgb25jZQorCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1WaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oPgpAQCAtNzYsOCArNzcs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5
YmFja1JhdGUpOwogICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoV2ViQ29yZTo6VGltZVJhbmdl
cyYpOwogICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpOwotICAgIHZvaWQgc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0
aW9ucywgdWludDY0X3QgaW5kZXgpOwotICAgIHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRl
eCk7CisgICAgdm9pZCBzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRleCk7
CisgICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IGluZGV4KTsK
ICAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCwgV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpOwogCkBAIC0xMTMsOSArMTE0
LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBwbGF5YmFja1JhdGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3BsYXliYWNrUmF0ZTsgfQogICAgIFJlZjxXZWJDb3JlOjpUaW1lUmFuZ2VzPiBzZWVr
YWJsZVJhbmdlcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vla2FibGVSYW5nZXMuY29weVJl
ZigpOyB9CiAgICAgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2NhblBsYXlGYXN0UmV2ZXJzZTsgfQotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOyB9CisgICAgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0
aW9uPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7IH0KICAgICB1aW50NjRfdCBhdWRpb01lZGlhU2Vs
ZWN0ZWRJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5k
ZXg7IH0KLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnM7
IH0KKyAgICBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IGxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnM7IH0KICAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4OyB9CiAg
ICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQ7IH0KICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlOyB9CkBAIC0x
MzUsOSArMTM2LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZSB7IDAgfTsK
ICAgICBSZWY8V2ViQ29yZTo6VGltZVJhbmdlcz4gbV9zZWVrYWJsZVJhbmdlcyB7IFdlYkNvcmU6
OlRpbWVSYW5nZXM6OmNyZWF0ZSgpIH07CiAgICAgYm9vbCBtX2NhblBsYXlGYXN0UmV2ZXJzZSB7
IGZhbHNlIH07Ci0gICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2F1ZGlvTWVkaWFTZWxlY3Rpb25P
cHRpb25zOworICAgIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbV9hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uczsKICAgICB1aW50NjRfdCBtX2F1ZGlvTWVkaWFTZWxlY3Rl
ZEluZGV4IHsgMCB9OwotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9sZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zOworICAgIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
bV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwogICAgIHVpbnQ2NF90IG1fbGVnaWJsZU1l
ZGlhU2VsZWN0ZWRJbmRleCB7IDAgfTsKICAgICBib29sIG1fZXh0ZXJuYWxQbGF5YmFja0VuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXli
YWNrVGFyZ2V0VHlwZSBtX2V4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHsgV2ViUGxheWJhY2tT
ZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lIH07CkBAIC0xNzgsOCArMTc5LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBi
dWZmZXJlZFRpbWUpOwogICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKTsKICAg
ICB2b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFs
dWUpOwotICAgIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29u
dGV4dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsK
LSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4
dElkLCBWZWN0b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAg
ICB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMo
dWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwogICAgIHZvaWQgc2V0RXh0ZXJuYWxQ
bGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIHVpbnQz
Ml90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKTsKICAgICB2b2lkIHNl
dFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7
CiAgICAgdm9pZCBzZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlv
bik7CkBAIC0yMTAsNSArMjExLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQotCi0jZW5kaWYgLy8gV2ViUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDljZTY5ZjZmNjY1ZGUxZjE0MjdmZmE3NzBmZjJjMjg2ZWYyODFhNzguLmE3ZjE0
YmY0ZDRmMWE0ZWUyMzczYWE0MTc1NTBmNWM3MDFjZDE1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNyw4ICsyNyw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eSB7CiAgICAgU2V0QnVmZmVyZWRUaW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKICAgICBTZXRTZWVrYWJsZVJhbmdlc1ZlY3Rv
cih1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiBy
YW5nZXMpCiAgICAgU2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCB2YWx1ZSkKLSAgICBTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250
ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCi0g
ICAgU2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZl
Y3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCisgICAgU2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2ViQ29y
ZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
CisgICAgU2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQs
IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKICAgICBTZXRFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllcyh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgdWludDMyX3QgdGFyZ2V0VHlwZSwgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpCiAgICAgU2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQo
dWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQogICAgIFNldER1cmF0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkubW0KaW5kZXggYWJjYmZjNTkxNDU5M2UxN2Q3ODQ2MGJlMGIwZDFhMDhlMjQxYzI4Ny4uZmY1
NzAxYmZiNmJhMGQyODA2MDYwNTFhZTg2Mjg1MTkxMjRiNzE1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3RSZXZlcgog
ICAgICAgICBjbGllbnQtPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZl
cnNlKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zLCB1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkKK3Zv
aWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBhdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucywgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpCiB7CiAgICAg
bV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
OwogICAgIG1fYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXggPSBhdWRpb01lZGlhU2VsZWN0ZWRJbmRl
eDsKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4
dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPAogICAgICAgICBj
bGllbnQtPmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChhdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucywgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zLCB1
aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywg
dWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX2xlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMgPSBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOwogICAgIG1f
bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXg7CkBA
IC0zNTksMTIgKzM1OSwxMiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0Q2FuUGxheUZhc3RSZXZlcnNlKHVpbnQ2NF90IGNvbnRleHRJZCwgYgogICAgIGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCkuc2V0Q2FuUGxheUZhc3RSZXZlcnNlKHZhbHVlKTsKIH0KIAotdm9pZCBX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAg
ICBlbnN1cmVNb2RlbChjb250ZXh0SWQpLnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9w
dGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0
SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBlbnN1cmVNb2RlbChjb250
ZXh0SWQpLnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMob3B0aW9ucywgc2VsZWN0ZWRJ
bmRleCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCmluZGV4IDI1NDc5NGFmZmUwODYxMzcxMzY4
NjYzNzhjYjkxMDI4ZjI4ZTVjMjkuLmQ0NTQ3OWFmYTExYzllZjQ2MGQ4YjhmYjdmM2E2YWRiMjRl
NDhhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29j
b2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJfaAotI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyX2gKKyNwcmFnbWEg
b25jZQogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQogCkBAIC04Miw4ICs4MSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByYXRlQ2hhbmdlZChib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBmaW5h
bDsKICAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpUaW1lUmFu
Z2VzJikgZmluYWw7CiAgICAgdm9pZCBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJvb2wgdmFs
dWUpIGZpbmFsOwotICAgIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5h
bDsKLSAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBmaW5hbDsKKyAg
ICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KSBmaW5hbDsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpIGZpbmFsOwogICAgIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoYm9vbCBlbmFibGVkLCBXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGV2aWNlTmFt
ZSkgZmluYWw7CiAgICAgdm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQo
Ym9vbCkgZmluYWw7CiAKQEAgLTEyOCw4ICsxMjcsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBy
YXRlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5
YmFja1JhdGUpOwogICAgIHZvaWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpOwogICAgIHZvaWQgY2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpOwotICAgIHZvaWQg
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwotICAg
IHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCk7CisgICAgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKKyAgICB2b2lkIGxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCk7CiAgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgZW5hYmxlZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiAgICAg
dm9pZCB3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBib29sKTsKIApAQCAtMTU4LDUgKzE1NywzIEBAIHByb3RlY3RlZDoKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpKQotCi0jZW5kaWYgLy8gV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggYjgwNjYyMzhk
YTA3MGE4ZWMxMTI2OTRiZWQ5MDQxYjg5ODY3MWZmYi4uYzc0NDUzNDVjN2MyYjVhNGViYTYyMTVl
ZmUwYzlmOWVmZjI5OTkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMyw4IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIuaCIKLQorI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCiAKICNp
ZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5U
QVRJT05fTU9ERSkpCiAKQEAgLTExNCwxMyArMTEzLDEzIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dDo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIHZhbHVl
KQogICAgICAgICBtX21hbmFnZXItPmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQobV9jb250ZXh0
SWQsIHZhbHVlKTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQogewogICAgIGlmIChtX21hbmFnZXIpCiAgICAgICAgIG1fbWFuYWdlci0+YXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0Ojps
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29u
c3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPmxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKG1fY29udGV4dElkLCBvcHRpb25zLCBzZWxl
Y3RlZEluZGV4KTsKQEAgLTMxNywxMiArMzE2LDEyIEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJv
CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNldENhblBsYXlGYXN0UmV2ZXJzZShjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkp
OwogfQogCi12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9ucyhjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307928</attachid>
            <date>2017-04-23 03:14:04 -0700</date>
            <delta_ts>2017-04-23 04:27:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-171192-20170423031400.patch</filename>
            <type>text/plain</type>
            <size>61042</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzRlYWJiOTJlMjVmNmJh
MTEyMjE2ZDZmNmQwNGEwZTc1MDM3ZGM3NS4uOTY4MDE1ODQ4YzE4OGJlNjgxMzlkZDdiZGNiNzYz
ZmY1MWY3MjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA0LTIzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEx
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODc1MDEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRp
b24gd2FzIGFsd2F5cyBiZWluZyBjcmVhdGVkIHdpdGggdHlwZQorICAgICAgICBBVlRvdWNoQmFy
TWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlUmVndWxhciwgYnV0IHdlIGtub3cgaWYgYSBUZXh0VHJh
Y2sgaXMgcmVhbGx5IHRoZSBsZWdpYmxlCisgICAgICAgIG9mZiBvciBsZWdpYmxlIGF1dG8gdHJh
Y2suIFRoaXMgY2hhbmdlIHBsdW1icyB0aGF0IGluZm9ybWF0aW9uIGludG8KKyAgICAgICAgV2Vi
UGxheWJhY2tDb250cm9sc01hbmFnZXIgc28gdGhhdCBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25P
cHRpb25zIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlCisgICAgICAgIHJpZ2h0IEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUuIAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjptZWRpYVNlbGVj
dGlvbk9wdGlvbkZvclRyYWNrKToKKyAgICAgICAgKiBwYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ6OmF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nl
c3Npb25Nb2RlbENsaWVudDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxN
ZWRpYUVsZW1lbnQubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1lZGlhU2VsZWN0aW9u
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLmg6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tOgor
ICAgICAgICAodG9BVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlKToKKyAgICAgICAg
KG1lZGlhU2VsZWN0aW9uT3B0aW9ucyk6CisgICAgICAgICgtW1dlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndpdGhTZWxlY3RlZEluZGV4Ol0p
OgorICAgICAgICAoLVtXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOndpdGhTZWxlY3RlZEluZGV4Ol0pOgorICAgICAgICAoLVtXZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlciB3ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWNdKToKKyAg
ICAgICAgKC1bV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIgc2V0V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOl0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9XZWJQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpsZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisKIDIwMTctMDQtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gRW5hYmxlIG1lZGlhIHNlbGVjdGlvbiBi
dXR0b24gb24gQVZUb3VjaEJhclNjcnViYmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjhhNzYxZTg3YjYyMzI3
YmZjYWNmZTU5ODUxNzYwOWMyOWFjMWQ3My4uMDllMmRjNzA4ZWVjNTZiYzJjOTJlOGJhZjIxZDQw
Y2UyNWNkZTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA0LTIzICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbbWFjT1NdIEFWVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCB0aGUgY29ycmVjdCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEx
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI5ODc1MDEwPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9u
Pjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQpOgorCiAyMDE3LTA0LTIxICBBbmR5IEVzdGVzICA8YWVzdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEVuYWJsZSBtZWRpYSBzZWxlY3Rpb24gYnV0dG9u
IG9uIEFWVG91Y2hCYXJTY3J1YmJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlhOTA1NWJiM2FkMGQ3ZDYyZmJlNDRmODNmMWI5
OTY4NjA3ZDZkOTMuLmUyN2JjZjM1NTVhYzg4ZTBiOTBmMDBhZjE2YTNkMzdkMDEyNDE1ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQyNzEsNiArNDI3MSw3IEBACiAJCUExNzYzRjQxMUUyMDU4NkUwMDFENThERSAvKiBDRk5l
dHdvcmsuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsg
Ki87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3Rvcnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3Qzgx
MjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUEx
N0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKKwkJQTE3RDI3NUUxRUFDNTc5ODAw
QkYwMUU3IC8qIE1lZGlhU2VsZWN0aW9uT3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTdEMjc1RDFFQUM1Nzk4MDBCRjAxRTcgLyogTWVkaWFT
ZWxlY3Rpb25PcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlBMTgyRDVCNzFCRTcyMjY3MDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUI2MUJF
NzIyNjIwMDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovOyB9OwogCQlBMTg1QjQyOTFFODIx
MUExMDBEQzkxMTggLyogUHJldmlld0xvYWRlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODVCNDI3MUU4MjExQTEwMERDOTExOCAvKiBQcmV2aWV3
TG9hZGVyLm1tICovOyB9OwogCQlBMTg1QjQyQTFFODIxMUExMDBEQzkxMTggLyogUHJldmlld0xv
YWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4
NUI0MjgxRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCAqLzsgfTsKQEAgLTEyNDcx
LDYgKzEyNDcyLDcgQEAKIAkJQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5m
cmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSBT
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVt
ZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYy
QTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExN0QyNzVEMUVBQzU3OTgwMEJGMDFFNyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTgyRDVCNjFCRTcyMjYyMDA4N0E3Q0MgLyogU2V0dGluZ3NDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNldHRpbmdzQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODVCNDI3MUU4MjExQTEwMERD
OTExOCAvKiBQcmV2aWV3TG9hZGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUHJldmlld0xvYWRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTE4NUI0MjgxRTgyMTFBMTAwREM5MTE4IC8qIFByZXZpZXdMb2FkZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJldmlld0xvYWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjM5ODMsNiArMjM5ODUsNyBAQAogCQkJCTdBRTZDOTNBMUJFMEM2MDEwMEUx
OUUwMyAvKiBNYWluVGhyZWFkU2hhcmVkVGltZXIuaCAqLywKIAkJCQlDREYyQjAwMzE4MUYwNTlD
MDBGMkI0MjQgLyogTWVkaWFEZXNjcmlwdGlvbi5oICovLAogCQkJCUNENjQxRUM3MTgxRUQ2MDEw
MEVFNEM0MSAvKiBNZWRpYVNhbXBsZS5oICovLAorCQkJCUExN0QyNzVEMUVBQzU3OTgwMEJGMDFF
NyAvKiBNZWRpYVNlbGVjdGlvbk9wdGlvbi5oICovLAogCQkJCUJDNzcyQzRDMEM0RUIzMDQwMDgz
Mjg1RiAvKiBNSU1FVHlwZVJlZ2lzdHJ5LmNwcCAqLywKIAkJCQlCQzc3MkM0RDBDNEVCMzA0MDA4
MzI4NUYgLyogTUlNRVR5cGVSZWdpc3RyeS5oICovLAogCQkJCUUxNTEzRDUwMTY3N0YwODgwMDE0
OUZDQiAvKiBOb3RJbXBsZW1lbnRlZC5jcHAgKi8sCkBAIC0yODkwNiw2ICsyODkwOSw3IEBACiAJ
CQkJMDY2Qzc3MzEwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9sLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1M0M4Mjk4RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxl
eGlibGVCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCTUwOENDQTRGMTNDRjEwNkIwMDMxNTFGMyAv
KiBSZW5kZXJGbG93VGhyZWFkLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTdEMjc1RTFFQUM1Nzk4
MDBCRjAxRTcgLyogTWVkaWFTZWxlY3Rpb25PcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NzFERUQzMEExNTMwQzcwMEIxMkE2OCAvKiBSZW5kZXJGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEMzA4MEYxMTdDRjdFNzAwQTc5MUY3IC8qIFJlbmRlckZyYW1lQmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURFRDEwQTE1MzBDNzAwQjEyQTY4IC8qIFJlbmRlckZyYW1lU2V0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IGQxYTBmMjA5NjhjNTNiOGY3MDRhYTZlN2M2ZDljMmU3ZTg5NWZlMzYu
LjdmN2FlMThkMmU5MmEzNWU2ODM4OTNhNGFiYmMwOWMwMzYwZDUzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkF1ZGlvVHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiRE9NV3JhcHBlcldv
cmxkLmgiCisjaW5jbHVkZSAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTIx
NCw2ICsyMTUsMTYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmRpc3BsYXlOYW1l
Rm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykgY29uc3QKIHsKICAgICByZXR1cm4gdHJhY2tEaXNw
bGF5TmFtZSh0cmFjayk7CiB9CisKK01lZGlhU2VsZWN0aW9uT3B0aW9uIENhcHRpb25Vc2VyUHJl
ZmVyZW5jZXM6Om1lZGlhU2VsZWN0aW9uT3B0aW9uRm9yVHJhY2soVGV4dFRyYWNrKiB0cmFjaykg
Y29uc3QKK3sKKyAgICBhdXRvIHR5cGUgPSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6UmVn
dWxhcjsKKyAgICBpZiAodHJhY2sgPT0gVGV4dFRyYWNrOjpjYXB0aW9uTWVudU9mZkl0ZW0oKSkK
KyAgICAgICAgdHlwZSA9IE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpMZWdpYmxlT2ZmOwor
ICAgIGVsc2UgaWYgKHRyYWNrID09IFRleHRUcmFjazo6Y2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVt
KCkpCisgICAgICAgIHR5cGUgPSBNZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6TGVnaWJsZUF1
dG87CisgICAgcmV0dXJuIHsgZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjayksIHR5cGUgfTsKK30K
ICAgICAKIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QpCiB7CkBAIC0y
NTIsNiArMjYzLDExIEBAIFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpkaXNwbGF5TmFt
ZUZvclRyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKSBjb25zdAogICAgIHJldHVybiB0cmFja0Rpc3Bs
YXlOYW1lKHRyYWNrKTsKIH0KIAorTWVkaWFTZWxlY3Rpb25PcHRpb24gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlczo6bWVkaWFTZWxlY3Rpb25PcHRpb25Gb3JUcmFjayhBdWRpb1RyYWNrKiB0cmFjaykg
Y29uc3QKK3sKKyAgICByZXR1cm4geyBkaXNwbGF5TmFtZUZvclRyYWNrKHRyYWNrKSwgTWVkaWFT
ZWxlY3Rpb25PcHRpb246OlR5cGU6OlJlZ3VsYXIgfTsKK30KKwogVmVjdG9yPFJlZlB0cjxBdWRp
b1RyYWNrPj4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6c29ydGVkVHJhY2tMaXN0Rm9yTWVudShB
dWRpb1RyYWNrTGlzdCogdHJhY2tMaXN0KQogewogICAgIEFTU0VSVCh0cmFja0xpc3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAppbmRleCA5OWVmNjQ2
Mzc5YzM3Yjg1ODEwOTllNDA4NTk1OWMxMjM0ODRjYWE2Li45NmZlNjYzMTM2NzAzNDk2OGM1Yjk1
MjhlMmE2ZGQzOGRiMDYwNThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRp
b25Vc2VyUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNiAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7
CiBjbGFzcyBQYWdlR3JvdXA7CiBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKIGNsYXNzIFRleHRUcmFj
a0xpc3Q7CitzdHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIENhcHRpb25Vc2Vy
UHJlZmVyZW5jZXMgewogcHVibGljOgpAQCAtODUsOSArODYsMTEgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpY3MoKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikg
Y29uc3Q7CisgICAgTWVkaWFTZWxlY3Rpb25PcHRpb24gbWVkaWFTZWxlY3Rpb25PcHRpb25Gb3JU
cmFjayhUZXh0VHJhY2sqKSBjb25zdDsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrPj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0Kik7CiAKICAgICB2aXJ0
dWFsIFN0cmluZyBkaXNwbGF5TmFtZUZvclRyYWNrKEF1ZGlvVHJhY2sqKSBjb25zdDsKKyAgICBN
ZWRpYVNlbGVjdGlvbk9wdGlvbiBtZWRpYVNlbGVjdGlvbk9wdGlvbkZvclRyYWNrKEF1ZGlvVHJh
Y2sqKSBjb25zdDsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8QXVkaW9UcmFjaz4+IHNvcnRl
ZFRyYWNrTGlzdEZvck1lbnUoQXVkaW9UcmFja0xpc3QqKTsKIAogICAgIHZvaWQgc2V0UHJpbWFy
eUF1ZGlvVHJhY2tMYW5ndWFnZU92ZXJyaWRlKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpIHsgbV9w
cmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUgPSBsYW5ndWFnZTsgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lZGlhU2VsZWN0aW9uT3B0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
ZWMyNjQ5YjNhOGZmMmY4OWY1NjRkYWYzMWUyNTM4OWVmNjc1NGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBNZWRpYVNlbGVj
dGlvbk9wdGlvbiB7CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgUmVndWxhciwKKyAg
ICAgICAgTGVnaWJsZU9mZiwKKyAgICAgICAgTGVnaWJsZUF1dG8sCisgICAgfTsKKworICAgIFN0
cmluZyBkaXNwbGF5TmFtZTsKKyAgICBUeXBlIHR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5
YmFja1Nlc3Npb25Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaAppbmRleCBlMzBmODBjMTIzNGU3MThiNGZhYTVkYzJhNGI5Yzgx
MmU3ZjFiMDU0Li45MDkyNTE5ZWE1MGUzOGZjNzEyNjI5OGViNmYzM2VhYzE3ZmU5NTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25N
b2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1vZGVsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxfaAotI2RlZmluZSBX
ZWJQbGF5YmFja1Nlc3Npb25Nb2RlbF9oCisjcHJhZ21hIG9uY2UKIAogI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
IApAQCAtMzUsOCArMzQsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUaW1lUmFu
Z2VzOwotCiBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDsKK3N0cnVjdCBNZWRp
YVNlbGVjdGlvbk9wdGlvbjsKIAogY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwgewogcHVi
bGljOgpAQCAtNjgsOSArNjcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBwbGF5YmFj
a1JhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGVS
YW5nZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVmVjdG9yPE1lZGlhU2VsZWN0aW9u
T3B0aW9uPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0
dWFsIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4
dGVybmFsUGxheWJhY2tFbmFibGVkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgRXh0ZXJuYWxQ
bGF5YmFja1RhcmdldFR5cGUgZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCA9IDA7
CkBAIC04OCw4ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmF0ZUNoYW5nZWQo
Ym9vbCAvKiBpc1BsYXlpbmcgKi8sIGZsb2F0IC8qIHBsYXliYWNrUmF0ZSAqLykgeyB9CiAgICAg
dmlydHVhbCB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZChjb25zdCBUaW1lUmFuZ2VzJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgLyogb3B0aW9ucyAqLywgdWludDY0X3QgLyogc2VsZWN0ZWRJbmRleCAq
LykgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxl
Y3RlZEluZGV4ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIC8qIG9wdGlv
bnMgKi8sIHVpbnQ2NF90IC8qIHNlbGVjdGVkSW5kZXggKi8pIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiAvKiBvcHRpb25zICovLCB1aW50NjRfdCAvKiBzZWxlY3RlZEluZGV4
ICovKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoYm9vbCAv
KiBlbmFibGVkICovLCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUsIGNvbnN0IFN0cmluZyYgLyogbG9jYWxpemVkRGV2aWNlTmFtZSAqLykgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29s
KSB7IH0KIH07CkBAIC05Nyw1ICs5NiwzIEBAIHB1YmxpYzoKIH0KIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9N
T0RFKSkKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaAppbmRl
eCAxMzUwOTdkOTVkMjhkNmJlNTNiNDgzNTg2YWYyNzk4OTBlYzQxN2NjLi41OGVmNGRlNTc4YTlj
MTYyMGE4YWFlZjNmMDc4YTRlYWJkZGI1NTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9XZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnRf
aAotI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudF9oCisjcHJhZ21h
IG9uY2UKKwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKwogY2xhc3MgQXVkaW9UcmFjazsKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFz
cyBUZXh0VHJhY2s7CkBAIC03Nyw5ICs3OCw5IEBAIHB1YmxpYzoKICAgICBmbG9hdCBwbGF5YmFj
a1JhdGUoKSBjb25zdCBmaW5hbDsKICAgICBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblBsYXlGYXN0UmV2ZXJzZSgpIGNvbnN0IGZpbmFs
OwotICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBj
b25zdCBmaW5hbDsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgYXVkaW9NZWRpYVNl
bGVjdGVkSW5kZXgoKSBjb25zdCBmaW5hbDsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbDsKKyAgICBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5h
bDsKICAgICB1aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IGZpbmFsOwogICAgIEV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29u
c3QgZmluYWw7CkBAIC0xMDIsOSArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgcGxheWJh
Y2tTdGFydGVkVGltZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTGVnaWJsZU9wdGlvbnMoKTsK
IH07Ci0gICAgCi19CiAKLSNlbmRpZgorfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KaW5kZXggZjYzNWFlZDNiOTdmMDEyOWZmOWVhODNkMTRjNzkxYmJl
NzVmOGI3Zi4uMDcyNWFmOWI4MGFkYjM3Y2Q0Y2YzNTkxOGFlYWU0NjdiMzFiZGI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTW9k
ZWxNZWRpYUVsZW1lbnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2Vi
UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNp
bXBvcnQgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
Ik1lZGlhQ29udHJvbHNIb3N0LmgiCisjaW1wb3J0ICJNZWRpYVNlbGVjdGlvbk9wdGlvbi5oIgog
I2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgpAQCAtMzQ4LDIwICszNDksMjAgQEAgYm9vbCBXZWJQbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudDo6Y2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QKICAgICByZXR1cm4gbV9t
ZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+bWluRmFzdFJldmVyc2VSYXRlKCkgPCAwLjAg
OiBmYWxzZTsKIH0KIAotVmVjdG9yPFN0cmluZz4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRp
YUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBh
dWRpb1RyYWNrRGlzcGxheU5hbWVzOworICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4g
YXVkaW9PcHRpb25zOwogCiAgICAgaWYgKCFtX21lZGlhRWxlbWVudCB8fCAhbV9tZWRpYUVsZW1l
bnQtPmRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICByZXR1cm4gYXVkaW9UcmFja0Rpc3BsYXlO
YW1lczsKKyAgICAgICAgcmV0dXJuIGF1ZGlvT3B0aW9uczsKIAogICAgIGF1dG8mIGNhcHRpb25Q
cmVmZXJlbmNlcyA9IG1fbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+Z3JvdXAoKS5j
YXB0aW9uUHJlZmVyZW5jZXMoKTsKIAotICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX2F1ZGlvVHJhY2tzRm9yTWVudS5zaXplKCkpOworICAgIGF1ZGlv
T3B0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fYXVkaW9UcmFja3NGb3JNZW51LnNpemUo
KSk7CiAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrIDogbV9hdWRpb1RyYWNrc0Zvck1lbnUpCi0g
ICAgICAgIGF1ZGlvVHJhY2tEaXNwbGF5TmFtZXMudW5jaGVja2VkQXBwZW5kKGNhcHRpb25QcmVm
ZXJlbmNlcy5kaXNwbGF5TmFtZUZvclRyYWNrKGF1ZGlvVHJhY2suZ2V0KCkpKTsKKyAgICAgICAg
YXVkaW9PcHRpb25zLnVuY2hlY2tlZEFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMubWVkaWFTZWxl
Y3Rpb25PcHRpb25Gb3JUcmFjayhhdWRpb1RyYWNrLmdldCgpKSk7CiAKLSAgICByZXR1cm4gYXVk
aW9UcmFja0Rpc3BsYXlOYW1lczsKKyAgICByZXR1cm4gYXVkaW9PcHRpb25zOwogfQogCiB1aW50
NjRfdCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YXVkaW9NZWRpYVNlbGVj
dGVkSW5kZXgoKSBjb25zdApAQCAtMzczLDE5ICszNzQsMTkgQEAgdWludDY0X3QgV2ViUGxheWJh
Y2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCkgY29u
c3QKICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOwogfQog
Ci1WZWN0b3I8V1RGOjpTdHJpbmc+IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxNZWRpYVNlbGVj
dGlvbk9wdGlvbj4gV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdAogewotICAgIFZlY3RvcjxTdHJpbmc+IHRyYWNr
RGlzcGxheU5hbWVzOworICAgIFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gbGVnaWJsZU9w
dGlvbnM7CiAKICAgICBpZiAoIW1fbWVkaWFFbGVtZW50IHx8ICFtX21lZGlhRWxlbWVudC0+ZG9j
dW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lczsKKyAgICAg
ICAgcmV0dXJuIGxlZ2libGVPcHRpb25zOwogCiAgICAgYXV0byYgY2FwdGlvblByZWZlcmVuY2Vz
ID0gbV9tZWRpYUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVm
ZXJlbmNlcygpOwogCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fbGVnaWJsZVRyYWNrc0Zvck1l
bnUpCi0gICAgICAgIHRyYWNrRGlzcGxheU5hbWVzLmFwcGVuZChjYXB0aW9uUHJlZmVyZW5jZXMu
ZGlzcGxheU5hbWVGb3JUcmFjayh0cmFjay5nZXQoKSkpOworICAgICAgICBsZWdpYmxlT3B0aW9u
cy5hcHBlbmQoY2FwdGlvblByZWZlcmVuY2VzLm1lZGlhU2VsZWN0aW9uT3B0aW9uRm9yVHJhY2so
dHJhY2suZ2V0KCkpKTsKIAotICAgIHJldHVybiB0cmFja0Rpc3BsYXlOYW1lczsKKyAgICByZXR1
cm4gbGVnaWJsZU9wdGlvbnM7CiB9CiAKIHVpbnQ2NF90IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
TWVkaWFFbGVtZW50OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0LmgKaW5kZXggMjNkNzcyZGQxMWI4MTJmZjAwZDg5MDYwYzI4ODk0NDAw
NTkyNzUwYS4uZTE1YTY3ZGFkNzFjNWYxYjI1MGI4ODk5NGZjYWY4NjEwNmVkYzk2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTc4LDggKzc4LDggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrUmF0ZSkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVrYWJsZVJhbmdl
c0NoYW5nZWQoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sKSBvdmVycmlkZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJv
b2wgZW5hYmxlZCwgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJn
ZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNzFi
OWI5YjdiYzU0YjZhYjc1NTdhZmI2MjU2NWI5ZGRjNGNmZTdkNS4uM2NjNGQ3NzI5ZmFhOTAxZDIy
NzYyYmM0NzI3ZGJlOGZkZjViMWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQpA
QCAtMzIsNiArMzIsNyBAQAogCiAjaW1wb3J0ICJBVktpdFNQSS5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgorI2ltcG9ydCAiTWVkaWFTZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKICNpbXBvcnQgIldlYkFWUGxheWVyQ29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViUGxh
eWJhY2tTZXNzaW9uTW9kZWwuaCIKQEAgLTE3MSwxOCArMTcyLDE4IEBAIHZvaWQgV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCBj
YW5QbGF5RmFzCiAgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRDYW5TY2FuQmFja3dhcmQ6Y2Fu
UGxheUZhc3RSZXZlcnNlXTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
bWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zKQorc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMpCiB7CiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7Ci0gICAgZm9yIChhdXRvJiBu
YW1lIDogb3B0aW9ucykgeworICAgIGZvciAoYXV0byYgb3B0aW9uIDogb3B0aW9ucykgewogICAg
ICAgICBSZXRhaW5QdHI8V2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2ViT3B0aW9uID0gYWRv
cHROUyhbW1dlYkFWTWVkaWFTZWxlY3Rpb25PcHRpb24gYWxsb2NdIGluaXRdKTsKLSAgICAgICAg
W3dlYk9wdGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpuYW1lXTsKKyAgICAgICAgW3dlYk9w
dGlvbiBzZXRMb2NhbGl6ZWREaXNwbGF5TmFtZTpvcHRpb24uZGlzcGxheU5hbWVdOwogICAgICAg
ICBbd2ViT3B0aW9ucyBhZGRPYmplY3Q6d2ViT3B0aW9uLmdldCgpXTsKICAgICB9CiAgICAgcmV0
dXJuIHdlYk9wdGlvbnM7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZL
aXQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25z
dCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IG1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zKTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNl
dEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOndlYk9wdGlvbnMuZ2V0KCldOwpAQCAtMTkwLDcg
KzE5MSw3IEBAIHZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWCiAgICAgICAgIFttX3BsYXllckNvbnRy
b2xsZXIgc2V0Q3VycmVudEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb246W3dlYk9wdGlvbnMgb2Jq
ZWN0QXRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV1dOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0
X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRp
b25zKG9wdGlvbnMpOwogICAgIFttX3BsYXllckNvbnRyb2xsZXIgc2V0TGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uczp3ZWJPcHRpb25zLmdldCgpXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFW
S2l0Lm1tCmluZGV4IGMwMDRiYjY0M2FhNzM1OTIwZDYyYTk2NzMxYmIxOWU5NTU4NmYxNDMuLjE5
NGJiOWE4MzBkYzUwZGRmNDJmOWEwZjVkYTNlZDU1YTgwZDVmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0LmgiCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQg
Ik1lZGlhU2VsZWN0aW9uT3B0aW9uLmgiCiAjaW1wb3J0ICJRdWFydHpDb3JlU1BJLmgiCiAjaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiVGltZVJhbmdlcy5oIgpAQCAtMTU1LDkgKzE1
Niw5IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlUmFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICBWZWN0b3I8
U3RyaW5nPiBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KSBjb25zdCBvdmVycmlkZTsKICAgICB1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIFZlY3RvcjxTdHJpbmc+IGxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRp
b24+IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKICAgICB1
aW50NjRfdCBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIEV4dGVy
bmFsUGxheWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNzEsOCArMTcyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJhdGVDaGFu
Z2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4m
IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOwotICAgIHZvaWQgbGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZv
aWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlh
U2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sIGVuYWJsZWQsIFdlYlBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIHdpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sKSBvdmVycmlkZTsKIApAQCAtMzc0LDExICsz
NzUsMjAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6Y2FuUGxh
eUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIGNhblBsYXkKICAgICAgICAgY2xpZW50LT5jYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAKLXZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKK3N0YXRpYyBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IGlzb2xhdGVkQ29weShj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zKQoreworICAgIFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9uc0NvcHk7CisgICAgb3B0aW9uc0NvcHkucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShvcHRpb25zLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBvcHRp
b24gOiBvcHRpb25zKQorICAgICAgICBvcHRpb25zQ29weS51bmNoZWNrZWRBcHBlbmQoeyBvcHRp
b24uZGlzcGxheU5hbWUuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbi50eXBlIH0pOworICAgIHJldHVy
biBvcHRpb25zQ29weTsKK30KKwordm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAg
ICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMs
IG9wdGlvbnMgPSBvcHRpb25zLCBzZWxlY3RlZEluZGV4XSB7CisgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCBvcHRpb25zID0g
aXNvbGF0ZWRDb3B5KG9wdGlvbnMpLCBzZWxlY3RlZEluZGV4XSB7CiAgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC0zODgsMTEgKzM5
OCwxMSBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29ucwogICAgICAgICBjbGllbnQtPmF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChvcHRpb25zLCBzZWxlY3RlZEluZGV4KTsKIH0KIAot
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6bGVnaWJsZU1lZGlhU2Vs
ZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewog
ICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkgewogICAgICAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlz
LCBvcHRpb25zID0gb3B0aW9ucywgc2VsZWN0ZWRJbmRleF0geworICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgb3B0aW9ucyA9
IGlzb2xhdGVkQ29weShvcHRpb25zKSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQob3B0aW9ucywg
c2VsZWN0ZWRJbmRleCk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CkBAIC02OTEsMTAg
KzcwMSwxMiBAQCBib29sIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpjYW5Q
bGF5RmFzdFJldmVyc2UoKSBjb25zdAogICAgIHJldHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3Bs
YXliYWNrTW9kZWwtPmNhblBsYXlGYXN0UmV2ZXJzZSgpIDogZmFsc2U7CiB9CiAKLVZlY3RvcjxT
dHJpbmc+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2Vs
ZWN0aW9uT3B0aW9ucygpIGNvbnN0CitWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9u
cygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgcmV0dXJuIG1fcGxh
eWJhY2tNb2RlbCA/IG1fcGxheWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMo
KSA6IFZlY3RvcjxTdHJpbmc+KCk7CisgICAgaWYgKG1fcGxheWJhY2tNb2RlbCkKKyAgICAgICAg
cmV0dXJuIG1fcGxheWJhY2tNb2RlbC0+YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsKKyAg
ICByZXR1cm4geyB9OwogfQogCiB1aW50NjRfdCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSBjb25zdApAQCAtNzAzLDEwICs3MTUs
MTIgQEAgdWludDY0X3QgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmF1ZGlv
TWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QKICAgICByZXR1cm4gbV9wbGF5YmFja01vZGVsID8g
bV9wbGF5YmFja01vZGVsLT5hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpIDogLTE7CiB9CiAKLVZl
Y3RvcjxTdHJpbmc+IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3QKK1ZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlv
bj4gV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoKSBjb25zdAogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIHJl
dHVybiBtX3BsYXliYWNrTW9kZWwgPyBtX3BsYXliYWNrTW9kZWwtPmxlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoKSA6IFZlY3RvcjxTdHJpbmc+KCk7CisgICAgaWYgKG1fcGxheWJhY2tNb2Rl
bCkKKyAgICAgICAgcmV0dXJuIG1fcGxheWJhY2tNb2RlbC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9ucygpOworICAgIHJldHVybiB7IH07CiB9CiAKIHVpbnQ2NF90IFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyLmgKaW5kZXggOTUyNjYyZjZiZDJiNDJiOGRkNzhlODQ2NTQ5YzZmMjY4NDg3
NjNkMi4uNzY5NmQxOWRhN2YyZThiM2EwZTYxN2ZjNzUyNWVlNjM3MWU3NDU0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsOSArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXJfaAotI2RlZmluZSBX
ZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcl9oCi0KICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKIAogI2ltcG9ydCA8V2ViQ29yZS9BVktpdFNQSS5o
PgpAQCAtMzQsNiArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM7CitzdHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiB9
CiAKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCkBAIC03MywxMiAr
NzEsMTAgQEAgV0VCQ09SRV9FWFBPUlQKIC0gKHZvaWQpc2V0Q3VycmVudEF1ZGlvVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbjooQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopb3B0
aW9uOwogLSAoQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uICopY3VycmVudExlZ2libGVU
b3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uOwogLSAodm9pZClzZXRDdXJyZW50TGVnaWJsZVRv
dWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb246KEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlv
biAqKW9wdGlvbjsKLS0gKHZvaWQpc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0
IFZlY3RvcjxXVEY6OlN0cmluZz4mKW9wdGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVn
ZXIpc2VsZWN0ZWRJbmRleDsKLS0gKHZvaWQpc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
czooY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDoo
TlNVSW50ZWdlcilzZWxlY3RlZEluZGV4OworLSAodm9pZClzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uczooY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiYpb3B0
aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3RlZEluZGV4OworLSAodm9p
ZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOihjb25zdCBWZWN0b3I8V2ViQ29yZTo6
TWVkaWFTZWxlY3Rpb25PcHRpb24+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4OihOU1VJbnRl
Z2VyKXNlbGVjdGVkSW5kZXg7CiBAZW5kCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1BMQVlCQUNL
X0NPTlRST0xTX01BTkFHRVIpCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShW
SURFT19QUkVTRU5UQVRJT05fTU9ERSkKLQotI2VuZGlmIC8vIFdlYlBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XZWJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCA3ZDI0YzExMTVmMDkxYTY1ZWIyYTM5YTk0
NzI5Njk2M2M2NDZiODI3Li40ZDczNDc2ZWRlNTMxYzU5MDY2Mjg5OTRjMjA3OWY5MGNkOTZlMjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJhY2tDb250
cm9sc01hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNiArMjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NP
TlRST0xTX01BTkFHRVIpCiAKKyNpbXBvcnQgIk1lZGlhU2VsZWN0aW9uT3B0aW9uLmgiCiAjaW1w
b3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjLmgiCiAjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XbnVsbGFiaWxpdHktY29tcGxldGVuZXNzIgogU09GVF9MSU5LX0ZSQU1FV09SSyhBVktpdCkK
QEAgLTIxOCwyMSArMjIxLDM3IEBAIC0gKHZvaWQpc2V0Q3VycmVudExlZ2libGVUb3VjaEJhck1l
ZGlhU2VsZWN0aW9uT3B0aW9uOihBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PCiAgICAgX3dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+d2ViUGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2Vs
ZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2
NF9NQVgpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBtZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMpCisjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKK3N0YXRpYyBBVlRvdWNoQmFyTWVkaWFT
ZWxlY3Rpb25PcHRpb25UeXBlIHRvQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZShN
ZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgTWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU6OlJlZ3VsYXI6CisgICAgICAgIHJl
dHVybiBBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlUmVndWxhcjsKKyAgICBjYXNl
IE1lZGlhU2VsZWN0aW9uT3B0aW9uOjpUeXBlOjpMZWdpYmxlT2ZmOgorICAgICAgICByZXR1cm4g
QVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uVHlwZUxlZ2libGVPZmY7CisgICAgY2FzZSBN
ZWRpYVNlbGVjdGlvbk9wdGlvbjo6VHlwZTo6TGVnaWJsZUF1dG86CisgICAgICAgIHJldHVybiBB
VlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25UeXBlTGVnaWJsZUF1dG87CisgICAgfQorCisg
ICAgcmV0dXJuIEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGVSZWd1bGFyOworfQor
I2VuZGlmCisKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zKQogewog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gd2ViT3B0aW9ucyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwotICAg
IGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpIHsKKyAgICBmb3IgKGF1dG8mIG9wdGlvbiA6IG9w
dGlvbnMpIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMAot
ICAgICAgICBpZiAoUmV0YWluUHRyPEFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbj4gd2Vi
T3B0aW9uID0gYWRvcHROUyhbYWxsb2NBVlRvdWNoQmFyTWVkaWFTZWxlY3Rpb25PcHRpb25JbnN0
YW5jZSgpIGluaXRXaXRoVGl0bGU6bmFtZSB0eXBlOkFWVG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9w
dGlvblR5cGVSZWd1bGFyXSkpCisgICAgICAgIGlmIChhdXRvIHdlYk9wdGlvbiA9IGFkb3B0TlMo
W2FsbG9jQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0aFRp
dGxlOm9wdGlvbi5kaXNwbGF5TmFtZSB0eXBlOnRvQVZUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0
aW9uVHlwZShvcHRpb24udHlwZSldKSkKICNlbHNlCi0gICAgICAgIGlmIChSZXRhaW5QdHI8QVZU
b3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9uPiB3ZWJPcHRpb24gPSBhZG9wdE5TKFthbGxvY0FW
RnVuY3Rpb25CYXJNZWRpYVNlbGVjdGlvbk9wdGlvbkluc3RhbmNlKCkgaW5pdFdpdGhUaXRsZTpu
YW1lXSkpCisgICAgICAgIGlmIChhdXRvIHdlYk9wdGlvbiA9IGFkb3B0TlMoW2FsbG9jQVZGdW5j
dGlvbkJhck1lZGlhU2VsZWN0aW9uT3B0aW9uSW5zdGFuY2UoKSBpbml0V2l0aFRpdGxlOm9wdGlv
bi5kaXNwbGF5TmFtZV0pKQogI2VuZGlmIC8vIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlS
RUQgPj0gMTAxMzAwCiAgICAgICAgICAgICBbd2ViT3B0aW9ucyBhZGRPYmplY3Q6d2ViT3B0aW9u
LmdldCgpXTsKICAgICB9CiAgICAgcmV0dXJuIHdlYk9wdGlvbnM7CiB9CiAKLS0gKHZvaWQpc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6KGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mKW9w
dGlvbnMgd2l0aFNlbGVjdGVkSW5kZXg6KE5TVUludGVnZXIpc2VsZWN0ZWRJbmRleAorLSAodm9p
ZClzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0
aW9uT3B0aW9uPiYpb3B0aW9ucyB3aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3Rl
ZEluZGV4CiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVk
aWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMpOwogICAgIFtzZWxmIHNldEF1ZGlvVG91Y2hCYXJN
ZWRpYVNlbGVjdGlvbk9wdGlvbnM6d2ViT3B0aW9ucy5nZXQoKV07CkBAIC0yNDAsNyArMjU5LDcg
QEAgLSAodm9pZClzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPFdU
Rjo6U3RyaW5nPiYpb3B0aW9ucyB3aXRoU2UKICAgICAgICAgW3NlbGYgc2V0Q3VycmVudEF1ZGlv
VG91Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnNl
bGVjdGVkSW5kZXhdXTsKIH0KIAotLSAodm9pZClzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOihjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JilvcHRpb25zIHdpdGhTZWxlY3RlZEluZGV4
OihOU1VJbnRlZ2VyKXNlbGVjdGVkSW5kZXgKKy0gKHZvaWQpc2V0TGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYpb3B0aW9ucyB3
aXRoU2VsZWN0ZWRJbmRleDooTlNVSW50ZWdlcilzZWxlY3RlZEluZGV4CiB7CiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiB3ZWJPcHRpb25zID0gbWVkaWFTZWxlY3Rpb25PcHRpb25zKG9w
dGlvbnMpOwogICAgIFtzZWxmIHNldExlZ2libGVUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9u
czp3ZWJPcHRpb25zLmdldCgpXTsKQEAgLTI0OCwxMiArMjY3LDEyIEBAIC0gKHZvaWQpc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczooY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYpb3B0
aW9ucyB3aXRoCiAgICAgICAgIFtzZWxmIHNldEN1cnJlbnRMZWdpYmxlVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbjpbd2ViT3B0aW9ucyBvYmplY3RBdEluZGV4OnNlbGVjdGVkSW5kZXhdXTsK
IH0KIAotLSAoV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKil3ZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMKKy0gKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yyopd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjCiB7CiAgICAgcmV0dXJuIF93ZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuZ2V0KCk7CiB9CiAKLS0gKHZvaWQpc2V0V2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjOihXZWJDb3JlOjpXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMqKXdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYworLSAodm9pZClzZXRXZWJQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6KFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyop
d2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjCiB7CiAgICAgaWYgKF93ZWJQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMgPT0gd2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2Vi
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLmgKaW5kZXggMmM3NGQyYTcyNDliYTEw
YWUyYjQ1YThjMTA3MDg4MWQxMWFiNjY5My4uNWIwYTlkYzY2OGQxM2ZiMTJlNTk0MmM0ZmY4NzQ4
YjU2N2FjYjZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dlYlBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VNYWNfaAotI2RlZmluZSBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWNfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURF
T19QUkVTRU5UQVRJT05fTU9ERSkKIApAQCAtNTgsOCArNTcsOCBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjdXJyZW50VGltZUNoYW5nZWQoZG91YmxlIC8qY3VycmVudFRpbWUq
LywgZG91YmxlIC8qYW5jaG9yVGltZSovKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJhdGVDaGFuZ2VkKGJvb2wgLyppc1BsYXlpbmcqLywgZmxvYXQgLypwbGF5YmFja1JhdGUqLykg
ZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29u
c3QgVGltZVJhbmdlcyYpIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKm9wdGlvbnMq
LywgdWludDY0X3QgLypzZWxlY3RlZEluZGV4Ki8pIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgLypvcHRpb25zKi8sIHVpbnQ2NF90
IC8qc2VsZWN0ZWRJbmRleCovKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4mIC8qb3B0aW9ucyovLCB1aW50NjRfdCAvKnNlbGVjdGVkSW5kZXgqLykgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBlbnN1cmVDb250cm9sc01hbmFnZXIoKTsKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNL
X0NPTlRST0xTX01BTkFHRVIpCkBAIC04Myw1ICs4MiwzIEBAIHByaXZhdGU6CiB9CiAKICNlbmRp
ZiAvLyBQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dl
YlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQppbmRleCAyOGFkYzRmYTc4NTI1ZTQzZmQz
ZGRlMmJhZDU2MTc2Y2U5MTczNWI1Li41NzE5NzY3MjJhMzIxYWJhZWI3YzEyNWI4MzRiYzI2ZGFi
MDhhOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2ViUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTMgKzIzLDE0IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5oIgorI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMuaCIKIAog
I2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogCiAj
aW1wb3J0ICJBVktpdFNQSS5oIgogI2ltcG9ydCAiSW50UmVjdC5oIgorI2ltcG9ydCAiTWVkaWFT
ZWxlY3Rpb25PcHRpb24uaCIKICNpbXBvcnQgIk1lZGlhVGltZUFWRm91bmRhdGlvbi5oIgogI2lt
cG9ydCAiVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIu
aCIKQEAgLTEzOCw3ICsxMzksNyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yzo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKGNvbnN0IFRpbWVSYW5nZXMmIHRpbQogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1lZGlhU2Vs
ZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICNpZiBF
TkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCiAgICAgW3BsYXlCYWNrQ29udHJv
bHNNYW5hZ2VyKCkgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6b3B0aW9ucyB3aXRoU2Vs
ZWN0ZWRJbmRleDpzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzZWxlY3RlZEluZGV4KV07CkBAIC0x
NDgsNyArMTQ5LDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWMKICNlbmRpZgogfQogCi12b2lk
IFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rp
b25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogI2lmIEVOQUJM
RShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFOQUdFUikKICAgICBbcGxheUJhY2tDb250cm9sc01h
bmFnZXIoKSBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOm9wdGlvbnMgd2l0aFNlbGVj
dGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc2VsZWN0ZWRJbmRleCldOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA1OGFh
ZWMzMWZlM2M1YzQzODA5MjZmOThjYTNmMzRlNjhkZjYwNzViLi4zNTA1MjNiMTA1OTc1OGUzYmE3
NjFhZTc3ODk4NGVmYWRiZDA1ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlh
U2VsZWN0aW9uT3B0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXRoLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2Uu
aD4KQEAgLTI0NzgsNCArMjQ3OSwyMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsT2Zmc2V0
UmFuZ2U8ZmxvYXQ+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNjcm9sbE9mZgogCiAjZW5k
aWYKIAordm9pZCBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IE1lZGlhU2VsZWN0aW9uT3B0aW9uJiBvcHRpb24pCit7Cisg
ICAgZW5jb2RlciA8PCBvcHRpb24uZGlzcGxheU5hbWU7CisgICAgZW5jb2RlciA8PCBvcHRpb24u
dHlwZTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIE1lZGlhU2VsZWN0aW9uT3B0aW9uJiBvcHRpb24pCit7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcHRpb24uZGlzcGxheU5hbWUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9wdGlvbi50eXBlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IElQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmlu
ZGV4IDRhNjM2OWJhMjlmNmRhYTUxZmVjOGQ1NjM1ZmMxNGVjNTdjOTEwODUuLmQ5ZWRhYzVkMTU4
N2I1MWRmNTg2NjNhMjQyMDIwNGVmNjMwYmQ3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWVMb2FkZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5kZXhlZERCLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYVNlbGVjdGlvbk9wdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya0xvYWRNZXRyaWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+CkBAIC02NTIsNiArNjUz
LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2Nyb2xsT2Zm
c2V0UmFuZ2U8ZmxvYXQ+PiB7CiAKICNlbmRpZgogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbiYpOwor
ICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25P
cHRpb24mKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTcxMiw0ICs3MTgsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpD
YXB0dXJlRGV2aWNlOjpEZXZpY2VUeXBlPiB7CiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb246OlR5cGU+IHsKKyAg
ICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpNZWRpYVNlbGVj
dGlvbk9wdGlvbjo6VHlwZSwKKyAgICAgICAgV2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb246
OlR5cGU6OlJlZ3VsYXIsCisgICAgICAgIFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uOjpU
eXBlOjpMZWdpYmxlT2ZmLAorICAgICAgICBXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbjo6
VHlwZTo6TGVnaWJsZUF1dG8KKyAgICA+OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5LmgKaW5kZXggN2JlOGVkNzJmN2Q0Nzg0Y2Y5ODVmZjNlYWRj
NTRhMjg4OWIzZTU2OC4uOGYyMTM1YTMwYjE3MjRiYjhlZTZjNjM4NzgwNTc1OTE3OGQzNWU5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMiArMjMsMTMgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eV9oCi0jZGVmaW5lIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eV9oCisjcHJhZ21hIG9uY2UKKwogI2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykg
JiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkKIAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWVkaWFTZWxlY3Rpb25PcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRm
b3JtVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2ViUGxheWJhY2tTZXNzaW9uTW9kZWwuaD4KQEAgLTc2LDggKzc3LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsK
ICAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzKFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKICAgICB2
b2lkIHNldENhblBsYXlGYXN0UmV2ZXJzZShib29sKTsKLSAgICB2b2lkIHNldEF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IGluZGV4KTsKLSAgICB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3QgaW5kZXgpOworICAgIHZv
aWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3QgaW5kZXgpOworICAgIHZvaWQg
c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6TWVk
aWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBpbmRleCk7CiAgICAgdm9pZCBz
ZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wsIFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5h
bFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRXaXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKTsKIApAQCAtMTEzLDkgKzExNCw5IEBAIHByaXZh
dGU6CiAgICAgZmxvYXQgcGxheWJhY2tSYXRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wbGF5
YmFja1JhdGU7IH0KICAgICBSZWY8V2ViQ29yZTo6VGltZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NlZWthYmxlUmFuZ2VzLmNvcHlSZWYoKTsgfQogICAg
IGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jYW5QbGF5
RmFzdFJldmVyc2U7IH0KLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IGF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uczsgfQorICAgIFZlY3RvcjxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gYXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zOyB9CiAgICAgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2F1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OyB9Ci0gICAg
VmVjdG9yPFdURjo6U3RyaW5nPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zOyB9CisgICAgVmVj
dG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBsZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zOyB9CiAgICAgdWludDY0X3QgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleDsgfQogICAgIGJvb2wgZXh0
ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2V4dGVybmFsUGxh
eWJhY2tFbmFibGVkOyB9CiAgICAgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlIGV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9leHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZTsgfQpAQCAtMTM1LDkgKzEzNiw5
IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9wbGF5YmFja1JhdGUgeyAwIH07CiAgICAgUmVmPFdl
YkNvcmU6OlRpbWVSYW5nZXM+IG1fc2Vla2FibGVSYW5nZXMgeyBXZWJDb3JlOjpUaW1lUmFuZ2Vz
OjpjcmVhdGUoKSB9OwogICAgIGJvb2wgbV9jYW5QbGF5RmFzdFJldmVyc2UgeyBmYWxzZSB9Owot
ICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKKyAg
ICBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnM7CiAgICAgdWludDY0X3QgbV9hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCB7IDAg
fTsKLSAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG1fbGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uczsKICAgICB1aW50NjRfdCBtX2xlZ2libGVNZWRpYVNlbGVjdGVk
SW5kZXggeyAwIH07CiAgICAgYm9vbCBtX2V4dGVybmFsUGxheWJhY2tFbmFibGVkIHsgZmFsc2Ug
fTsKICAgICBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5
cGUgbV9leHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB7IFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpUYXJnZXRUeXBlTm9uZSB9OwpAQCAtMTc4LDggKzE3OSw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRCdWZmZXJlZFRpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1l
KTsKICAgICB2b2lkIHNldFNlZWthYmxlUmFuZ2VzVmVjdG9yKHVpbnQ2NF90IGNvbnRleHRJZCwg
VmVjdG9yPHN0ZDo6cGFpcjxkb3VibGUsIGRvdWJsZT4+IHJhbmdlcyk7CiAgICAgdm9pZCBzZXRD
YW5QbGF5RmFzdFJldmVyc2UodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2
b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVj
dG9yPFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7Ci0gICAgdm9pZCBz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9y
PFN0cmluZz4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBzZXRB
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRfdCBjb250ZXh0SWQsIFZlY3RvcjxXZWJD
b3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCk7CisgICAgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKHVpbnQ2NF90IGNv
bnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKICAgICB2b2lkIHNldEV4dGVybmFsUGxheWJhY2tQcm9w
ZXJ0aWVzKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCB1aW50MzJfdCB0YXJnZXRU
eXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSk7CiAgICAgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wpOwogICAgIHZvaWQg
c2V0RHVyYXRpb24odWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pOwpAQCAtMjEw
LDUgKzIxMSwzIEBAIHByaXZhdGU6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKLQotI2VuZGlmIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
Y2U2OWY2ZjY2NWRlMWYxNDI3ZmZhNzcwZmYyYzI4NmVmMjgxYTc4Li5hN2YxNGJmNGQ0ZjFhNGVl
MjM3M2FhNDE3NTUwZjVjNzAxY2QxNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNi0y
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsOCArMjcsOCBAQCBtZXNzYWdlcyAtPiBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkgewogICAgIFNldEJ1ZmZlcmVkVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBidWZmZXJlZFRpbWUpCiAgICAgU2V0U2Vla2FibGVSYW5nZXNWZWN0b3IodWludDY0X3Qg
Y29udGV4dElkLCBWZWN0b3I8c3RkOjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gcmFuZ2VzKQogICAg
IFNldENhblBsYXlGYXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCi0g
ICAgU2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0
b3I8U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQotICAgIFNldExlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8U3RyaW5n
PiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQorICAgIFNldEF1ZGlvTWVkaWFTZWxl
Y3Rpb25PcHRpb25zKHVpbnQ2NF90IGNvbnRleHRJZCwgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2Vs
ZWN0aW9uT3B0aW9uPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQorICAgIFNldExl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8V2Vi
Q29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCiAgICAgU2V0RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXModWludDY0X3QgY29udGV4dElk
LCBib29sIGVuYWJsZWQsIHVpbnQzMl90IHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKQogICAgIFNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKICAgICBTZXREdXJhdGlvbih1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBkdXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4
IGFiY2JmYzU5MTQ1OTNlMTdkNzg0NjBiZTBiMGQxYTA4ZTI0MWMyODcuLmZmNTcwMWJmYjZiYTBk
MjgwNjA2MDUxYWU4NjI4NTE5MTI0YjcxNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6
OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXIKICAgICAgICAgY2xp
ZW50LT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7CiB9CiAK
LXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBhdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucywgdWludDY0X3QgYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXli
YWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29u
c3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMsIHVpbnQ2NF90IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KQogewogICAgIG1fYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMgPSBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uczsKICAgICBtX2F1
ZGlvTWVkaWFTZWxlY3RlZEluZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXg7CkBAIC0xOTAs
NyArMTkwLDcgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnNldEF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjwKICAgICAgICAgY2xpZW50LT5hdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMs
IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9y
PFdURjo6U3RyaW5nPiYgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgdWludDY0X3QgbGVn
aWJsZU1lZGlhU2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxNZWRpYVNl
bGVjdGlvbk9wdGlvbj4mIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIHVpbnQ2NF90IGxl
Z2libGVNZWRpYVNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9sZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczsKICAgICBtX2xlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXggPSBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4OwpAQCAtMzU5LDEyICsz
NTksMTIgQEAgdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldENhblBsYXlG
YXN0UmV2ZXJzZSh1aW50NjRfdCBjb250ZXh0SWQsIGIKICAgICBlbnN1cmVNb2RlbChjb250ZXh0
SWQpLnNldENhblBsYXlGYXN0UmV2ZXJzZSh2YWx1ZSk7CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyh1aW50NjRf
dCBjb250ZXh0SWQsIFZlY3RvcjxTdHJpbmc+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0QXVkaW9NZWRpYVNl
bGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25P
cHRpb24+IG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgZW5zdXJlTW9k
ZWwoY29udGV4dElkKS5zZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhvcHRpb25zLCBzZWxl
Y3RlZEluZGV4KTsKIH0KIAotdm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWludDY0X3QgY29udGV4dElkLCBWZWN0b3I8
U3RyaW5nPiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnModWlu
dDY0X3QgY29udGV4dElkLCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+IG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgZW5zdXJlTW9kZWwoY29udGV4dElkKS5zZXRM
ZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaAppbmRleCAyNTQ3OTRhZmZlMDg2MTM3MTM2ODY2Mzc4Y2I5MTAy
OGYyOGU1YzI5Li5kNDU0NzlhZmExMWM5ZWY0NjBkOGI4ZmI3ZjNhNmFkYjI0ZTQ4YThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyX2gK
LSNkZWZpbmUgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2lm
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRB
VElPTl9NT0RFKSkKIApAQCAtODIsOCArODEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmF0ZUNo
YW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgZmluYWw7CiAgICAgdm9p
ZCBzZWVrYWJsZVJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIGZpbmFs
OwogICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChib29sIHZhbHVlKSBmaW5hbDsK
LSAgICB2b2lkIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7Ci0gICAgdm9p
ZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7CisgICAgdm9pZCBhdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlh
U2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgZmluYWw7
CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KSBmaW5hbDsKICAgICB2b2lkIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGJvb2wg
ZW5hYmxlZCwgV2ViQ29yZTo6V2ViUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJh
Y2tUYXJnZXRUeXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERldmljZU5hbWUpIGZpbmFsOwog
ICAgIHZvaWQgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKGJvb2wpIGZpbmFs
OwogCkBAIC0xMjgsOCArMTI3LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcmF0ZUNoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKTsK
ICAgICB2b2lkIHNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFdlYkNvcmU6OlRpbWVSYW5nZXMmKTsKICAgICB2b2lkIGNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKTsKLSAgICB2b2lkIGF1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIGxlZ2li
bGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOworICAgIHZv
aWQgYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6Ok1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9pZCBsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpNZWRp
YVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpOwogICAg
IHZvaWQgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVu
YWJsZWQsIFdlYkNvcmU6OldlYlBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpOwogICAgIHZvaWQgd2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCk7
CiAKQEAgLTE1OCw1ICsxNTcsMyBAQCBwcm90ZWN0ZWQ6CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJ
REVPX1BSRVNFTlRBVElPTl9NT0RFKSkKLQotI2VuZGlmIC8vIFdlYlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGI4MDY2MjM4ZGEwNzBhOGVjMTEy
Njk0YmVkOTA0MWI4OTg2NzFmZmIuLmM3NDQ1MzQ1YzdjMmI1YTRlYmE2MjE1ZWZlMGM5ZjllZmYy
OTk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsOCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgiCi0KKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oIgogCiAjaWYgUExBVEZPUk0o
SU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUp
KQogCkBAIC0xMTQsMTMgKzExMywxMyBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUNvbnRleHQ6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoYm9vbCB2YWx1ZSkKICAgICAgICAg
bV9tYW5hZ2VyLT5jYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKG1fY29udGV4dElkLCB2YWx1ZSk7
CiB9CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6YXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VD
b250ZXh0OjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPE1l
ZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsK
ICAgICBpZiAobV9tYW5hZ2VyKQogICAgICAgICBtX21hbmFnZXItPmF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7CiB9
CiAKLXZvaWQgV2ViUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6bGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNv
bnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxN
ZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7
CiAgICAgaWYgKG1fbWFuYWdlcikKICAgICAgICAgbV9tYW5hZ2VyLT5sZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChtX2NvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCk7
CkBAIC0zMTcsMTIgKzMxNiwxMiBAQCB2b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBibwogICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRDYW5Q
bGF5RmFzdFJldmVyc2UoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQog
Ci12b2lkIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRp
b25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpTZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb250ZXh0
SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAotdm9p
ZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25z
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OlNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29udGV4
dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>