<?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>236879</bug_id>
          
          <creation_ts>2022-02-18 23:12:56 -0800</creation_ts>
          <short_desc>[WebGPU] Implement the first half of the tracer bullet</short_desc>
          <delta_ts>2022-02-21 14:10:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236855</dependson>
    
    <dependson>236888</dependson>
    
    <dependson>236889</dependson>
    
    <dependson>236891</dependson>
    
    <dependson>236898</dependson>
    
    <dependson>236899</dependson>
    
    <dependson>236900</dependson>
    
    <dependson>236902</dependson>
    
    <dependson>236903</dependson>
    
    <dependson>236910</dependson>
    
    <dependson>236933</dependson>
    
    <dependson>236934</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843805</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-18 23:12:56 -0800</bug_when>
    <thetext>[WebGPU] Implement the first half of the tracer bullet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843806</commentid>
    <comment_count>1</comment_count>
      <attachid>452630</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-18 23:13:40 -0800</bug_when>
    <thetext>Created attachment 452630
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452630</attachid>
            <date>2022-02-18 23:13:40 -0800</date>
            <delta_ts>2022-02-21 13:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236879-20220218231337.patch</filename>
            <type>text/plain</type>
            <size>95025</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJlMmI5YWU2MjQ5YWMyM2U3YjEzZGRj
ZmUxODY3MzJjYjI3YWQyMTMuLmQ1ZTgxMzU5NjdlYjE2ZDY4ZmIzMGYxYTNkNjcxOWZiNTdhMTAx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTggIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgdGhlIGZp
cnN0IGhhbGYgb2YgdGhlIHRyYWNlciBidWxsZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
cy55YW1sOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwogMjAyMi0wMi0xNyAgTWF0
dCBXb29kcm93ICA8bWF0dHdvb2Ryb3dAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBzdWJn
cmlkIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQyOTdmYmY1NmE1YjhiYjBhYzVmZmZhY2M3
ODFhYzJkN2E2NzBhOC4uMTVkNzY2NGU3MTc4N2QyZTYwZDJmOWRhYmNiNGYwMGYwMzk4MzM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTE4ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gSW1wbGVtZW50IHRo
ZSBmaXJzdCBoYWxmIG9mIHRoZSB0cmFjZXIgYnVsbGV0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NzkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6CisgICAgICAgICogTW9kdWxlcy9X
ZWJHUFUvR1BVRGV2aWNlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2Uu
aDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dl
YkNvcmUueGNzY2hlbWU6CisKIDIwMjItMDItMTggIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8
Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRU1FXVtHU3RyZWFtZXJdW1RodW5kZXJd
IEFkZCB2aWRlby94LWgyNjUgY2FwcyB0byBUaHVuZGVyIGRlY3J5cHRvcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCBj
OGMwYjVmYTI4NWMyOTYyMDkxYmZjMDhjNmQ2YTlmNWQ1NzgyYzNiLi5hMzUyODUxZDU0N2I5ODUy
YjczYTMwZDVhOGUwYTMyYzYxZTNjOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NCBAQAorMjAy
Mi0wMi0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtXZWJHUFVdIEltcGxlbWVudCB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgdHJhY2VyIGJ1bGxl
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXR1NM
L1dHU0wuY3BwOgorICAgICAgICAoV0dTTDo6cHJlcGFyZSk6CisgICAgICAgIChXR1NMOjpTdWNj
ZXNzZnVsQ2hlY2s6On5TdWNjZXNzZnVsQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAqIFdHU0wv
V0dTTC5oOgorICAgICAgICAqIFdlYkdQVS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1l
cy9XZWJHUFUueGNzY2hlbWU6CisgICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAgICAgICAg
KFdlYkdQVTo6QWRhcHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbToK
KyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6QWRhcHRlcik6CisgICAgICAgIChXZWJHUFU6OkFk
YXB0ZXI6OmVudW1lcmF0ZUZlYXR1cmVzKToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6Z2V0
TGltaXRzKToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6Z2V0UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJHUFU6OkFkYXB0ZXI6Omhhc0ZlYXR1cmUpOgorICAgICAgICAoV2ViR1BVOjpkZXZp
Y2VNZWV0c1JlcXVpcmVkTGltaXRzKToKKyAgICAgICAgKFdlYkdQVTo6QWRhcHRlcjo6cmVxdWVz
dERldmljZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVlc3REZXZpY2UpOgorICAgICAgICAq
IFdlYkdQVS9CaW5kR3JvdXAuaDoKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpjcmVhdGUp
OgorICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OmJ1ZmZl
cklzUHJlc2VudCk6CisgICAgICAgIChXZWJHUFU6OnNhbXBsZXJJc1ByZXNlbnQpOgorICAgICAg
ICAoV2ViR1BVOjp0ZXh0dXJlVmlld0lzUHJlc2VudCk6CisgICAgICAgIChXZWJHUFU6OkRldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwOjpCaW5kR3Jv
dXApOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXA6OnNldExhYmVsKToKKyAgICAgICAgKiBX
ZWJHUFUvQmluZEdyb3VwTGF5b3V0Lmg6CisgICAgICAgIChXZWJHUFU6OkJpbmRHcm91cExheW91
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwTGF5b3V0Ojp2ZXJ0ZXhBcmd1
bWVudEVuY29kZXIgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ6OmZy
YWdtZW50QXJndW1lbnRFbmNvZGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0Ojpjb21wdXRlQXJndW1lbnRFbmNvZGVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJHUFUv
QmluZEdyb3VwTGF5b3V0Lm1tOgorICAgICAgICAoV2ViR1BVOjppc1ByZXNlbnQpOgorICAgICAg
ICAoV2ViR1BVOjpjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViR1BVOjpE
ZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJHUFU6OkJpbmRHcm91
cExheW91dDo6QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6QmluZEdyb3VwTGF5
b3V0OjpzZXRMYWJlbCk6CisgICAgICAgIChXZWJHUFU6OkJpbmRHcm91cExheW91dDo6ZW5jb2Rl
ZExlbmd0aCBjb25zdCk6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAoV2Vi
R1BVOjpCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6YnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBXZWJHUFUvQnVmZmVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcik6CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6QnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6QnVmZmVyOjpzZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNv
ZGVyKToKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmg6CisgICAgICAgIChXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6Q29tcHV0ZVBp
cGVsaW5lOjpjb21wdXRlUGlwZWxpbmVTdGF0ZSBjb25zdCk6CisgICAgICAgICogV2ViR1BVL0Nv
bXB1dGVQaXBlbGluZS5tbToKKyAgICAgICAgKFdlYkdQVTo6Y3JlYXRlTGlicmFyeSk6CisgICAg
ICAgIChXZWJHUFU6OmNyZWF0ZUNvbnN0YW50VmFsdWVzKToKKyAgICAgICAgKFdlYkdQVTo6Y3Jl
YXRlRnVuY3Rpb24pOgorICAgICAgICAoV2ViR1BVOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVTdGF0
ZSk6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyk6CisgICAg
ICAgIChXZWJHUFU6OkNvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAg
KFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAo
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OnNldExhYmVsKToKKyAgICAgICAgKiBXZWJHUFUvRGV2
aWNlLmg6CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJHUFUvRGV2aWNlLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6RGV2aWNlKToKKyAgICAgICAgKFdlYkdQVTo6RGV2
aWNlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpnZXRRdWV1ZSk6CisgICAg
ICAgIChXZWJHUFU6OkRldmljZTo6c2V0TGFiZWwpOgorICAgICAgICAod2dwdURldmljZUNyZWF0
ZUJpbmRHcm91cCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQmluZEdyb3VwTGF5b3V0KToK
KyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCdWZmZXIpOgorICAgICAgICAod2dwdURldmljZUNy
ZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUGlwZWxpbmVM
YXlvdXQpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAg
IChXZWJHUFU6OkRldmljZTo6Y3JlYXRlQmluZEdyb3VwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkdQVTo6RGV2aWNlOjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViR1BVOjpEZXZpY2U6OmNyZWF0ZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJHUFU6
OkRldmljZTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViR1BV
OjpEZXZpY2U6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJH
UFU6OkRldmljZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVRdWVyeVNldCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlVGV4dHVyZSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViR1BVL0luc3RhbmNlLmg6CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVhdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYkdQVS9JbnN0YW5jZS5tbToKKyAgICAgICAgKFdlYkdQVTo6
SW5zdGFuY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpJbnN0YW5jZSk6
CisgICAgICAgIChXZWJHUFU6Okluc3RhbmNlOjpjcmVhdGVTdXJmYWNlKToKKyAgICAgICAgKFdl
YkdQVTo6SW5zdGFuY2U6OnByb2Nlc3NFdmVudHMpOgorICAgICAgICAoV2ViR1BVOjpzb3J0ZWRE
ZXZpY2VzKToKKyAgICAgICAgKFdlYkdQVTo6SW5zdGFuY2U6OnJlcXVlc3RBZGFwdGVyKToKKyAg
ICAgICAgKHdncHVDcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0
QWRhcHRlcik6CisgICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgIChX
ZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpjcmVhdGUpOgorICAgICAgICAoV2ViR1BVOjpQaXBlbGlu
ZUxheW91dDo6bnVtYmVyT2ZCaW5kR3JvdXBMYXlvdXRzIGNvbnN0KToKKyAgICAgICAgKiBXZWJH
UFUvUGlwZWxpbmVMYXlvdXQubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUGlw
ZWxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViR1BVOjpQaXBlbGluZUxheW91dDo6UGlwZWxpbmVM
YXlvdXQpOgorICAgICAgICAoV2ViR1BVOjpQaXBlbGluZUxheW91dDo6c2V0TGFiZWwpOgorICAg
ICAgICAoV2ViR1BVOjpQaXBlbGluZUxheW91dDo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAg
IChXZWJHUFU6OlBpcGVsaW5lTGF5b3V0OjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKiBX
ZWJHUFUvUXVlcnlTZXQubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUXVlcnlT
ZXQpOgorICAgICAgICAqIFdlYkdQVS9RdWV1ZS5oOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OmNvbW1hbmRRdWV1ZSBjb25zdCk6Cisg
ICAgICAgICogV2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6UXVldWUp
OgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6c2V0TGFiZWwpOgorICAgICAgICAqIFdlYkdQVS9S
ZW5kZXJCdW5kbGVFbmNvZGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVJl
bmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJQaXBlbGluZS5tbToK
KyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZSk6CisgICAgICAg
IChXZWJHUFU6OkRldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyk6CisgICAgICAgIChX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIFdl
YkdQVS9TYW1wbGVyLmg6CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJHUFU6OlNhbXBsZXI6OnNhbXBsZXJTdGF0ZSBjb25zdCk6CisgICAgICAgICogV2Vi
R1BVL1NhbXBsZXIubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3JlYXRlU2FtcGxlcik6
CisgICAgICAgIChXZWJHUFU6OlNhbXBsZXI6OlNhbXBsZXIpOgorICAgICAgICAoV2ViR1BVOjpT
YW1wbGVyOjpzZXRMYWJlbCk6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5oOgorICAg
ICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlNo
YWRlck1vZHVsZTo6bGlicmFyeSBjb25zdCk6CisgICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVs
ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6ZmluZFNoYWRlck1vZHVsZVBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6OmNyZWF0ZUxpYnJhcnkpOgorICAgICAgICAoV2Vi
R1BVOjplYXJseUNvbXBpbGVTaGFkZXJNb2R1bGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6
OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChXZWJHUFU6OlNoYWRlck1vZHVsZTo6U2hh
ZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdlRGF0YTo6Q29t
cGlsYXRpb25NZXNzYWdlRGF0YSk6CisgICAgICAgIChXZWJHUFU6OmNvbnZlcnRNZXNzYWdlcyk6
CisgICAgICAgIChXZWJHUFU6OlNoYWRlck1vZHVsZTo6Z2V0Q29tcGlsYXRpb25JbmZvKToKKyAg
ICAgICAgKFdlYkdQVTo6U2hhZGVyTW9kdWxlOjpzZXRMYWJlbCk6CisgICAgICAgIChXZWJHUFU6
OlNoYWRlck1vZHVsZTo6Y29udmVydFBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkdQVTo6
U2hhZGVyTW9kdWxlOjphc3QgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpTaGFkZXJNb2R1bGU6
OnBpcGVsaW5lTGF5b3V0SGludCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlNoYWRlck1vZHVs
ZTo6ZW50cnlQb2ludEluZm9ybWF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBXZWJHUFUvU3dhcENo
YWluLm1tOgorICAgICAgICAoV2ViR1BVOjpTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlVmll
dyk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVy
ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6dGV4dHVyZSBjb25zdCk6Cisg
ICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OkRldmljZTo6Y3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OlRleHR1cmUpOgorICAgICAg
ICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVy
ZTo6ZGVzdHJveSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnNldExhYmVsKToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3Ojp0ZXh0dXJlIGNvbnN0KToK
KyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcubW06CisgICAgICAgIChXZWJHUFU6OlRleHR1
cmVWaWV3OjpUZXh0dXJlVmlldyk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpzZXRM
YWJlbCk6CisgICAgICAgICogV2ViR1BVL2NvbmZpZy5oOgorCiAyMDIyLTAyLTE4ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMQ19TT1VSQ0VfVkVSU0lP
TiB0byBjb21waWxlIHRhcmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVm
ZXJlbmNlcy9XZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVu
Y2VzL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggNGFhNjdhMzEyOTgwNGRhOWZmOGU2YTQ0OTQ1
OTZjNDY2MWZmOWUxNi4uN2Q0OTY5MzZiMzM5ZGY1MWNhMWJmNzg5ZTljNjA4MjQwOGQ5M2NjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
LnlhbWwKKysrIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2Vz
LnlhbWwKQEAgLTI1MzYsMTEgKzI1MzYsMTEgQEAgV2ViR1BVOgogICB0eXBlOiBib29sCiAgIGRl
ZmF1bHRWYWx1ZToKICAgICBXZWJLaXRMZWdhY3k6Ci0gICAgICBkZWZhdWx0OiBmYWxzZQorICAg
ICAgZGVmYXVsdDogdHJ1ZQogICAgIFdlYktpdDoKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAg
ICBkZWZhdWx0OiB0cnVlCiAgICAgV2ViQ29yZToKLSAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAg
ICBkZWZhdWx0OiB0cnVlCiAKIFdlYlNlY3VyaXR5RW5hYmxlZDoKICAgdHlwZTogYm9vbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaAppbmRleCAyMjJhN2U3MDNiYzgzODEwN2JlOTIyNDM5Y2RhMWM2ODAzOWVl
MDI2Li5mYjE2YTk1MDQxNTJhNDUxZDljNzVkODlkOTQwODMwYzk5NmVkZGZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaApAQCAtMTE1Nyw3ICsxMTU3LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0jZGVmaW5lIEhBVkVfV0VCR1BVX0lNUExFTUVOVEFUSU9OIDAKKyNkZWZpbmUgSEFW
RV9XRUJHUFVfSU1QTEVNRU5UQVRJT04gMQogI2VuZGlmCiAKICNpZiAoUExBVEZPUk0oTUFDKSAm
JiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCmluZGV4IDEzNjg0N2ExYmNi
MjgyZjFkNTMxZDkyZTBhYjYzYzNlZWY4OTcxZTEuLjRhYmM2MmIxNDQ5YjA0NzlmOGNkODViNWYy
OGExM2Q0MTdjODg0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L1dlYkNvcmUueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZwpAQCAtODYsNyArODYsNyBAQCBPVVRQVVRfQUxURVJOQVRFX1JPT1RfUEFU
SF9ZRVNfWUVTW3Nkaz1tYWNvc3gqXSA9ICQoRFNUUk9PVCkkKEFMVEVSTkFURV9ST09UX1BBVAog
CiBXS19BTkdMRV9MREZMQUdTID0gLXdlYWstbEFOR0xFLXNoYXJlZDsKIAotV0tfV0VCR1BVX0xE
RkxBR1MgPSA7IC8vIFRvIGJlIGZpbGxlZC1pbiBhZnRlciBBcHBsZSB1cGRhdGUgaXRzIGludGVy
bmFsIGJ1aWxkIHN5c3RlbS4KK1dLX1dFQkdQVV9MREZMQUdTID0gLXdlYWtfZnJhbWV3b3JrIFdl
YkdQVTsKIAogV0tfQVBQS0lUX0xERkxBR1MgPSAkKFdLX0FQUEtJVF9MREZMQUdTXyQoV0tfUExB
VEZPUk1fTkFNRSkpOwogV0tfQVBQS0lUX0xERkxBR1NfbWFjb3N4ID0gLWZyYW1ld29yayBBcHBL
aXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9XZWJHUFUvR1BVRGV2aWNlLmNwcAppbmRleCBj
MDQ1NTIzNjkzZDY4NzkzYWIzYzk2YjRmMmE0MmFlMjY5NWI2MGQxLi5iYmUzNzliMjBjNDA4NzZk
NTg1MTdlNTBjZWJlMGVmZDQxODBjMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL1dlYkdQVS9HUFVEZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVURldmljZS5jcHAKQEAgLTU4LDkgKzU4LDEyIEBACiAjaW5jbHVkZSAiSlNHUFVPdXRP
Zk1lbW9yeUVycm9yLmgiCiAjaW5jbHVkZSAiSlNHUFVSZW5kZXJQaXBlbGluZS5oIgogI2luY2x1
ZGUgIkpTR1BVVmFsaWRhdGlvbkVycm9yLmgiCisjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGlu
ZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoR1BVRGV2aWNlKTsKKwogR1BVRGV2aWNlOjp+R1BVRGV2aWNlKCkgPSBkZWZhdWx0OwogCiBT
dHJpbmcgR1BVRGV2aWNlOjpsYWJlbCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL1dlYkdQVS9HUFVEZXZpY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2Vi
R1BVL0dQVURldmljZS5oCmluZGV4IDA1ZDZiNjQzZTQ2MDY0ZmU3Mjc2MjEyNWU4M2FlMTY4MDBk
ZDg4MjIuLjA1MDgyMjY1ZGE0MGE3MGFmN2FlZDRhYTRmZTQ3NWFhOWUwNTBjOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURldmljZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvV2ViR1BVL0dQVURldmljZS5oCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPG9wdGlvbmFsPgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIApAQCAtNzMsNyArNzQsOCBAQCBjbGFzcyBHUFVTdXBwb3J0ZWRMaW1p
dHM7CiBjbGFzcyBHUFVUZXh0dXJlOwogc3RydWN0IEdQVVRleHR1cmVEZXNjcmlwdG9yOwogCi1j
bGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJn
ZXRXaXRoSW5saW5lRGF0YSB7CitjbGFzcyBHUFVEZXZpY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxH
UFVEZXZpY2U+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRo
SW5saW5lRGF0YSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHUFVEZXZpY2UpOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8R1BVRGV2aWNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYg
YmFja2luZykKICAgICB7CkBAIC0xMjIsNiArMTI0LDkgQEAgcHVibGljOgogICAgIFBBTDo6V2Vi
R1BVOjpEZXZpY2UmIGJhY2tpbmcoKSB7IHJldHVybiBtX2JhY2tpbmc7IH0KICAgICBjb25zdCBQ
QUw6OldlYkdQVTo6RGV2aWNlJiBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9
CiAKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVy
ZWY7CisKIHByaXZhdGU6CiAgICAgR1BVRGV2aWNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYmIGJhY2tpbmcp
CiAgICAgICAgIDogQWN0aXZlRE9NT2JqZWN0IHsgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB9CkBA
IC0xNDAsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIExvc3RQcm9taXNlIG1fbG9zdFByb21pc2U7Ci0gICAg
UmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+JiYgbV9iYWNraW5nOworICAgIFJlZjxQQUw6OldlYkdQ
VTo6RGV2aWNlPiBtX2JhY2tpbmc7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkNvcmUueGNzY2hl
bWUgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hl
bWVzL1dlYkNvcmUueGNzY2hlbWUKaW5kZXggMTU4MmUxYTNjNTZkZjllNzgyMDBkOTlhOTk4Njgw
NTkxYjRjZGYwYi4uMDdlOTQxOWY1ZjI2ZjcxZmU4YjRhYmQ3YWQzY2JkOWU5ZTZhM2FlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hj
c2NoZW1lcy9XZWJDb3JlLnhjc2NoZW1lCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViQ29yZS54Y3NjaGVtZQpAQCAtNDAsNiAr
NDAsMTEgQEAKICAgICAgIGRlYnVnRG9jdW1lbnRWZXJzaW9uaW5nID0gIllFUyIKICAgICAgIGRl
YnVnU2VydmljZUV4dGVuc2lvbiA9ICJpbnRlcm5hbCIKICAgICAgIGFsbG93TG9jYXRpb25TaW11
bGF0aW9uID0gIllFUyI+CisgICAgICA8UGF0aFJ1bm5hYmxlCisgICAgICAgICBydW5uYWJsZURl
YnVnZ2luZ01vZGUgPSAiMCIKKyAgICAgICAgIEJ1bmRsZUlkZW50aWZpZXIgPSAib3JnLndlYmtp
dC5NaW5pQnJvd3NlciIKKyAgICAgICAgIEZpbGVQYXRoID0gIi9Vc2Vycy9tbWF4ZmllbGQvQnVp
bGQvUHJvZHVjdHMvRGVidWcvTWluaUJyb3dzZXIuYXBwIj4KKyAgICAgIDwvUGF0aFJ1bm5hYmxl
PgogICAgPC9MYXVuY2hBY3Rpb24+CiAgICA8UHJvZmlsZUFjdGlvbgogICAgICAgYnVpbGRDb25m
aWd1cmF0aW9uID0gIlJlbGVhc2UiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dHU0wvV0dT
TC5jcHAgYi9Tb3VyY2UvV2ViR1BVL1dHU0wvV0dTTC5jcHAKaW5kZXggOTRmZTM5YWJkNzM0ZjFm
MDBjYWIxMTBmMGZmYjk3NDMwMTM0ZDBkYi4uZTJjOWRkOTJkNzc4MTAwYTYxNWZkNjgwZDk0Zjk0
ZTdjMDk4MDIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XR1NML1dHU0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJHUFUvV0dTTC9XR1NMLmNwcApAQCAtMzksOCArMzksMjMgQEAgc3RkOjp2YXJp
YW50PFN1Y2Nlc3NmdWxDaGVjaywgRmFpbGVkQ2hlY2s+IHN0YXRpY0NoZWNrKGNvbnN0IFN0cmlu
ZyYgc3RyLCBjb25zdAogICAgIHJldHVybiBGYWlsZWRDaGVjayB7IHsgfSwgeyB9IH07CiB9CiAK
LVN1Y2Nlc3NmdWxDaGVjazo6flN1Y2Nlc3NmdWxDaGVjaygpCitTdWNjZXNzZnVsQ2hlY2s6OlN1
Y2Nlc3NmdWxDaGVjayhTdWNjZXNzZnVsQ2hlY2smJikgPSBkZWZhdWx0OworCitTdWNjZXNzZnVs
Q2hlY2s6On5TdWNjZXNzZnVsQ2hlY2soKSA9IGRlZmF1bHQ7CisKK1ByZXBhcmVSZXN1bHQgcHJl
cGFyZShjb25zdCBBU1QmIGFzdCwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFBpcGVsaW5lTGF5b3V0
PiYgcGlwZWxpbmVMYXlvdXRzKQoreworICAgIFVOVVNFRF9QQVJBTShhc3QpOworICAgIFVOVVNF
RF9QQVJBTShwaXBlbGluZUxheW91dHMpOworICAgIHJldHVybiB7IFN0cmluZygpLCB7IH0gfTsK
K30KKworUHJlcGFyZVJlc3VsdCBwcmVwYXJlKGNvbnN0IEFTVCYgYXN0LCBjb25zdCBTdHJpbmcm
IGVudHJ5UG9pbnROYW1lLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFBpcGVsaW5lTGF5b3V0PiYgcGlw
ZWxpbmVMYXlvdXRzKQogeworICAgIFVOVVNFRF9QQVJBTShhc3QpOworICAgIFVOVVNFRF9QQVJB
TShlbnRyeVBvaW50TmFtZSk7CisgICAgVU5VU0VEX1BBUkFNKHBpcGVsaW5lTGF5b3V0cyk7Cisg
ICAgcmV0dXJuIHsgU3RyaW5nKCksIHsgfSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dHU0wvV0dTTC5oIGIvU291cmNlL1dlYkdQVS9XR1NML1dHU0wuaAppbmRleCA5OWM5
ZGU3YTM5YjNhNjM3OTEyY2EzNDZjOGMxOWFmMTE5Y2RlMjkwLi4zMmEwY2RkNDAwNTRkN2E3NmY5
MmUzZjI3Y2EwMmY3M2NmMzUxYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dHU0wvV0dT
TC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV0dTTC9XR1NMLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU3LDkgKzU4
LDExIEBAIHN0cnVjdCBDb21waWxhdGlvbk1lc3NhZ2UgewogY2xhc3MgQVNUOwogCiBzdHJ1Y3Qg
U3VjY2Vzc2Z1bENoZWNrIHsKKyAgICBTdWNjZXNzZnVsQ2hlY2soKSA9IGRlbGV0ZTsKKyAgICBT
dWNjZXNzZnVsQ2hlY2soU3VjY2Vzc2Z1bENoZWNrJiYpOwogICAgIH5TdWNjZXNzZnVsQ2hlY2so
KTsKICAgICBWZWN0b3I8Q29tcGlsYXRpb25NZXNzYWdlPiB3YXJuaW5nczsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8QVNUPiBhc3Q7CisgICAgVW5pcXVlUmVmPEFTVD4gYXN0OwogfTsKIAogc3RydWN0
IEZhaWxlZENoZWNrIHsKQEAgLTE5MywxMCArMTk2LDEyIEBAIHN0cnVjdCBTcGVjaWFsaXphdGlv
bkNvbnN0YW50IHsKIH07CiAKIHN0cnVjdCBFbnRyeVBvaW50SW5mb3JtYXRpb24geworICAgIC8v
IEZJWE1FOiBUaGlzIGNhbiBwcm9iYWJseSBiZSBmYWN0b3JlZCBiZXR0ZXIuCiAgICAgU3RyaW5n
IG1hbmdsZWROYW1lOwogICAgIHN0ZDo6b3B0aW9uYWw8UGlwZWxpbmVMYXlvdXQ+IGRlZmF1bHRM
YXlvdXQ7IC8vIElmIHRoZSBpbnB1dCBQaXBlbGluZUxheW91dCBpcyBudWxsb3B0LCB0aGUgY29t
cGlsZXIgY29tcHV0ZXMgYSBsYXlvdXQgYW5kIHJldHVybnMgaXQuIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI2RlZmF1bHQtcGlwZWxpbmUtbGF5b3V0CiAgICAgSGFzaE1hcDxzdGQ6
OnBhaXI8c2l6ZV90LCBzaXplX3Q+LCBzaXplX3Q+IGJ1ZmZlckxlbmd0aExvY2F0aW9uczsgLy8g
TWV0YWwgYnVmZmVyIGlkZW50aXR5IC0+IG9mZnNldCB3aXRoaW4gaGVscGVyIGJ1ZmZlciB3aGVy
ZSBpdHMgc2l6ZSBuZWVkcyB0byBsaWUKLSAgICBWZWN0b3I8U3BlY2lhbGl6YXRpb25Db25zdGFu
dD4gc3BlY2lhbGl6YXRpb25Db25zdGFudHM7CisgICAgSGFzaE1hcDxzaXplX3QsIFNwZWNpYWxp
emF0aW9uQ29uc3RhbnQ+IHNwZWNpYWxpemF0aW9uQ29uc3RhbnRzOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBzaXplX3Q+IHNwZWNpYWxpemF0aW9uQ29uc3RhbnRJbmRpY2VzOyAvLyBQb2ludHMgaW50
byBzcGVjaWFsaXphdGlvbkNvbnN0YW50c0J5SW5kZXgKICAgICBzdGQ6OnZhcmlhbnQ8VmVydGV4
LCBGcmFnbWVudCwgQ29tcHV0ZT4gdHlwZWRFbnRyeVBvaW50OwogfTsKIApAQCAtMjA5LDcgKzIx
NCw3IEBAIHN0cnVjdCBQcmVwYXJlUmVzdWx0IHsKIAogLy8gVGhlc2UgYXJlIG5vdCBhbGxvd2Vk
IHRvIGZhaWwuCiAvLyBBbGwgZmFpbHVyZXMgbXVzdCBoYXZlIGFscmVhZHkgYmVlbiBjYXVnaHQg
aW4gY2hlY2soKS4KLVByZXBhcmVSZXN1bHQgcHJlcGFyZShjb25zdCBBU1QmLCBjb25zdCBIYXNo
TWFwPFN0cmluZywgc3RkOjpvcHRpb25hbDxQaXBlbGluZUxheW91dD4+Jik7CitQcmVwYXJlUmVz
dWx0IHByZXBhcmUoY29uc3QgQVNUJiwgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFBpcGVsaW5lTGF5
b3V0PiYpOwogUHJlcGFyZVJlc3VsdCBwcmVwYXJlKGNvbnN0IEFTVCYsIGNvbnN0IFN0cmluZyYg
ZW50cnlQb2ludE5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGlwZWxpbmVMYXlvdXQ+Jik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdHU0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVLnhj
b2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkdQVS54Y3NjaGVtZSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVLnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVzL1dlYkdQVS54Y3Nj
aGVtZQppbmRleCA5M2E3ODg0MGRjZGQ2MTNjMDViMDk3MzIzNWM2NjJlNjRmODRhNmFkLi41YWM2
ZGU3MWY2YjcwYzUxYzI5NmZhZTZhN2RmZjIxNWEzMDAxZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJHUFUueGNz
Y2hlbWUKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94
Y3NjaGVtZXMvV2ViR1BVLnhjc2NoZW1lCkBAIC00MCw2ICs0MCwxMSBAQAogICAgICAgZGVidWdE
b2N1bWVudFZlcnNpb25pbmcgPSAiWUVTIgogICAgICAgZGVidWdTZXJ2aWNlRXh0ZW5zaW9uID0g
ImludGVybmFsIgogICAgICAgYWxsb3dMb2NhdGlvblNpbXVsYXRpb24gPSAiWUVTIj4KKyAgICAg
IDxQYXRoUnVubmFibGUKKyAgICAgICAgIHJ1bm5hYmxlRGVidWdnaW5nTW9kZSA9ICIwIgorICAg
ICAgICAgQnVuZGxlSWRlbnRpZmllciA9ICJvcmcud2Via2l0Lk1pbmlCcm93c2VyIgorICAgICAg
ICAgRmlsZVBhdGggPSAiL1VzZXJzL21tYXhmaWVsZC9CdWlsZC9Qcm9kdWN0cy9EZWJ1Zy9NaW5p
QnJvd3Nlci5hcHAiPgorICAgICAgPC9QYXRoUnVubmFibGU+CiAgICA8L0xhdW5jaEFjdGlvbj4K
ICAgIDxQcm9maWxlQWN0aW9uCiAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSAiUmVsZWFzZSIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0FkYXB0ZXIuaAppbmRleCA4Y2E0ZTBmMGU0Yjk3ZWUwYTQ3ODhiYjhjNDc2ZmI1
Mjc0ZmJiMzIxLi4zNDI5YTRhNjViNDY1Y2MzNWNlODA3ZjIzOGVhMzVjM2VkMmIwZGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQWRhcHRlci5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0IDx3dGYvRnVuY3Rp
b24uaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW1wb3J0IDx3dGYvUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKQEAgLTM4LDkgKzQwLDkgQEAgY2xhc3MgRGV2aWNlOwogY2xh
c3MgQWRhcHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFkYXB0ZXI+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFkYXB0ZXI+IGNyZWF0ZSgp
CisgICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoaWQgPE1UTERldmljZT4gZGV2aWNlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcigpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWRhcHRlcihkZXZpY2UpKTsKICAgICB9CiAKICAgICB+QWRh
cHRlcigpOwpAQCAtNDksMTAgKzUxLDEzIEBAIHB1YmxpYzoKICAgICBib29sIGdldExpbWl0cyhX
R1BVU3VwcG9ydGVkTGltaXRzKik7CiAgICAgdm9pZCBnZXRQcm9wZXJ0aWVzKFdHUFVBZGFwdGVy
UHJvcGVydGllcyopOwogICAgIGJvb2wgaGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpOwotICAg
IHZvaWQgcmVxdWVzdERldmljZShjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciosIFdURjo6RnVu
Y3Rpb248dm9pZChXR1BVUmVxdWVzdERldmljZVN0YXR1cywgUmVmPERldmljZT4mJiwgY29uc3Qg
Y2hhciopPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHJlcXVlc3REZXZpY2UoY29uc3QgV0dQVURl
dmljZURlc2NyaXB0b3IqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0
dXMsIFJlZlB0cjxEZXZpY2U+JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZh
dGU6Ci0gICAgQWRhcHRlcigpOworICAgIEFkYXB0ZXIoaWQgPE1UTERldmljZT4pOworCisgICAg
aWQgPE1UTERldmljZT4gbV9kZXZpY2UgeyBuaWwgfTsKKyAgICBOU1N0cmluZyAqbV9kZXZpY2VO
YW1lIHsgbmlsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFw
dGVyLm1tCmluZGV4IGUyOTQzY2M0YjU0N2E4ZTNiNjE1NjRkYmUwMjhjMWVkOWYxZWY2MTMuLjc2
YTU3MWUzMmQyZjk3ODgxOTJkYTkzNmM5YTg4ZTQ4ZTQ3YzdlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRh
cHRlci5tbQpAQCAtMzIsMzcgKzMyLDk5IEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1BZGFw
dGVyOjpBZGFwdGVyKCkgPSBkZWZhdWx0OworQWRhcHRlcjo6QWRhcHRlcihpZCA8TVRMRGV2aWNl
PiBkZXZpY2UpCisgICAgOiBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX2RldmljZU5hbWUoZGV2
aWNlLm5hbWUpCit7Cit9CiAKIEFkYXB0ZXI6On5BZGFwdGVyKCkgPSBkZWZhdWx0OwogCi1zaXpl
X3QgQWRhcHRlcjo6ZW51bWVyYXRlRmVhdHVyZXMoV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykK
K3NpemVfdCBBZGFwdGVyOjplbnVtZXJhdGVGZWF0dXJlcyhXR1BVRmVhdHVyZU5hbWUqKQogewot
ICAgIFVOVVNFRF9QQVJBTShmZWF0dXJlcyk7CisgICAgLy8gV2Ugc3VwcG9ydCBubyBvcHRpb25h
bCBmZWF0dXJlcyByaWdodCBub3cuCiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgQWRhcHRlcjo6
Z2V0TGltaXRzKFdHUFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIHsKLSAgICBVTlVTRURfUEFS
QU0obGltaXRzKTsKKyAgICBpZiAobGltaXRzLT5uZXh0SW5DaGFpbiAhPSBudWxscHRyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAg
bGltaXRzLT5saW1pdHMgPSB7IH07CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQWRhcHRl
cjo6Z2V0UHJvcGVydGllcyhXR1BVQWRhcHRlclByb3BlcnRpZXMqIHByb3BlcnRpZXMpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHByb3BlcnRpZXMpOworICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0
aGUgdmVuZG9ySUQgYW5kIGRldmljZUlEIGJlPworICAgIHByb3BlcnRpZXMtPnZlbmRvcklEID0g
MDsKKyAgICBwcm9wZXJ0aWVzLT5kZXZpY2VJRCA9IDA7CisgICAgcHJvcGVydGllcy0+bmFtZSA9
IG1fZGV2aWNlTmFtZS5VVEY4U3RyaW5nOworICAgIHByb3BlcnRpZXMtPmRyaXZlckRlc2NyaXB0
aW9uID0gIiI7CisgICAgcHJvcGVydGllcy0+YWRhcHRlclR5cGUgPSBtX2RldmljZS5oYXNVbmlm
aWVkTWVtb3J5ID8gV0dQVUFkYXB0ZXJUeXBlX0ludGVncmF0ZWRHUFUgOiBXR1BVQWRhcHRlclR5
cGVfRGlzY3JldGVHUFU7CisgICAgcHJvcGVydGllcy0+YmFja2VuZFR5cGUgPSBXR1BVQmFja2Vu
ZFR5cGVfTWV0YWw7CiB9CiAKLWJvb2wgQWRhcHRlcjo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5h
bWUgZmVhdHVyZSkKK2Jvb2wgQWRhcHRlcjo6aGFzRmVhdHVyZShXR1BVRmVhdHVyZU5hbWUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGZlYXR1cmUpOworICAgIC8vIFdlIHN1cHBvcnQgbm8gb3B0aW9u
YWwgZmVhdHVyZXMgcmlnaHQgbm93LgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBZGFw
dGVyOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3REZXZpY2VTdGF0dXMsIFJlZjxEZXZpY2U+
JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKK3N0YXRpYyBib29sIGRldmljZU1lZXRzUmVx
dWlyZWRMaW1pdHMoaWQgPE1UTERldmljZT4sIGNvbnN0IFdHUFVSZXF1aXJlZExpbWl0cyYgcmVx
dWlyZWRMaW1pdHMpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVy
biAhcmVxdWlyZWRMaW1pdHMubmV4dEluQ2hhaW4KKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhCaW5kR3JvdXBzCisgICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMu
bWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQKKyAgICAgICAgJiYgIXJl
cXVpcmVkTGltaXRzLmxpbWl0cy5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dAorICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heFNhbXBsZWRUZXh0dXJl
c1BlclNoYWRlclN0YWdlCisgICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4U2Ft
cGxlcnNQZXJTaGFkZXJTdGFnZQorICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1h
eFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRz
LmxpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZQorICAgICAgICAmJiAhcmVx
dWlyZWRMaW1pdHMubGltaXRzLm1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UKKyAgICAg
ICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUK
KyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGlu
Z1NpemUKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5taW5Vbmlmb3JtQnVmZmVy
T2Zmc2V0QWxpZ25tZW50CisgICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWluU3Rv
cmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudAorICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGlt
aXRzLm1heFZlcnRleEJ1ZmZlcnMKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0cy5t
YXhWZXJ0ZXhBdHRyaWJ1dGVzCisgICAgICAgICYmICFyZXF1aXJlZExpbWl0cy5saW1pdHMubWF4
VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUKKyAgICAgICAgJiYgIXJlcXVpcmVkTGltaXRzLmxpbWl0
cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cworICAgICAgICAmJiAhcmVxdWlyZWRMaW1p
dHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZQorICAgICAgICAmJiAhcmVx
dWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cAorICAg
ICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWAor
ICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WQorICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWgorICAgICAgICAmJiAhcmVxdWlyZWRMaW1pdHMubGltaXRzLm1heENvbXB1dGVXb3JrZ3Jv
dXBzUGVyRGltZW5zaW9uOworfQorCit2b2lkIEFkYXB0ZXI6OnJlcXVlc3REZXZpY2UoY29uc3Qg
V0dQVURldmljZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChXR1BV
UmVxdWVzdERldmljZVN0YXR1cywgUmVmUHRyPERldmljZT4mJiwgY29uc3QgY2hhciopPiYmIGNh
bGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFS
QU0oY2FsbGJhY2spOworICAgIGlmIChkZXNjcmlwdG9yLT5uZXh0SW5DaGFpbikgeworICAgICAg
ICBjYWxsYmFjayhXR1BVUmVxdWVzdERldmljZVN0YXR1c19FcnJvciwgbnVsbHB0ciwgIlVua25v
d24gZGVzY3JpcHRvciB0eXBlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZGVzY3JpcHRvci0+cmVxdWlyZWRGZWF0dXJlc0NvdW50KSB7CisgICAgICAgIGNhbGxiYWNrKFdH
UFVSZXF1ZXN0RGV2aWNlU3RhdHVzX0Vycm9yLCBudWxscHRyLCAiRGV2aWNlIGRvZXMgbm90IHN1
cHBvcnQgcmVxdWVzdGVkIGZlYXR1cmVzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAoZGVzY3JpcHRvci0+cmVxdWlyZWRMaW1pdHMgJiYgIWRldmljZU1lZXRzUmVxdWlyZWRM
aW1pdHMobV9kZXZpY2UsICpkZXNjcmlwdG9yLT5yZXF1aXJlZExpbWl0cykpIHsKKyAgICAgICAg
Y2FsbGJhY2soV0dQVVJlcXVlc3REZXZpY2VTdGF0dXNfRXJyb3IsIG51bGxwdHIsICJEZXZpY2Ug
ZG9lcyBub3Qgc3VwcG9ydCByZXF1ZXN0ZWQgbGltaXRzIik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBTZWUgdGhlIGNvbW1lbnQgaW4gRGV2aWNlOjpzZXRMYWJlbCgpIGFib3V0
IHdoeSB3ZSdyZSBub3Qgc2V0dGluZyB0aGUgbGFiZWwgaGVyZS4KKworICAgIGNhbGxiYWNrKFdH
UFVSZXF1ZXN0RGV2aWNlU3RhdHVzX1N1Y2Nlc3MsIERldmljZTo6Y3JlYXRlKG1fZGV2aWNlKSwg
bnVsbHB0cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpAQCAtOTQsNyArMTU2LDcgQEAg
Ym9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1
cmVOYW1lIGZlYXR1cmUpCiAKIHZvaWQgd2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKFdHUFVBZGFw
dGVyIGFkYXB0ZXIsIGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXR1BV
UmVxdWVzdERldmljZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiB1c2VyZGF0YSkKIHsKLSAgICBh
ZGFwdGVyLT5hZGFwdGVyLT5yZXF1ZXN0RGV2aWNlKGRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNl
cmRhdGFdIChXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6OkRldmlj
ZT4mJiBkZXZpY2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soc3Rh
dHVzLCBuZXcgV0dQVURldmljZUltcGwgeyBXVEZNb3ZlKGRldmljZSkgfSwgbWVzc2FnZSwgdXNl
cmRhdGEpOworICAgIGFkYXB0ZXItPmFkYXB0ZXItPnJlcXVlc3REZXZpY2UoZGVzY3JpcHRvciwg
W2NhbGxiYWNrLCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVm
UHRyPFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgY29uc3QgY2hhciogbWVzc2FnZSkgeworICAg
ICAgICBjYWxsYmFjayhzdGF0dXMsIGRldmljZSA/IG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmlj
ZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLCB1c2VyZGF0YSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCmluZGV4IDIyNjcxMjIxM2I0NzkxZWM2NTYz
ZTY4ZDZlMTllNWNhYmJjNmM0M2MuLjk4Yzg1OTVjYjgzZTMwOWQ2ODY1ZTdmOGVlY2RhY2E0Nzc1
ZTVmY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCkBAIC0zNSw5ICszNSw5IEBAIG5hbWVz
cGFjZSBXZWJHUFUgewogY2xhc3MgQmluZEdyb3VwIDogcHVibGljIFJlZkNvdW50ZWQ8QmluZEdy
b3VwPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxCaW5kR3JvdXA+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxCaW5kR3JvdXA+IGNyZWF0
ZShpZCA8TVRMQnVmZmVyPiB2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciwgaWQgPE1UTEJ1ZmZlcj4gZnJh
Z21lbnRBcmd1bWVudEJ1ZmZlciwgaWQgPE1UTEJ1ZmZlcj4gY29tcHV0ZUFyZ3VtZW50QnVmZmVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwKCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCaW5kR3JvdXAodmVydGV4QXJndW1lbnRCdWZmZXIs
IGZyYWdtZW50QXJndW1lbnRCdWZmZXIsIGNvbXB1dGVBcmd1bWVudEJ1ZmZlcikpOwogICAgIH0K
IAogICAgIH5CaW5kR3JvdXAoKTsKQEAgLTQ1LDcgKzQ1LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAogcHJpdmF0ZToKLSAgICBCaW5kR3JvdXAoKTsKKyAg
ICBCaW5kR3JvdXAoaWQgPE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkIDxNVExC
dWZmZXI+IGZyYWdtZW50QXJndW1lbnRCdWZmZXIsIGlkIDxNVExCdWZmZXI+IGNvbXB1dGVBcmd1
bWVudEJ1ZmZlcik7CisKKyAgICBpZCA8TVRMQnVmZmVyPiBtX3ZlcnRleEFyZ3VtZW50QnVmZmVy
IHsgbmlsIH07CisgICAgaWQgPE1UTEJ1ZmZlcj4gbV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyIHsg
bmlsIH07CisgICAgaWQgPE1UTEJ1ZmZlcj4gbV9jb21wdXRlQXJndW1lbnRCdWZmZXIgeyBuaWwg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQmluZEdyb3VwLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLm1t
CmluZGV4IGMyYjc0NGRlYzZlM2RiMWUxMGE4NWY5NzU0MzExMWEzOTFlMWU1ZGIuLmYyY2Y5NDE0
MDMzODMzOTYyY2MzOTk2ZDJiZjQ5OTcyOWNiZjdkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3Jv
dXAubW0KQEAgLTI2LDE3ICsyNiwxMDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
QmluZEdyb3VwLmgiCiAKKyNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgorI2ltcG9ydCAiQnVm
ZmVyLmgiCisjaW1wb3J0ICJEZXZpY2UuaCIKKyNpbXBvcnQgIlNhbXBsZXIuaCIKKyNpbXBvcnQg
IlRleHR1cmVWaWV3LmgiCiAjaW1wb3J0ICJXZWJHUFVFeHQuaCIKIAogbmFtZXNwYWNlIFdlYkdQ
VSB7CiAKLUJpbmRHcm91cDo6QmluZEdyb3VwKCkgPSBkZWZhdWx0Oworc3RhdGljIGJvb2wgYnVm
ZmVySXNQcmVzZW50KGNvbnN0IFdHUFVCaW5kR3JvdXBFbnRyeSYgZW50cnkpCit7CisgICAgcmV0
dXJuIGVudHJ5LmJ1ZmZlcjsKK30KKworc3RhdGljIGJvb2wgc2FtcGxlcklzUHJlc2VudChjb25z
dCBXR1BVQmluZEdyb3VwRW50cnkmIGVudHJ5KQoreworICAgIHJldHVybiBlbnRyeS5zYW1wbGVy
OworfQorCitzdGF0aWMgYm9vbCB0ZXh0dXJlVmlld0lzUHJlc2VudChjb25zdCBXR1BVQmluZEdy
b3VwRW50cnkmIGVudHJ5KQoreworICAgIHJldHVybiBlbnRyeS50ZXh0dXJlVmlldzsKK30KKwor
UmVmUHRyPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRH
cm91cERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKGRlc2NyaXB0b3ItPm5leHRJ
bkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGNvbnN0IEJpbmRHcm91cExh
eW91dCYgYmluZEdyb3VwTGF5b3V0ID0gZGVzY3JpcHRvci0+bGF5b3V0LT5iaW5kR3JvdXBMYXlv
dXQ7CisKKyAgICAvLyBGSVhNRTogRG9uJ3QgYWxsb2NhdGUgMyBuZXcgYnVmZmVycyBmb3IgZXZl
cnkgYmluZCBncm91cC4KKyAgICAvLyBJbiBmYWN0LCBkb24ndCBldmVuIGFsbG9jYXRlIGEgc2lu
Z2xlIG5ldyBidWZmZXIgZm9yIGV2ZXJ5IGJpbmQgZ3JvdXAuCisgICAgaWQgPE1UTEJ1ZmZlcj4g
dmVydGV4QXJndW1lbnRCdWZmZXIgPSBbbV9kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0aDpiaW5k
R3JvdXBMYXlvdXQuZW5jb2RlZExlbmd0aCgpIG9wdGlvbnM6TVRMUmVzb3VyY2VTdG9yYWdlTW9k
ZVNoYXJlZF07CisgICAgaWQgPE1UTEJ1ZmZlcj4gZnJhZ21lbnRBcmd1bWVudEJ1ZmZlciA9IFtt
X2RldmljZSBuZXdCdWZmZXJXaXRoTGVuZ3RoOmJpbmRHcm91cExheW91dC5lbmNvZGVkTGVuZ3Ro
KCkgb3B0aW9uczpNVExSZXNvdXJjZVN0b3JhZ2VNb2RlU2hhcmVkXTsKKyAgICBpZCA8TVRMQnVm
ZmVyPiBjb21wdXRlQXJndW1lbnRCdWZmZXIgPSBbbV9kZXZpY2UgbmV3QnVmZmVyV2l0aExlbmd0
aDpiaW5kR3JvdXBMYXlvdXQuZW5jb2RlZExlbmd0aCgpIG9wdGlvbnM6TVRMUmVzb3VyY2VTdG9y
YWdlTW9kZVNoYXJlZF07CisgICAgaWYgKCF2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciB8fCAhZnJhZ21l
bnRBcmd1bWVudEJ1ZmZlciB8fCAhY29tcHV0ZUFyZ3VtZW50QnVmZmVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gbGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJp
bmc6ZGVzY3JpcHRvci0+bGFiZWwgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAg
IHZlcnRleEFyZ3VtZW50QnVmZmVyLmxhYmVsID0gbGFiZWw7CisgICAgZnJhZ21lbnRBcmd1bWVu
dEJ1ZmZlci5sYWJlbCA9IGxhYmVsOworICAgIGNvbXB1dGVBcmd1bWVudEJ1ZmZlci5sYWJlbCA9
IGxhYmVsOworCisgICAgaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4QXJndW1lbnRFbmNv
ZGVyID0gYmluZEdyb3VwTGF5b3V0LnZlcnRleEFyZ3VtZW50RW5jb2RlcigpOworICAgIGlkIDxN
VExBcmd1bWVudEVuY29kZXI+IGZyYWdtZW50QXJndW1lbnRFbmNvZGVyID0gYmluZEdyb3VwTGF5
b3V0LmZyYWdtZW50QXJndW1lbnRFbmNvZGVyKCk7CisgICAgaWQgPE1UTEFyZ3VtZW50RW5jb2Rl
cj4gY29tcHV0ZUFyZ3VtZW50RW5jb2RlciA9IGJpbmRHcm91cExheW91dC5jb21wdXRlQXJndW1l
bnRFbmNvZGVyKCk7CisgICAgW3ZlcnRleEFyZ3VtZW50RW5jb2RlciBzZXRBcmd1bWVudEJ1ZmZl
cjp2ZXJ0ZXhBcmd1bWVudEJ1ZmZlciBvZmZzZXQ6MF07CisgICAgW2ZyYWdtZW50QXJndW1lbnRF
bmNvZGVyIHNldEFyZ3VtZW50QnVmZmVyOmZyYWdtZW50QXJndW1lbnRCdWZmZXIgb2Zmc2V0OjBd
OworICAgIFtjb21wdXRlQXJndW1lbnRFbmNvZGVyIHNldEFyZ3VtZW50QnVmZmVyOmNvbXB1dGVB
cmd1bWVudEJ1ZmZlciBvZmZzZXQ6MF07CisKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwg
ZGVzY3JpcHRvci0+ZW50cnlDb3VudDsgKytpKSB7CisgICAgICAgIGNvbnN0IFdHUFVCaW5kR3Jv
dXBFbnRyeSYgZW50cnkgPSBkZXNjcmlwdG9yLT5lbnRyaWVzW2ldOworCisgICAgICAgIGlmIChl
bnRyeS5uZXh0SW5DaGFpbikKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IGJvb2wgYnVmZmVySXNQcmVzZW50ID0gV2ViR1BVOjpidWZmZXJJc1ByZXNlbnQoZW50cnkpOwor
ICAgICAgICBib29sIHNhbXBsZXJJc1ByZXNlbnQgPSBXZWJHUFU6OnNhbXBsZXJJc1ByZXNlbnQo
ZW50cnkpOworICAgICAgICBib29sIHRleHR1cmVWaWV3SXNQcmVzZW50ID0gV2ViR1BVOjp0ZXh0
dXJlVmlld0lzUHJlc2VudChlbnRyeSk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGJ1
ZmZlcklzUHJlc2VudCkgKyBzdGF0aWNfY2FzdDxpbnQ+KHNhbXBsZXJJc1ByZXNlbnQpICsgc3Rh
dGljX2Nhc3Q8aW50Pih0ZXh0dXJlVmlld0lzUHJlc2VudCkgPiAxKQorICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICAgICAgaWYgKGJ1ZmZlcklzUHJlc2VudCkgeworICAgICAgICAg
ICAgaWQgPE1UTEJ1ZmZlcj4gYnVmZmVyID0gZW50cnkuYnVmZmVyLT5idWZmZXItPmJ1ZmZlcigp
OworICAgICAgICAgICAgW3ZlcnRleEFyZ3VtZW50RW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9m
ZnNldDplbnRyeS5vZmZzZXQgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKKyAgICAgICAgICAgIFtm
cmFnbWVudEFyZ3VtZW50RW5jb2RlciBzZXRCdWZmZXI6YnVmZmVyIG9mZnNldDplbnRyeS5vZmZz
ZXQgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKKyAgICAgICAgICAgIFtjb21wdXRlQXJndW1lbnRF
bmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0OmVudHJ5Lm9mZnNldCBhdEluZGV4OmVudHJ5
LmJpbmRpbmddOworICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZXJJc1ByZXNlbnQpIHsKKyAgICAg
ICAgICAgIGlkIDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXIgPSBlbnRyeS5zYW1wbGVyLT5zYW1w
bGVyLT5zYW1wbGVyU3RhdGUoKTsKKyAgICAgICAgICAgIFt2ZXJ0ZXhBcmd1bWVudEVuY29kZXIg
c2V0U2FtcGxlclN0YXRlOnNhbXBsZXIgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKKyAgICAgICAg
ICAgIFtmcmFnbWVudEFyZ3VtZW50RW5jb2RlciBzZXRTYW1wbGVyU3RhdGU6c2FtcGxlciBhdElu
ZGV4OmVudHJ5LmJpbmRpbmddOworICAgICAgICAgICAgW2NvbXB1dGVBcmd1bWVudEVuY29kZXIg
c2V0U2FtcGxlclN0YXRlOnNhbXBsZXIgYXRJbmRleDplbnRyeS5iaW5kaW5nXTsKKyAgICAgICAg
fSBlbHNlIGlmICh0ZXh0dXJlVmlld0lzUHJlc2VudCkgeworICAgICAgICAgICAgaWQgPE1UTFRl
eHR1cmU+IHRleHR1cmUgPSBlbnRyeS50ZXh0dXJlVmlldy0+dGV4dHVyZVZpZXctPnRleHR1cmUo
KTsKKyAgICAgICAgICAgIFt2ZXJ0ZXhBcmd1bWVudEVuY29kZXIgc2V0VGV4dHVyZTp0ZXh0dXJl
IGF0SW5kZXg6ZW50cnkuYmluZGluZ107CisgICAgICAgICAgICBbZnJhZ21lbnRBcmd1bWVudEVu
Y29kZXIgc2V0VGV4dHVyZTp0ZXh0dXJlIGF0SW5kZXg6ZW50cnkuYmluZGluZ107CisgICAgICAg
ICAgICBbY29tcHV0ZUFyZ3VtZW50RW5jb2RlciBzZXRUZXh0dXJlOnRleHR1cmUgYXRJbmRleDpl
bnRyeS5iaW5kaW5nXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gQmluZEdyb3VwOjpjcmVhdGUodmVydGV4QXJndW1lbnRCdWZmZXIsIGZy
YWdtZW50QXJndW1lbnRCdWZmZXIsIGNvbXB1dGVBcmd1bWVudEJ1ZmZlcik7Cit9CisKK0JpbmRH
cm91cDo6QmluZEdyb3VwKGlkIDxNVExCdWZmZXI+IHZlcnRleEFyZ3VtZW50QnVmZmVyLCBpZCA8
TVRMQnVmZmVyPiBmcmFnbWVudEFyZ3VtZW50QnVmZmVyLCBpZCA8TVRMQnVmZmVyPiBjb21wdXRl
QXJndW1lbnRCdWZmZXIpCisgICAgOiBtX3ZlcnRleEFyZ3VtZW50QnVmZmVyKHZlcnRleEFyZ3Vt
ZW50QnVmZmVyKQorICAgICwgbV9mcmFnbWVudEFyZ3VtZW50QnVmZmVyKGZyYWdtZW50QXJndW1l
bnRCdWZmZXIpCisgICAgLCBtX2NvbXB1dGVBcmd1bWVudEJ1ZmZlcihjb21wdXRlQXJndW1lbnRC
dWZmZXIpCit7Cit9CiAKIEJpbmRHcm91cDo6fkJpbmRHcm91cCgpID0gZGVmYXVsdDsKIAogdm9p
ZCBCaW5kR3JvdXA6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgYXV0byBsYWJlbFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q1N0cmluZzpsYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgbV92ZXJ0
ZXhBcmd1bWVudEJ1ZmZlci5sYWJlbCA9IGxhYmVsU3RyaW5nOworICAgIG1fZnJhZ21lbnRBcmd1
bWVudEJ1ZmZlci5sYWJlbCA9IGxhYmVsU3RyaW5nOworICAgIG1fY29tcHV0ZUFyZ3VtZW50QnVm
ZmVyLmxhYmVsID0gbGFiZWxTdHJpbmc7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdy
b3VwTGF5b3V0LmgKaW5kZXggYzQ0MDI0ZTQ3ODM4ZWI0ZjYyZThjZDYwOWRmM2Q0ZmU3N2JiYzRk
Yi4uMDA1NDZkY2Y4ZGRhZjFjYTBhZmZlYmFjZTIxYzYzODliMjQ0OGQxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmgKQEAgLTM1LDE3ICszNSwyNyBAQCBuYW1lc3BhY2Ug
V2ViR1BVIHsKIGNsYXNzIEJpbmRHcm91cExheW91dCA6IHB1YmxpYyBSZWZDb3VudGVkPEJpbmRH
cm91cExheW91dD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8QmluZEdyb3VwTGF5b3V0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8Qmlu
ZEdyb3VwTGF5b3V0PiBjcmVhdGUoaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4QXJndW1l
bnRFbmNvZGVyLCBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50RW5jb2Rl
ciwgaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJpbmRHcm91cExheW91dCgpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmluZEdyb3VwTGF5b3V0KHZlcnRleEFyZ3VtZW50RW5j
b2RlciwgZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGNvbXB1dGVBcmd1bWVudEVuY29kZXIpKTsK
ICAgICB9CiAKICAgICB+QmluZEdyb3VwTGF5b3V0KCk7CiAKICAgICB2b2lkIHNldExhYmVsKGNv
bnN0IGNoYXIqKTsKIAorICAgIE5TVUludGVnZXIgZW5jb2RlZExlbmd0aCgpIGNvbnN0OworCisg
ICAgaWQgPE1UTEFyZ3VtZW50RW5jb2Rlcj4gdmVydGV4QXJndW1lbnRFbmNvZGVyKCkgY29uc3Qg
eyByZXR1cm4gbV92ZXJ0ZXhBcmd1bWVudEVuY29kZXI7IH0KKyAgICBpZCA8TVRMQXJndW1lbnRF
bmNvZGVyPiBmcmFnbWVudEFyZ3VtZW50RW5jb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhZ21l
bnRBcmd1bWVudEVuY29kZXI7IH0KKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiBjb21wdXRl
QXJndW1lbnRFbmNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb21wdXRlQXJndW1lbnRFbmNvZGVy
OyB9CisKIHByaXZhdGU6Ci0gICAgQmluZEdyb3VwTGF5b3V0KCk7CisgICAgQmluZEdyb3VwTGF5
b3V0KGlkIDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaWQgPE1U
TEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkIDxNVExBcmd1bWVu
dEVuY29kZXI+IGNvbXB1dGVBcmd1bWVudEVuY29kZXIpOworCisgICAgaWQgPE1UTEFyZ3VtZW50
RW5jb2Rlcj4gbV92ZXJ0ZXhBcmd1bWVudEVuY29kZXIgeyBuaWwgfTsKKyAgICBpZCA8TVRMQXJn
dW1lbnRFbmNvZGVyPiBtX2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyIHsgbmlsIH07CisgICAgaWQg
PE1UTEFyZ3VtZW50RW5jb2Rlcj4gbV9jb21wdXRlQXJndW1lbnRFbmNvZGVyIHsgbmlsIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cExheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExh
eW91dC5tbQppbmRleCBiMzczNDg4YWY4NTEzOTVmMTFhMDg2M2NiMzg1NGUwZTUzYjU0M2M0Li5k
NmJkMmZkOWQzZTVkZDc4MWVlZWU0MmRjMjkwYmM5NWM5MTgyM2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCkBAIC0yNiwxNyArMjYsMjE3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgogCisjaW1wb3J0ICJEZXZpY2Uu
aCIKICNpbXBvcnQgIldlYkdQVUV4dC5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotQmluZEdy
b3VwTGF5b3V0OjpCaW5kR3JvdXBMYXlvdXQoKSA9IGRlZmF1bHQ7CitzdGF0aWMgYm9vbCBpc1By
ZXNlbnQoY29uc3QgV0dQVUJ1ZmZlckJpbmRpbmdMYXlvdXQmIGJ1ZmZlcikKK3sKKyAgICByZXR1
cm4gYnVmZmVyLnR5cGUgIT0gV0dQVUJ1ZmZlckJpbmRpbmdUeXBlX1VuZGVmaW5lZDsKK30KKwor
c3RhdGljIE1UTEFyZ3VtZW50RGVzY3JpcHRvciAqY3JlYXRlQXJndW1lbnREZXNjcmlwdG9yKGNv
bnN0IFdHUFVCdWZmZXJCaW5kaW5nTGF5b3V0JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5u
ZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gZGVzY3JpcHRvciA9
IFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XTsKKyAgICBkZXNjcmlwdG9yLmRhdGFUeXBlID0g
TVRMRGF0YVR5cGVQb2ludGVyOworICAgIC8vIEZJWE1FOiBIYW5kbGUgaGFzRHluYW1pY09mZnNl
dC4KKyAgICAvLyBGSVhNRTogSGFuZGxlIG1pbkJpbmRpbmdTaXplLgorICAgIHN3aXRjaCAoYnVm
ZmVyLnR5cGUpIHsKKyAgICBjYXNlIFdHUFVCdWZmZXJCaW5kaW5nVHlwZV9Vbmlmb3JtOgorICAg
IGNhc2UgV0dQVUJ1ZmZlckJpbmRpbmdUeXBlX1JlYWRPbmx5U3RvcmFnZToKKyAgICAgICAgZGVz
Y3JpcHRvci5hY2Nlc3MgPSBNVExBcmd1bWVudEFjY2Vzc1JlYWRPbmx5OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdHUFVCdWZmZXJCaW5kaW5nVHlwZV9TdG9yYWdlOgorICAgICAgICBkZXNj
cmlwdG9yLmFjY2VzcyA9IE1UTEFyZ3VtZW50QWNjZXNzUmVhZFdyaXRlOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICByZXR1cm4g
ZGVzY3JpcHRvcjsKK30KKworc3RhdGljIGJvb2wgaXNQcmVzZW50KGNvbnN0IFdHUFVTYW1wbGVy
QmluZGluZ0xheW91dCYgc2FtcGxlcikKK3sKKyAgICByZXR1cm4gc2FtcGxlci50eXBlICE9IFdH
UFVTYW1wbGVyQmluZGluZ1R5cGVfVW5kZWZpbmVkOworfQorCitzdGF0aWMgTVRMQXJndW1lbnRE
ZXNjcmlwdG9yICpjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IoY29uc3QgV0dQVVNhbXBsZXJCaW5k
aW5nTGF5b3V0JiBzYW1wbGVyKQoreworICAgIGlmIChzYW1wbGVyLm5leHRJbkNoYWluKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgVU5VU0VEX1BBUkFNKHNhbXBsZXIpOworICAgIGF1dG8g
ZGVzY3JpcHRvciA9IFtNVExBcmd1bWVudERlc2NyaXB0b3IgbmV3XTsKKyAgICBkZXNjcmlwdG9y
LmRhdGFUeXBlID0gTVRMRGF0YVR5cGVTYW1wbGVyOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KKyAgICByZXR1cm4gZGVzY3JpcHRvcjsKK30KKworc3RhdGljIGJvb2wgaXNQcmVzZW50
KGNvbnN0IFdHUFVUZXh0dXJlQmluZGluZ0xheW91dCYgdGV4dHVyZSkKK3sKKyAgICByZXR1cm4g
dGV4dHVyZS5zYW1wbGVUeXBlICE9IFdHUFVUZXh0dXJlU2FtcGxlVHlwZV9VbmRlZmluZWQKKyAg
ICAgICAgJiYgdGV4dHVyZS52aWV3RGltZW5zaW9uICE9IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lv
bl9VbmRlZmluZWQ7Cit9CisKK3N0YXRpYyBNVExBcmd1bWVudERlc2NyaXB0b3IgKmNyZWF0ZUFy
Z3VtZW50RGVzY3JpcHRvcihjb25zdCBXR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQmIHRleHR1cmUp
Cit7CisgICAgaWYgKHRleHR1cmUubmV4dEluQ2hhaW4pCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICBVTlVTRURfUEFSQU0odGV4dHVyZSk7CisgICAgYXV0byBkZXNjcmlwdG9yID0gW01UTEFy
Z3VtZW50RGVzY3JpcHRvciBuZXddOworICAgIGRlc2NyaXB0b3IuZGF0YVR5cGUgPSBNVExEYXRh
VHlwZVRleHR1cmU7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIHJldHVybiBk
ZXNjcmlwdG9yOworfQorCitzdGF0aWMgYm9vbCBpc1ByZXNlbnQoY29uc3QgV0dQVVN0b3JhZ2VU
ZXh0dXJlQmluZGluZ0xheW91dCYgc3RvcmFnZVRleHR1cmUpCit7CisgICAgcmV0dXJuIHN0b3Jh
Z2VUZXh0dXJlLmFjY2VzcyAhPSBXR1BVU3RvcmFnZVRleHR1cmVBY2Nlc3NfVW5kZWZpbmVkCisg
ICAgICAgICYmIHN0b3JhZ2VUZXh0dXJlLmZvcm1hdCAhPSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRl
ZmluZWQKKyAgICAgICAgJiYgc3RvcmFnZVRleHR1cmUudmlld0RpbWVuc2lvbiAhPSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOworfQorCitzdGF0aWMgTVRMQXJndW1lbnREZXNj
cmlwdG9yICpjcmVhdGVBcmd1bWVudERlc2NyaXB0b3IoY29uc3QgV0dQVVN0b3JhZ2VUZXh0dXJl
QmluZGluZ0xheW91dCYgc3RvcmFnZVRleHR1cmUpCit7CisgICAgaWYgKHN0b3JhZ2VUZXh0dXJl
Lm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVU5VU0VEX1BBUkFNKHN0
b3JhZ2VUZXh0dXJlKTsKKyAgICBhdXRvIGRlc2NyaXB0b3IgPSBbTVRMQXJndW1lbnREZXNjcmlw
dG9yIG5ld107CisgICAgZGVzY3JpcHRvci5kYXRhVHlwZSA9IE1UTERhdGFUeXBlVGV4dHVyZTsK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgcmV0dXJuIGRlc2NyaXB0b3I7Cit9
CisKK1JlZlB0cjxCaW5kR3JvdXBMYXlvdXQ+IERldmljZTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0
KGNvbnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQoreworICAg
IGlmIChkZXNjcmlwdG9yLT5uZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2NyaXB0b3IgKj4gKnZlcnRleEFyZ3Vt
ZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpkZXNjcmlwdG9yLT5lbnRy
eUNvdW50XTsKKyAgICBOU011dGFibGVBcnJheTxNVExBcmd1bWVudERlc2NyaXB0b3IgKj4gKmZy
YWdtZW50QXJndW1lbnRzID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmRlc2Ny
aXB0b3ItPmVudHJ5Q291bnRdOworICAgIE5TTXV0YWJsZUFycmF5PE1UTEFyZ3VtZW50RGVzY3Jp
cHRvciAqPiAqY29tcHV0ZUFyZ3VtZW50cyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTpkZXNjcmlwdG9yLT5lbnRyeUNvdW50XTsKKyAgICBpZiAoIXZlcnRleEFyZ3VtZW50cyB8
fCAhZnJhZ21lbnRBcmd1bWVudHMgfHwgIWNvbXB1dGVBcmd1bWVudHMpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3ItPmVu
dHJ5Q291bnQ7ICsraSkgeworICAgICAgICBjb25zdCBXR1BVQmluZEdyb3VwTGF5b3V0RW50cnkm
IGVudHJ5ID0gZGVzY3JpcHRvci0+ZW50cmllc1tpXTsKKyAgICAgICAgaWYgKGVudHJ5Lm5leHRJ
bkNoYWluKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZGljdGRlZi1ncHViaW5kZ3JvdXBsYXlvdXRlbnRy
eQorICAgICAgICAvLyAiT25seSBvbmUgW29mIGJ1ZmZlciwgc2FtcGxlciwgdGV4dHVyZSwgc3Rv
cmFnZVRleHR1cmUsIG9yIGV4dGVybmFsVGV4dHVyZV0gbWF5IGJlIGRlZmluZWQgZm9yIGFueSBn
aXZlbiBHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS4iCisKKyAgICAgICAgQVNTRVJUKGkgPT0gdmVy
dGV4QXJndW1lbnRzLmNvdW50KTsKKyAgICAgICAgQVNTRVJUKHZlcnRleEFyZ3VtZW50cy5jb3Vu
dCA9PSBmcmFnbWVudEFyZ3VtZW50cy5jb3VudCk7CisgICAgICAgIEFTU0VSVChmcmFnbWVudEFy
Z3VtZW50cy5jb3VudCA9PSBjb21wdXRlQXJndW1lbnRzLmNvdW50KTsKKworICAgICAgICBjb25z
dCBXR1BVQnVmZmVyQmluZGluZ0xheW91dCYgYnVmZmVyID0gZW50cnkuYnVmZmVyOworICAgICAg
ICBjb25zdCBXR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQmIHNhbXBsZXIgPSBlbnRyeS5zYW1wbGVy
OworICAgICAgICBjb25zdCBXR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQmIHRleHR1cmUgPSBlbnRy
eS50ZXh0dXJlOworICAgICAgICBjb25zdCBXR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
JiBzdG9yYWdlVGV4dHVyZSA9IGVudHJ5LnN0b3JhZ2VUZXh0dXJlOworCisgICAgICAgIE1UTEFy
Z3VtZW50RGVzY3JpcHRvciAqZGVzY3JpcHRvciA9IG5pbDsKKworICAgICAgICBpZiAoaXNQcmVz
ZW50KGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIGlmIChpICE9IHZlcnRleEFyZ3VtZW50cy5jb3Vu
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICAgICAgZGVzY3Jp
cHRvciA9IGNyZWF0ZUFyZ3VtZW50RGVzY3JpcHRvcihidWZmZXIpOworICAgICAgICAgICAgaWYg
KCFkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKGlzUHJlc2VudChzYW1wbGVyKSkgeworICAgICAgICAgICAgaWYgKGkg
IT0gdmVydGV4QXJndW1lbnRzLmNvdW50KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgICAgICAgICBkZXNjcmlwdG9yID0gY3JlYXRlQXJndW1lbnREZXNjcmlwdG9yKHNh
bXBsZXIpOworICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzUHJlc2VudCh0ZXh0dXJl
KSkgeworICAgICAgICAgICAgaWYgKGkgIT0gdmVydGV4QXJndW1lbnRzLmNvdW50KQorICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgICAgICBkZXNjcmlwdG9yID0gY3Jl
YXRlQXJndW1lbnREZXNjcmlwdG9yKHRleHR1cmUpOworICAgICAgICAgICAgaWYgKCFkZXNjcmlw
dG9yKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGlzUHJlc2VudChzdG9yYWdlVGV4dHVyZSkpIHsKKyAgICAgICAgICAgIGlmIChpICE9
IHZlcnRleEFyZ3VtZW50cy5jb3VudCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgICAgICAgICAgZGVzY3JpcHRvciA9IGNyZWF0ZUFyZ3VtZW50RGVzY3JpcHRvcihzdG9y
YWdlVGV4dHVyZSk7CisgICAgICAgICAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRTogVGhpcyBu
ZWVkcyBjb29yZGluYXRpb24gd2l0aCB0aGUgc2hhZGVyIGNvbXBpbGVyLgorICAgICAgICBkZXNj
cmlwdG9yLmluZGV4ID0gaTsKKworICAgICAgICBNVExBcmd1bWVudERlc2NyaXB0b3IgKnZlcnRl
eERlc2NyaXB0b3IgPSBkZXNjcmlwdG9yOworICAgICAgICBNVExBcmd1bWVudERlc2NyaXB0b3Ig
KmZyYWdtZW50RGVzY3JpcHRvciA9IFtkZXNjcmlwdG9yIGNvcHldOworICAgICAgICBNVExBcmd1
bWVudERlc2NyaXB0b3IgKmNvbXB1dGVEZXNjcmlwdG9yID0gW2Rlc2NyaXB0b3IgY29weV07Cisg
ICAgICAgIGlmICghZnJhZ21lbnREZXNjcmlwdG9yIHx8ICFjb21wdXRlRGVzY3JpcHRvcikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIGlmICghKGVudHJ5LnZpc2liaWxp
dHkgJiBXR1BVU2hhZGVyU3RhZ2VfVmVydGV4KSkKKyAgICAgICAgICAgIHZlcnRleERlc2NyaXB0
b3IuYWNjZXNzID0gTVRMQXJndW1lbnRBY2Nlc3NSZWFkT25seTsKKyAgICAgICAgaWYgKCEoZW50
cnkudmlzaWJpbGl0eSAmIFdHUFVTaGFkZXJTdGFnZV9GcmFnbWVudCkpCisgICAgICAgICAgICBm
cmFnbWVudERlc2NyaXB0b3IuYWNjZXNzID0gTVRMQXJndW1lbnRBY2Nlc3NSZWFkT25seTsKKyAg
ICAgICAgaWYgKCEoZW50cnkudmlzaWJpbGl0eSAmIFdHUFVTaGFkZXJTdGFnZV9Db21wdXRlKSkK
KyAgICAgICAgICAgIGNvbXB1dGVEZXNjcmlwdG9yLmFjY2VzcyA9IE1UTEFyZ3VtZW50QWNjZXNz
UmVhZE9ubHk7CisKKyAgICAgICAgW3ZlcnRleEFyZ3VtZW50cyBhZGRPYmplY3Q6dmVydGV4RGVz
Y3JpcHRvcl07CisgICAgICAgIFtmcmFnbWVudEFyZ3VtZW50cyBhZGRPYmplY3Q6ZnJhZ21lbnRE
ZXNjcmlwdG9yXTsKKyAgICAgICAgW2NvbXB1dGVBcmd1bWVudHMgYWRkT2JqZWN0OmNvbXB1dGVE
ZXNjcmlwdG9yXTsKKyAgICB9CisKKyAgICBpZCA8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhB
cmd1bWVudEVuY29kZXIgPSBbbV9kZXZpY2UgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3VtZW50
czp2ZXJ0ZXhBcmd1bWVudHNdOworICAgIGlkIDxNVExBcmd1bWVudEVuY29kZXI+IGZyYWdtZW50
QXJndW1lbnRFbmNvZGVyID0gW21fZGV2aWNlIG5ld0FyZ3VtZW50RW5jb2RlcldpdGhBcmd1bWVu
dHM6ZnJhZ21lbnRBcmd1bWVudHNdOworICAgIGlkIDxNVExBcmd1bWVudEVuY29kZXI+IGNvbXB1
dGVBcmd1bWVudEVuY29kZXIgPSBbbV9kZXZpY2UgbmV3QXJndW1lbnRFbmNvZGVyV2l0aEFyZ3Vt
ZW50czpjb21wdXRlQXJndW1lbnRzXTsKKyAgICBpZiAoIXZlcnRleEFyZ3VtZW50RW5jb2RlciB8
fCAhZnJhZ21lbnRBcmd1bWVudEVuY29kZXIgfHwgIWNvbXB1dGVBcmd1bWVudEVuY29kZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBsYWJlbCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ1N0cmluZzpkZXNjcmlwdG9yLT5sYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisgICAgdmVydGV4QXJndW1lbnRFbmNvZGVyLmxhYmVsID0gbGFiZWw7CisgICAgZnJh
Z21lbnRBcmd1bWVudEVuY29kZXIubGFiZWwgPSBsYWJlbDsKKyAgICBjb21wdXRlQXJndW1lbnRF
bmNvZGVyLmxhYmVsID0gbGFiZWw7CisKKyAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVh
dGUodmVydGV4QXJndW1lbnRFbmNvZGVyLCBmcmFnbWVudEFyZ3VtZW50RW5jb2RlciwgY29tcHV0
ZUFyZ3VtZW50RW5jb2Rlcik7Cit9CisKK0JpbmRHcm91cExheW91dDo6QmluZEdyb3VwTGF5b3V0
KGlkIDxNVExBcmd1bWVudEVuY29kZXI+IHZlcnRleEFyZ3VtZW50RW5jb2RlciwgaWQgPE1UTEFy
Z3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkIDxNVExBcmd1bWVudEVu
Y29kZXI+IGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCisgICAgOiBtX3ZlcnRleEFyZ3VtZW50RW5j
b2Rlcih2ZXJ0ZXhBcmd1bWVudEVuY29kZXIpCisgICAgLCBtX2ZyYWdtZW50QXJndW1lbnRFbmNv
ZGVyKGZyYWdtZW50QXJndW1lbnRFbmNvZGVyKQorICAgICwgbV9jb21wdXRlQXJndW1lbnRFbmNv
ZGVyKGNvbXB1dGVBcmd1bWVudEVuY29kZXIpCit7Cit9CiAKIEJpbmRHcm91cExheW91dDo6fkJp
bmRHcm91cExheW91dCgpID0gZGVmYXVsdDsKIAogdm9pZCBCaW5kR3JvdXBMYXlvdXQ6OnNldExh
YmVsKGNvbnN0IGNoYXIqIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAg
YXV0byBsYWJlbFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpsYWJlbCBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgbV92ZXJ0ZXhBcmd1bWVudEVuY29kZXIu
bGFiZWwgPSBsYWJlbFN0cmluZzsKKyAgICBtX2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyLmxhYmVs
ID0gbGFiZWxTdHJpbmc7CisgICAgbV9jb21wdXRlQXJndW1lbnRFbmNvZGVyLmxhYmVsID0gbGFi
ZWxTdHJpbmc7Cit9CisKK05TVUludGVnZXIgQmluZEdyb3VwTGF5b3V0OjplbmNvZGVkTGVuZ3Ro
KCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdmVydGV4QXJndW1lbnRFbmNvZGVyLmVu
Y29kZWRMZW5ndGg7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBtX2ZyYWdtZW50QXJndW1lbnRFbmNv
ZGVyLmVuY29kZWRMZW5ndGgpOworICAgIEFTU0VSVChyZXN1bHQgPT0gbV9jb21wdXRlQXJndW1l
bnRFbmNvZGVyLmVuY29kZWRMZW5ndGgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQnVmZmVyLmgKaW5kZXggYzM0YjdjYzA3ZTBlYzEwZDBmODcxNzY0MjIyNzZjMzdjYzEz
NTQ3My4uNjg5NzEyNjdlYTE3YzU3NmE2NmYxNDQzOTI0ZjdlMzhmMmI4MmIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQnVmZmVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBjbGFzcyBC
dWZmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxCdWZmZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKCkKKyAgICBz
dGF0aWMgUmVmPEJ1ZmZlcj4gY3JlYXRlKGlkIDxNVExCdWZmZXI+IGJ1ZmZlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJ1ZmZlcigpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQnVmZmVyKGJ1ZmZlcikpOwogICAgIH0KIAogICAgIH5CdWZmZXIoKTsKQEAg
LTUwLDggKzUwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVubWFwKCk7CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CiAKKyAgICBpZCA8TVRMQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcjsgfQorCiBwcml2YXRlOgotICAgIEJ1ZmZlcigpOworICAgIEJ1ZmZl
cihpZCA8TVRMQnVmZmVyPik7CisKKyAgICBpZCA8TVRMQnVmZmVyPiBtX2J1ZmZlciB7IG5pbCB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXgg
OWY2Mzk3YTkzMDlhZTYwMDAxZjBjZWQ4M2I0YjBkZDg0MGZiNzc3MC4uOWI5NmRhM2YyMGU4Njhm
Njc0YzQzMDdjN2ZiMTk2Y2RmOWFjYzE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjYs
MTEgKzI2LDMxIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkJ1ZmZlci5oIgogCisj
aW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIldlYkdQVUV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
R1BVIHsKIAotQnVmZmVyOjpCdWZmZXIoKSA9IGRlZmF1bHQ7CitSZWZQdHI8QnVmZmVyPiBEZXZp
Y2U6OmNyZWF0ZUJ1ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
K3sKKyAgICBpZiAoZGVzY3JpcHRvci0+bmV4dEluQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGUgdXNhZ2UgZmxhZ3MgYW5kIG1hcHBl
ZEF0Q3JlYXRpb24uCisgICAgaWQgPE1UTEJ1ZmZlcj4gYnVmZmVyID0gW21fZGV2aWNlIG5ld0J1
ZmZlcldpdGhMZW5ndGg6ZGVzY3JpcHRvci0+c2l6ZSBvcHRpb25zOk1UTFJlc291cmNlU3RvcmFn
ZU1vZGVTaGFyZWRdOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGJ1ZmZlci5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpkZXNjcmlw
dG9yLT5sYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisKKyAgICByZXR1cm4g
QnVmZmVyOjpjcmVhdGUoYnVmZmVyKTsKK30KKworQnVmZmVyOjpCdWZmZXIoaWQgPE1UTEJ1ZmZl
cj4gYnVmZmVyKQorICAgIDogbV9idWZmZXIoYnVmZmVyKQoreworICAgIFVOVVNFRF9WQVJJQUJM
RShtX2J1ZmZlcik7Cit9CiAKIEJ1ZmZlcjo6fkJ1ZmZlcigpID0gZGVmYXVsdDsKIApAQCAtNjYs
NyArODYsNyBAQCB2b2lkIEJ1ZmZlcjo6dW5tYXAoKQogCiB2b2lkIEJ1ZmZlcjo6c2V0TGFiZWwo
Y29uc3QgY2hhciogbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX2J1
ZmZlci5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ1N0cmluZzpsYWJlbCBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCBkZDVjYzNiMzMwYTAyNjIwOTZmNTQx
ODM0ZjZjYzZmN2UyYjRiNGI3Li40ODhhZjNlYjkxODMwMmYxZTcwYzc3MzJjOTAzYjA3Y2QyY2Fj
MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjksMTIgKzI5
LDE5IEBACiAjaW1wb3J0ICJCdWZmZXIuaCIKICNpbXBvcnQgIkNvbW1hbmRCdWZmZXIuaCIKICNp
bXBvcnQgIkNvbXB1dGVQYXNzRW5jb2Rlci5oIgorI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0
ICJRdWVyeVNldC5oIgogI2ltcG9ydCAiUmVuZGVyUGFzc0VuY29kZXIuaCIKICNpbXBvcnQgIldl
YkdQVUV4dC5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorUmVmPENvbW1hbmRFbmNvZGVyPiBE
ZXZpY2U6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAg
IHJldHVybiBDb21tYW5kRW5jb2Rlcjo6Y3JlYXRlKCk7Cit9CisKIENvbW1hbmRFbmNvZGVyOjpD
b21tYW5kRW5jb2RlcigpID0gZGVmYXVsdDsKIAogQ29tbWFuZEVuY29kZXI6On5Db21tYW5kRW5j
b2RlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1
dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKaW5k
ZXggZDU5YjFiMzk5ODJkOGI2YTg3ZGMxMzQ5Mzg3ODY5NTE5YjMzMWFmNS4uOWE4MDM5NGQ4YWJi
YTgwMjJlMmFjYmFhZDhiYzIyZjYxNDllZTA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0
ZVBpcGVsaW5lLmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgQmluZEdyb3VwTGF5b3V0OwogY2xh
c3MgQ29tcHV0ZVBpcGVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8Q29tcHV0ZVBpcGVsaW5lPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxD
b21wdXRlUGlwZWxpbmU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxDb21wdXRlUGlwZWxpbmU+
IGNyZWF0ZShpZCA8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNvbXB1dGVQaXBlbGluZVN0YXRl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29tcHV0ZVBpcGVsaW5lKCkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb21wdXRlUGlwZWxpbmUoY29tcHV0ZVBp
cGVsaW5lU3RhdGUpKTsKICAgICB9CiAKICAgICB+Q29tcHV0ZVBpcGVsaW5lKCk7CkBAIC00Nyw4
ICs0NywxMiBAQCBwdWJsaWM6CiAgICAgUmVmPEJpbmRHcm91cExheW91dD4gZ2V0QmluZEdyb3Vw
TGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hh
ciopOwogCisgICAgaWQgPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBjb21wdXRlUGlwZWxpbmVT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZVBpcGVsaW5lU3RhdGU7IH0KKwogcHJpdmF0
ZToKLSAgICBDb21wdXRlUGlwZWxpbmUoKTsKKyAgICBDb21wdXRlUGlwZWxpbmUoaWQgPE1UTENv
bXB1dGVQaXBlbGluZVN0YXRlPik7CisKKyAgICBpZCA8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+
IG1fY29tcHV0ZVBpcGVsaW5lU3RhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQppbmRleCA5NmQ5ZDVmNDU2ZjFmNzg5
MDVjZjlkNTk3MDhlZGRmZjMyOGZmMTI1Li5hNjQ4MWVmZTBjZTVhMWI5MmI4ZTlmNjg3MmEyNDY5
M2I0MmM1Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxp
bmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCkBAIC0y
NiwyNSArMjYsMTc0IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkNvbXB1dGVQaXBl
bGluZS5oIgogCi0KICNpbXBvcnQgIkJpbmRHcm91cExheW91dC5oIgorI2ltcG9ydCAiRGV2aWNl
LmgiCisjaW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgorI2ltcG9ydCAiU2hhZGVyTW9kdWxlLmgi
CiAjaW1wb3J0ICJXZWJHUFVFeHQuaCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLUNvbXB1dGVQ
aXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKCkgPSBkZWZhdWx0Oworc3RydWN0IExpYnJhcnlDcmVh
dGlvblJlc3VsdCB7CisgICAgaWQgPE1UTExpYnJhcnk+IGxpYnJhcnk7CisgICAgV0dTTDo6UmVm
bGVjdGlvbjo6RW50cnlQb2ludEluZm9ybWF0aW9uIGVudHJ5UG9pbnRJbmZvcm1hdGlvbjsgLy8g
RklYTUU6IFRoaXMgaXMgYmlnLiBEb24ndCBjb3B5IHRoaXMgYXJvdW5kLgorfTsKKworc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8TGlicmFyeUNyZWF0aW9uUmVzdWx0PiBjcmVhdGVMaWJyYXJ5KGlkIDxN
VExEZXZpY2U+IGRldmljZSwgY29uc3QgU2hhZGVyTW9kdWxlJiBzaGFkZXJNb2R1bGUsIGNvbnN0
IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCwgY29uc3QgU3RyaW5nJiBlbnRyeVBvaW50
LCBOU1N0cmluZyAqbGFiZWwpCit7CisgICAgaWYgKHNoYWRlck1vZHVsZS5saWJyYXJ5KCkpIHsK
KyAgICAgICAgaWYgKGNvbnN0IGF1dG8qIHBpcGVsaW5lTGF5b3V0SGludCA9IHNoYWRlck1vZHVs
ZS5waXBlbGluZUxheW91dEhpbnQoZW50cnlQb2ludCkpIHsKKyAgICAgICAgICAgIGlmICgqcGlw
ZWxpbmVMYXlvdXRIaW50ID09IHBpcGVsaW5lTGF5b3V0KSB7CisgICAgICAgICAgICAgICAgaWYg
KGNvbnN0IGF1dG8qIGVudHJ5UG9pbnRJbmZvcm1hdGlvbiA9IHNoYWRlck1vZHVsZS5lbnRyeVBv
aW50SW5mb3JtYXRpb24oZW50cnlQb2ludCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
IHsgc2hhZGVyTW9kdWxlLmxpYnJhcnkoKSwgKmVudHJ5UG9pbnRJbmZvcm1hdGlvbiB9IH07Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBhdXRvKiBhc3QgPSBz
aGFkZXJNb2R1bGUuYXN0KCk7CisgICAgaWYgKCFhc3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBhdXRvIHByZXBhcmVSZXN1bHQgPSBXR1NMOjpwcmVwYXJlKCphc3QsIGVu
dHJ5UG9pbnQsIFNoYWRlck1vZHVsZTo6Y29udmVydFBpcGVsaW5lTGF5b3V0KHBpcGVsaW5lTGF5
b3V0KSk7CisKKyAgICBhdXRvIGxpYnJhcnkgPSBTaGFkZXJNb2R1bGU6OmNyZWF0ZUxpYnJhcnko
ZGV2aWNlLCBwcmVwYXJlUmVzdWx0Lm1zbCwgbGFiZWwpOworCisgICAgYXV0byBpdGVyYXRvciA9
IHByZXBhcmVSZXN1bHQuZW50cnlQb2ludHMuZmluZChlbnRyeVBvaW50KTsKKyAgICBpZiAoaXRl
cmF0b3IgPT0gcHJlcGFyZVJlc3VsdC5lbnRyeVBvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBjb25zdCBhdXRvJiBlbnRyeVBvaW50SW5mb3JtYXRpb24gPSBp
dGVyYXRvci0+dmFsdWU7CisKKyAgICByZXR1cm4geyB7IGxpYnJhcnksIGVudHJ5UG9pbnRJbmZv
cm1hdGlvbiB9IH07Cit9CisKK3N0YXRpYyBNVExGdW5jdGlvbkNvbnN0YW50VmFsdWVzICpjcmVh
dGVDb25zdGFudFZhbHVlcyh1aW50MzJfdCBjb25zdGFudENvdW50LCBjb25zdCBXR1BVQ29uc3Rh
bnRFbnRyeSogY29uc3RhbnRzLCBjb25zdCBXR1NMOjpSZWZsZWN0aW9uOjpFbnRyeVBvaW50SW5m
b3JtYXRpb24mIGVudHJ5UG9pbnRJbmZvcm1hdGlvbikKK3sKKyAgICBhdXRvIGNvbnN0YW50VmFs
dWVzID0gW01UTEZ1bmN0aW9uQ29uc3RhbnRWYWx1ZXMgbmV3XTsKKyAgICBmb3IgKHVpbnQzMl90
IGkgPSAwOyBpIDwgY29uc3RhbnRDb3VudDsgKytpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIGVu
dHJ5ID0gY29uc3RhbnRzW2ldOworICAgICAgICBhdXRvIG5hbWVJdGVyYXRvciA9IGVudHJ5UG9p
bnRJbmZvcm1hdGlvbi5zcGVjaWFsaXphdGlvbkNvbnN0YW50SW5kaWNlcy5maW5kKGVudHJ5Lmtl
eSk7CisgICAgICAgIGlmIChuYW1lSXRlcmF0b3IgPT0gZW50cnlQb2ludEluZm9ybWF0aW9uLnNw
ZWNpYWxpemF0aW9uQ29uc3RhbnRJbmRpY2VzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGF1dG8gc3BlY2lhbGl6YXRpb25Db25zdGFudEluZGV4ID0gbmFtZUl0
ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgYXV0byBpbmRleEl0ZXJhdG9yID0gZW50cnlQb2ludElu
Zm9ybWF0aW9uLnNwZWNpYWxpemF0aW9uQ29uc3RhbnRzLmZpbmQoc3BlY2lhbGl6YXRpb25Db25z
dGFudEluZGV4KTsKKyAgICAgICAgaWYgKGluZGV4SXRlcmF0b3IgPT0gZW50cnlQb2ludEluZm9y
bWF0aW9uLnNwZWNpYWxpemF0aW9uQ29uc3RhbnRzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIGNvbnN0IGF1dG8mIHNwZWNpYWxpemF0aW9uQ29uc3RhbnQgPSBp
bmRleEl0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlvbkNvbnN0
YW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBXR1NMOjpSZWZsZWN0aW9uOjpTcGVjaWFsaXphdGlv
bkNvbnN0YW50VHlwZTo6Qm9vbGVhbjogeworICAgICAgICAgICAgYm9vbCB2YWx1ZSA9IGVudHJ5
LnZhbHVlOworICAgICAgICAgICAgW2NvbnN0YW50VmFsdWVzIHNldENvbnN0YW50VmFsdWU6JnZh
bHVlIHR5cGU6TVRMRGF0YVR5cGVCb29sIHdpdGhOYW1lOnNwZWNpYWxpemF0aW9uQ29uc3RhbnQu
bWFuZ2xlZE5hbWVdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBXR1NMOjpSZWZsZWN0aW9uOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50VHlwZTo6RmxvYXQ6IHsK
KyAgICAgICAgICAgIGZsb2F0IHZhbHVlID0gZW50cnkudmFsdWU7CisgICAgICAgICAgICBbY29u
c3RhbnRWYWx1ZXMgc2V0Q29uc3RhbnRWYWx1ZTomdmFsdWUgdHlwZTpNVExEYXRhVHlwZUZsb2F0
IHdpdGhOYW1lOnNwZWNpYWxpemF0aW9uQ29uc3RhbnQubWFuZ2xlZE5hbWVdOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXR1NMOjpSZWZsZWN0aW9uOjpTcGVj
aWFsaXphdGlvbkNvbnN0YW50VHlwZTo6SW50OiB7CisgICAgICAgICAgICBpbnQgdmFsdWUgPSBl
bnRyeS52YWx1ZTsKKyAgICAgICAgICAgIFtjb25zdGFudFZhbHVlcyBzZXRDb25zdGFudFZhbHVl
OiZ2YWx1ZSB0eXBlOk1UTERhdGFUeXBlSW50IHdpdGhOYW1lOnNwZWNpYWxpemF0aW9uQ29uc3Rh
bnQubWFuZ2xlZE5hbWVdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBXR1NMOjpSZWZsZWN0aW9uOjpTcGVjaWFsaXphdGlvbkNvbnN0YW50VHlwZTo6VW5zaWdu
ZWQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gZW50cnkudmFsdWU7CisgICAgICAg
ICAgICBbY29uc3RhbnRWYWx1ZXMgc2V0Q29uc3RhbnRWYWx1ZTomdmFsdWUgdHlwZTpNVExEYXRh
VHlwZVVJbnQgd2l0aE5hbWU6c3BlY2lhbGl6YXRpb25Db25zdGFudC5tYW5nbGVkTmFtZV07Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvbnN0YW50
VmFsdWVzOworfQorCitzdGF0aWMgaWQgPE1UTEZ1bmN0aW9uPiBjcmVhdGVGdW5jdGlvbihpZCA8
TVRMTGlicmFyeT4gbGlicmFyeSwgY29uc3QgV0dTTDo6UmVmbGVjdGlvbjo6RW50cnlQb2ludElu
Zm9ybWF0aW9uJiBlbnRyeVBvaW50SW5mb3JtYXRpb24sIGNvbnN0IFdHUFVQcm9ncmFtbWFibGVT
dGFnZURlc2NyaXB0b3ImIGNvbXB1dGUsIE5TU3RyaW5nICpsYWJlbCkKK3sKKyAgICBhdXRvIGZ1
bmN0aW9uRGVzY3JpcHRvciA9IFtNVExGdW5jdGlvbkRlc2NyaXB0b3IgbmV3XTsKKyAgICBmdW5j
dGlvbkRlc2NyaXB0b3IubmFtZSA9IGVudHJ5UG9pbnRJbmZvcm1hdGlvbi5tYW5nbGVkTmFtZTsK
KyAgICBpZiAoY29tcHV0ZS5jb25zdGFudENvdW50KSB7CisgICAgICAgIGF1dG8gY29uc3RhbnRW
YWx1ZXMgPSBjcmVhdGVDb25zdGFudFZhbHVlcyhjb21wdXRlLmNvbnN0YW50Q291bnQsIGNvbXB1
dGUuY29uc3RhbnRzLCBlbnRyeVBvaW50SW5mb3JtYXRpb24pOworICAgICAgICBpZiAoIWNvbnN0
YW50VmFsdWVzKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGZ1bmN0aW9u
RGVzY3JpcHRvci5jb25zdGFudFZhbHVlcyA9IGNvbnN0YW50VmFsdWVzOworICAgIH0KKyAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBpZCA8TVRMRnVuY3Rpb24+IGZ1bmN0aW9uID0gW2xp
YnJhcnkgbmV3RnVuY3Rpb25XaXRoRGVzY3JpcHRvcjpmdW5jdGlvbkRlc2NyaXB0b3IgZXJyb3I6
JmVycm9yXTsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiRnVuY3Rpb24g
Y3JlYXRpb24gZXJyb3I6ICVAIiwgZXJyb3IpOworICAgIGZ1bmN0aW9uLmxhYmVsID0gbGFiZWw7
CisgICAgcmV0dXJuIGZ1bmN0aW9uOworfQorCitzdGF0aWMgaWQgPE1UTENvbXB1dGVQaXBlbGlu
ZVN0YXRlPiBjcmVhdGVDb21wdXRlUGlwZWxpbmVTdGF0ZShpZCA8TVRMRGV2aWNlPiBkZXZpY2Us
IGlkIDxNVExGdW5jdGlvbj4gZnVuY3Rpb24sIGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGlu
ZUxheW91dCwgY29uc3QgV0dTTDo6UmVmbGVjdGlvbjo6Q29tcHV0ZSYgY29tcHV0ZUluZm9ybWF0
aW9uLCBOU1N0cmluZyAqbGFiZWwpCit7CisgICAgYXV0byBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yID0gW01UTENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IgbmV3XTsKKyAgICBjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmNvbXB1dGVGdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIC8vIEZJWE1F
OiBjaGVjayB0aGlzIGNhbGN1bGF0aW9uIGZvciBvdmVyZmxvdworICAgIGNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3IubWF4VG90YWxUaHJlYWRzUGVyVGhyZWFkZ3JvdXAgPSBjb21wdXRlSW5mb3Jt
YXRpb24ud29ya2dyb3VwU2l6ZS53aWR0aCAqIGNvbXB1dGVJbmZvcm1hdGlvbi53b3JrZ3JvdXBT
aXplLmhlaWdodCAqIGNvbXB1dGVJbmZvcm1hdGlvbi53b3JrZ3JvdXBTaXplLmRlcHRoOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGlwZWxpbmVMYXlvdXQubnVtYmVyT2ZCaW5kR3JvdXBM
YXlvdXRzKCk7ICsraSkKKyAgICAgICAgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5idWZmZXJz
W2ldLm11dGFiaWxpdHkgPSBNVExNdXRhYmlsaXR5SW1tdXRhYmxlOyAvLyBBcmd1bWVudCBidWZm
ZXJzIGFyZSBhbHdheXMgaW1tdXRhYmxlIGluIFdlYkdQVS4KKyAgICBjb21wdXRlUGlwZWxpbmVE
ZXNjcmlwdG9yLnN1cHBvcnRJbmRpcmVjdENvbW1hbmRCdWZmZXJzID0gWUVTOworICAgIGNvbXB1
dGVQaXBlbGluZURlc2NyaXB0b3IubGFiZWwgPSBsYWJlbDsKKyAgICBOU0Vycm9yICplcnJvciA9
IG5pbDsKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBvZiB0aGlz
CisgICAgaWQgPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBjb21wdXRlUGlwZWxpbmVTdGF0ZSA9
IFtkZXZpY2UgbmV3Q29tcHV0ZVBpcGVsaW5lU3RhdGVXaXRoRGVzY3JpcHRvcjpjb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yIG9wdGlvbnM6TVRMUGlwZWxpbmVPcHRpb25Ob25lIHJlZmxlY3Rpb246
bmlsIGVycm9yOiZlcnJvcl07CisgICAgaWYgKGVycm9yKQorICAgICAgICBXVEZMb2dBbHdheXMo
IlBpcGVsaW5lIHN0YXRlIGNyZWF0aW9uIGVycm9yOiAlQCIsIGVycm9yKTsKKyAgICByZXR1cm4g
Y29tcHV0ZVBpcGVsaW5lU3RhdGU7Cit9CisKK1JlZlB0cjxDb21wdXRlUGlwZWxpbmU+IERldmlj
ZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKiBkZXNjcmlwdG9yKQoreworICAgIGlmIChkZXNjcmlwdG9yLT5uZXh0SW5DaGFpbiB8fCBk
ZXNjcmlwdG9yLT5jb21wdXRlLm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGNvbnN0IFNoYWRlck1vZHVsZSYgc2hhZGVyTW9kdWxlID0gZGVzY3JpcHRvci0+Y29t
cHV0ZS5tb2R1bGUtPnNoYWRlck1vZHVsZTsKKyAgICBjb25zdCBQaXBlbGluZUxheW91dCYgcGlw
ZWxpbmVMYXlvdXQgPSBkZXNjcmlwdG9yLT5sYXlvdXQtPnBpcGVsaW5lTGF5b3V0OworICAgIGF1
dG8gbGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6ZGVzY3JpcHRvci0+bGFiZWwg
ZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworCisgICAgYXV0byBsaWJyYXJ5Q3JlYXRp
b25SZXN1bHQgPSBjcmVhdGVMaWJyYXJ5KG1fZGV2aWNlLCBzaGFkZXJNb2R1bGUsIHBpcGVsaW5l
TGF5b3V0LCBkZXNjcmlwdG9yLT5jb21wdXRlLmVudHJ5UG9pbnQsIGxhYmVsKTsKKyAgICBpZiAo
IWxpYnJhcnlDcmVhdGlvblJlc3VsdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisg
ICAgYXV0byBsaWJyYXJ5ID0gbGlicmFyeUNyZWF0aW9uUmVzdWx0LT5saWJyYXJ5OworICAgIGNv
bnN0IGF1dG8mIGVudHJ5UG9pbnRJbmZvcm1hdGlvbiA9IGxpYnJhcnlDcmVhdGlvblJlc3VsdC0+
ZW50cnlQb2ludEluZm9ybWF0aW9uOworCisgICAgaWYgKCFzdGQ6OmhvbGRzX2FsdGVybmF0aXZl
PFdHU0w6OlJlZmxlY3Rpb246OkNvbXB1dGU+KGVudHJ5UG9pbnRJbmZvcm1hdGlvbi50eXBlZEVu
dHJ5UG9pbnQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjb25zdCBhdXRvJiBjb21w
dXRlSW5mb3JtYXRpb24gPSBzdGQ6OmdldDxXR1NMOjpSZWZsZWN0aW9uOjpDb21wdXRlPihlbnRy
eVBvaW50SW5mb3JtYXRpb24udHlwZWRFbnRyeVBvaW50KTsKKworICAgIGF1dG8gZnVuY3Rpb24g
PSBjcmVhdGVGdW5jdGlvbihsaWJyYXJ5LCBlbnRyeVBvaW50SW5mb3JtYXRpb24sIGRlc2NyaXB0
b3ItPmNvbXB1dGUsIGxhYmVsKTsKKyAgICAKKyAgICBhdXRvIGNvbXB1dGVQaXBlbGluZVN0YXRl
ID0gY3JlYXRlQ29tcHV0ZVBpcGVsaW5lU3RhdGUobV9kZXZpY2UsIGZ1bmN0aW9uLCBwaXBlbGlu
ZUxheW91dCwgY29tcHV0ZUluZm9ybWF0aW9uLCBsYWJlbCk7CisKKyAgICByZXR1cm4gQ29tcHV0
ZVBpcGVsaW5lOjpjcmVhdGUoY29tcHV0ZVBpcGVsaW5lU3RhdGUpOworfQorCit2b2lkIERldmlj
ZTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRlUGlwZWxp
bmVBc3luY1N0YXR1cywgUmVmPENvbXB1dGVQaXBlbGluZT4mJiwgY29uc3QgY2hhciogbWVzc2Fn
ZSk+JiYgY2FsbGJhY2spCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzCisgICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Cit9CisK
K0NvbXB1dGVQaXBlbGluZTo6Q29tcHV0ZVBpcGVsaW5lKGlkIDxNVExDb21wdXRlUGlwZWxpbmVT
dGF0ZT4gY29tcHV0ZVBpcGVsaW5lU3RhdGUpCisgICAgOiBtX2NvbXB1dGVQaXBlbGluZVN0YXRl
KGNvbXB1dGVQaXBlbGluZVN0YXRlKQoreworfQogCiBDb21wdXRlUGlwZWxpbmU6On5Db21wdXRl
UGlwZWxpbmUoKSA9IGRlZmF1bHQ7CiAKIFJlZjxCaW5kR3JvdXBMYXlvdXQ+IENvbXB1dGVQaXBl
bGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGlzLgogICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKLSAg
ICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gQmluZEdyb3Vw
TGF5b3V0OjpjcmVhdGUobmlsLCBuaWwsIG5pbCk7CiB9CiAKLXZvaWQgQ29tcHV0ZVBpcGVsaW5l
OjpzZXRMYWJlbChjb25zdCBjaGFyKiBsYWJlbCkKK3ZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRM
YWJlbChjb25zdCBjaGFyKikKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIC8vIE1U
TENvbXB1dGVQaXBlbGluZVN0YXRlJ3MgbGFiZWwgaXMgcmVhZC1vbmx5LgogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5o
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKaW5kZXggNTI1YzEzYjE3ZDk2NDdlNjJi
Y2QwOWFmYzdjYmEwZjM5NGU2NDk2Yi4uYjQ0ZDI0ODY3MzM3NzFhOTMyNmQyMTllOTYxNDQzNDEw
NjVhMzU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQg
PHd0Zi9GdW5jdGlvbi5oPgogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9ydCA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAK
QEAgLTUyLDI2ICs1MywyMyBAQCBjbGFzcyBRdWV1ZTsKIGNsYXNzIERldmljZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPERldmljZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RGV2aWNlPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRGV2aWNlKCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmUHRyPERldmlj
ZT4gY3JlYXRlKGlkIDxNVExEZXZpY2U+KTsKIAogICAgIH5EZXZpY2UoKTsKIAotICAgIFJlZjxC
aW5kR3JvdXA+IGNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciop
OwotICAgIFJlZjxCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBX
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciopOwotICAgIFJlZjxCdWZmZXI+IGNyZWF0ZUJ1
ZmZlcihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciopOworICAgIFJlZlB0cjxCaW5kR3JvdXA+
IGNyZWF0ZUJpbmRHcm91cChjb25zdCBXR1BVQmluZEdyb3VwRGVzY3JpcHRvciopOworICAgIFJl
ZlB0cjxCaW5kR3JvdXBMYXlvdXQ+IGNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciopOworICAgIFJlZlB0cjxCdWZmZXI+IGNyZWF0ZUJ1ZmZl
cihjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciopOwogICAgIFJlZjxDb21tYW5kRW5jb2Rlcj4g
Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3QgV0dQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciop
OwotICAgIFJlZjxDb21wdXRlUGlwZWxpbmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBX
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciopOworICAgIFJlZlB0cjxDb21wdXRlUGlwZWxp
bmU+IGNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciopOwogICAgIHZvaWQgY3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IqLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBp
cGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxDb21wdXRlUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpPiYmIGNhbGxiYWNrKTsKLSAgICBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVs
aW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IqKTsKKyAgICBSZWZQ
dHI8UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFdHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IqKTsKICAgICBSZWY8UXVlcnlTZXQ+IGNyZWF0ZVF1ZXJ5U2V0KGNv
bnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqKTsKICAgICBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rl
cj4gY3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBXR1BVUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3IqKTsKICAgICBSZWY8UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZVJlbmRlclBpcGVs
aW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IqKTsKICAgICB2b2lkIGNyZWF0
ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcios
IFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cywgUmVmPFJl
bmRlclBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBtZXNzYWdlKT4mJiBjYWxsYmFjayk7CiAgICAg
UmVmPFNhbXBsZXI+IGNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yKik7
Ci0gICAgUmVmPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yKik7CisgICAgUmVmUHRyPFNoYWRlck1vZHVsZT4gY3JlYXRlU2hh
ZGVyTW9kdWxlKGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKik7CiAgICAgUmVmPFN3
YXBDaGFpbj4gY3JlYXRlU3dhcENoYWluKGNvbnN0IFN1cmZhY2UmLCBjb25zdCBXR1BVU3dhcENo
YWluRGVzY3JpcHRvciopOwogICAgIFJlZjxUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKGNvbnN0IFdH
UFVUZXh0dXJlRGVzY3JpcHRvciopOwogICAgIHZvaWQgZGVzdHJveSgpOwpAQCAtODYsNyArODQs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCiBwcml2YXRl
OgotICAgIERldmljZSgpOworICAgIERldmljZShpZCA8TVRMRGV2aWNlPiwgUmVmPFF1ZXVlPiYm
KTsKKworICAgIGlkIDxNVExEZXZpY2U+IG1fZGV2aWNlIHsgbmlsIH07CisgICAgUmVmPFF1ZXVl
PiBtX2RlZmF1bHRRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
RGV2aWNlLm1tCmluZGV4IDE0ZjU1Y2Q0MGIxYmM3YWMzZThlNzJlYTU5MGQwNzFhMzJmZGU3OGIu
LmU0MzI2OTRiYTMyMjVlNTQ5N2Q4ZTExZTljMjFkZDM1ZTRmYjUwMDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9E
ZXZpY2UubW0KQEAgLTQ2LDg3ICs0NiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotRGV2
aWNlOjpEZXZpY2UoKSA9IGRlZmF1bHQ7Ci0KLURldmljZTo6fkRldmljZSgpID0gZGVmYXVsdDsK
LQotUmVmPEJpbmRHcm91cD4gRGV2aWNlOjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRH
cm91cERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOwotICAgIHJldHVybiBCaW5kR3JvdXA6OmNyZWF0ZSgpOwotfQotCi1SZWY8QmluZEdyb3Vw
TGF5b3V0PiBEZXZpY2U6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBXR1BVQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7Ci0gICAgcmV0dXJuIEJpbmRHcm91cExheW91dDo6Y3JlYXRlKCk7Ci19Ci0KLVJlZjxC
dWZmZXI+IERldmljZTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
QnVmZmVyOjpjcmVhdGUoKTsKLX0KLQotUmVmPENvbW1hbmRFbmNvZGVyPiBEZXZpY2U6OmNyZWF0
ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBDb21t
YW5kRW5jb2Rlcjo6Y3JlYXRlKCk7Ci19Ci0KLVJlZjxDb21wdXRlUGlwZWxpbmU+IERldmljZTo6
Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
KiBkZXNjcmlwdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gQ29tcHV0ZVBpcGVsaW5lOjpjcmVhdGUoKTsKLX0KLQotdm9pZCBEZXZpY2U6OmNyZWF0ZUNv
bXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0
dXMsIFJlZjxDb21wdXRlUGlwZWxpbmU+JiYsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpPiYmIGNhbGxi
YWNrKQotewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOwotfQotCi1SZWY8UGlwZWxpbmVMYXlvdXQ+IERldmljZTo6Y3JlYXRlUGlwZWxp
bmVMYXlvdXQoY29uc3QgV0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikK
K1JlZlB0cjxEZXZpY2U+IERldmljZTo6Y3JlYXRlKGlkIDxNVExEZXZpY2U+IGRldmljZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFBpcGVsaW5lTGF5b3V0
OjpjcmVhdGUoKTsKLX0KLQotUmVmPFF1ZXJ5U2V0PiBEZXZpY2U6OmNyZWF0ZVF1ZXJ5U2V0KGNv
bnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BB
UkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBRdWVyeVNldDo6Y3JlYXRlKCk7Ci19CisgICAg
aWQgPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFuZFF1ZXVlID0gW2RldmljZSBuZXdDb21tYW5kUXVl
dWVdOworICAgIGlmICghY29tbWFuZFF1ZXVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBhdXRvIHF1ZXVlID0gUXVldWU6OmNyZWF0ZShjb21tYW5kUXVldWUpOwogCi1SZWY8UmVuZGVy
QnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFdH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKLXsKLSAgICBVTlVT
RURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbmRlckJ1bmRsZUVuY29kZXI6OmNy
ZWF0ZSgpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERldmljZShkZXZpY2UsIFdURk1vdmUo
cXVldWUpKSk7CiB9CiAKLVJlZjxSZW5kZXJQaXBlbGluZT4gRGV2aWNlOjpjcmVhdGVSZW5kZXJQ
aXBlbGluZShjb25zdCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQor
RGV2aWNlOjpEZXZpY2UoaWQgPE1UTERldmljZT4gZGV2aWNlLCBSZWY8UXVldWU+JiYgcXVldWUp
CisgICAgOiBtX2RldmljZShkZXZpY2UpCisgICAgLCBtX2RlZmF1bHRRdWV1ZShXVEZNb3ZlKHF1
ZXVlKSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbmRl
clBpcGVsaW5lOjpjcmVhdGUoKTsKKyAgICBVTlVTRURfVkFSSUFCTEUobV9kZXZpY2UpOwogfQog
Ci12b2lkIERldmljZTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYyhjb25zdCBXR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNy
ZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMsIFJlZjxSZW5kZXJQaXBlbGluZT4mJiwgY29uc3QgY2hh
ciogbWVzc2FnZSk+JiYgY2FsbGJhY2spCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3Ip
OwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7Ci19Ci0KLVJlZjxTYW1wbGVyPiBEZXZpY2U6
OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQot
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gU2FtcGxlcjo6Y3Jl
YXRlKCk7Ci19Ci0KLVJlZjxTaGFkZXJNb2R1bGU+IERldmljZTo6Y3JlYXRlU2hhZGVyTW9kdWxl
KGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQotewotICAgIFVO
VVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUo
KTsKLX0KK0RldmljZTo6fkRldmljZSgpID0gZGVmYXVsdDsKIAogUmVmPFN3YXBDaGFpbj4gRGV2
aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFjZSwgY29uc3QgV0dQVVN3
YXBDaGFpbkRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CkBAIC0xMzUsMTQgKzcyLDkgQEAgUmVm
PFN3YXBDaGFpbj4gRGV2aWNlOjpjcmVhdGVTd2FwQ2hhaW4oY29uc3QgU3VyZmFjZSYgc3VyZmFj
ZSwgY29uc3QgV0dQVVN3YXBDaGEKICAgICByZXR1cm4gU3dhcENoYWluOjpjcmVhdGUoKTsKIH0K
IAotUmVmPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwot
ICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUoKTsKLX0KLQogdm9pZCBEZXZpY2U6OmRlc3Ryb3ko
KQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcwogfQogCiBzaXplX3QgRGV2aWNlOjpl
bnVtZXJhdGVGZWF0dXJlcyhXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKQpAQCAtMTU5LDcgKzkx
LDcgQEAgYm9vbCBEZXZpY2U6OmdldExpbWl0cyhXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMp
CiAKIFJlZjxRdWV1ZT4gRGV2aWNlOjpnZXRRdWV1ZSgpCiB7Ci0gICAgcmV0dXJuIFF1ZXVlOjpj
cmVhdGUoKTsKKyAgICByZXR1cm4gbV9kZWZhdWx0UXVldWU7CiB9CiAKIGJvb2wgRGV2aWNlOjpo
YXNGZWF0dXJlKFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQpAQCAtMTg5LDkgKzEyMSw5IEBAIHZv
aWQgRGV2aWNlOjpzZXRVbmNhcHR1cmVkRXJyb3JDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQo
V0dQVUVycm9yVHlwZSwgY29uc3QKICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwogfQogCi12
b2lkIERldmljZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit2b2lkIERldmljZTo6c2V0
TGFiZWwoY29uc3QgY2hhciopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICAvLyBC
ZWNhdXNlIE1UTERldmljZXMgYXJlIHByb2Nlc3MtZ2xvYmFsLCB3ZSBjYW4ndCBzZXQgdGhlIGxh
YmVsIG9uIGl0LCBiZWNhdXNlIDIgY29udGV4dHMnIGxhYmVscyB3b3VsZCBmaWdodCBlYWNoIG90
aGVyLgogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTIwMywxNyArMTM1LDIwIEBAIHZv
aWQgd2dwdURldmljZVJlbGVhc2UoV0dQVURldmljZSBkZXZpY2UpCiAKIFdHUFVCaW5kR3JvdXAg
d2dwdURldmljZUNyZWF0ZUJpbmRHcm91cChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJp
bmRHcm91cERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmlu
ZEdyb3VwSW1wbCB7IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVCaW5kR3JvdXAoZGVzY3JpcHRvcikg
fTsKKyAgICBhdXRvIHJlc3VsdCA9IGRldmljZS0+ZGV2aWNlLT5jcmVhdGVCaW5kR3JvdXAoZGVz
Y3JpcHRvcik7CisgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQmluZEdyb3VwSW1wbCB7IHJl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOwogfQogCiBXR1BVQmluZEdyb3VwTGF5
b3V0IHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXBMYXlvdXQoV0dQVURldmljZSBkZXZpY2UsIGNv
bnN0IFdHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIHJl
dHVybiBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyBkZXZpY2UtPmRldmljZS0+Y3JlYXRl
QmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpIH07CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2Ut
PmRldmljZS0+Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGRlc2NyaXB0b3IpOworICAgIHJldHVybiBy
ZXN1bHQgPyBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51
bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVUJ1ZmZlciB3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVy
KFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQnVmZmVyRGVzY3JpcHRvciogZGVzY3JpcHRv
cikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVCdWZmZXJJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNy
ZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yKSB9OworICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZp
Y2UtPmNyZWF0ZUJ1ZmZlcihkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdH
UFVCdWZmZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAK
IFdHUFVDb21tYW5kRW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlQ29tbWFuZEVuY29kZXIoV0dQVURl
dmljZSBkZXZpY2UsIGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCkBAIC0yMjMsNyArMTU4LDggQEAgV0dQVUNvbW1hbmRFbmNvZGVyIHdncHVEZXZpY2VDcmVh
dGVDb21tYW5kRW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUMKIAogV0dQVUNv
bXB1dGVQaXBlbGluZSB3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdHUFVEZXZpY2Ug
ZGV2aWNlLCBjb25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
IHsKLSAgICByZXR1cm4gbmV3IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgZGV2aWNlLT5kZXZp
Y2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZShkZXNjcmlwdG9yKSB9OworICAgIGF1dG8gcmVzdWx0
ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZUNvbXB1dGVQaXBlbGluZShkZXNjcmlwdG9yKTsKKyAg
ICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgcmVzdWx0LnJl
bGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgd2dwdURldmljZUNyZWF0ZUNv
bXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQ29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFz
eW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQpAQCAtMjM1LDcgKzE3MSw4IEBA
IHZvaWQgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2
aWNlLCBjb25zdCBXR1BVQ29tcHV0ZVBpCiAKIFdHUFVQaXBlbGluZUxheW91dCB3Z3B1RGV2aWNl
Q3JlYXRlUGlwZWxpbmVMYXlvdXQoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVQaXBlbGlu
ZUxheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVUGlw
ZWxpbmVMYXlvdXRJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGRl
c2NyaXB0b3IpIH07CisgICAgYXV0byByZXN1bHQgPSBkZXZpY2UtPmRldmljZS0+Y3JlYXRlUGlw
ZWxpbmVMYXlvdXQoZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVUGlw
ZWxpbmVMYXlvdXRJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9
CiAKIFdHUFVRdWVyeVNldCB3Z3B1RGV2aWNlQ3JlYXRlUXVlcnlTZXQoV0dQVURldmljZSBkZXZp
Y2UsIGNvbnN0IFdHUFVRdWVyeVNldERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCkBAIC0yNjcsNyAr
MjA0LDggQEAgV0dQVVNhbXBsZXIgd2dwdURldmljZUNyZWF0ZVNhbXBsZXIoV0dQVURldmljZSBk
ZXZpY2UsIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHQKIAogV0dQVVNoYWRlck1vZHVsZSB3Z3B1
RGV2aWNlQ3JlYXRlU2hhZGVyTW9kdWxlKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVU2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gbmV3IFdHUFVT
aGFkZXJNb2R1bGVJbXBsIHsgZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVNoYWRlck1vZHVsZShkZXNj
cmlwdG9yKSB9OworICAgIGF1dG8gcmVzdWx0ID0gZGV2aWNlLT5kZXZpY2UtPmNyZWF0ZVNoYWRl
ck1vZHVsZShkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTaGFkZXJN
b2R1bGVJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CiB9CiAKIFdH
UFVTd2FwQ2hhaW4gd2dwdURldmljZUNyZWF0ZVN3YXBDaGFpbihXR1BVRGV2aWNlIGRldmljZSwg
V0dQVVN1cmZhY2Ugc3VyZmFjZSwgY29uc3QgV0dQVVN3YXBDaGFpbkRlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAppbmRleCA1YzFkNzIyYmFlNmZhZTAxNDRhODdi
NGZkNjYzNTc0MjFkYjUxMTQxLi5jNGM2ZTVjN2QwYjk5ZmNmMzE5ODFjZDQxYmEwYTQzZGVlNGFm
MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKQEAgLTI2LDEwICsyNiwxMiBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbXBvcnQgIldlYkdQVS5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CiAjaW1wb3J0IDx3dGYvRmFzdE1hbGxvYy5oPgogI2ltcG9ydCA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgorI2lt
cG9ydCA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtMzksMTkgKzQx
LDE4IEBAIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBJbnN0YW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEluc3RhbmNlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxJbnN0YW5jZT4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEluc3RhbmNlKCkpOwotICAgIH0KKyAgICBzdGF0aWMgUmVmUHRyPEluc3RhbmNl
PiBjcmVhdGUoKTsKIAogICAgIH5JbnN0YW5jZSgpOwogCiAgICAgUmVmPFN1cmZhY2U+IGNyZWF0
ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKik7CiAgICAgdm9pZCBwcm9jZXNz
RXZlbnRzKCk7Ci0gICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0
ZXJPcHRpb25zKiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywg
UmVmPEFkYXB0ZXI+JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCByZXF1
ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiwgV1RGOjpGdW5jdGlv
bjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+JiYsIGNvbnN0
IGNoYXIqKT4mJiBjYWxsYmFjayk7CiAKIHByaXZhdGU6Ci0gICAgSW5zdGFuY2UoKTsKKyAgICBJ
bnN0YW5jZShOU1J1bkxvb3AgKik7CisKKyAgICBOU1J1bkxvb3AgKm1fcnVuTG9vcDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQppbmRleCA1MmNl
MmE3YzBmNjI2NWY1NjBjZTViNjc4OTk4ZTU4YjMyNzRkYjQ1Li5iNjYyZmJhMjE0MzFiZTgwZDFh
MmM4YzM4YmU4ZTc3NDRiMDk2YWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9J
bnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQpAQCAtMzQs
MjUgKzM0LDExMiBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotSW5zdGFuY2U6Okluc3RhbmNl
KCkgPSBkZWZhdWx0Oworc3RhdGljIGNvbnN0ZXhwciBOU1N0cmluZyAqcnVuTG9vcE1vZGUgPSBA
ImtDRlJ1bkxvb3BXZWJHUFVNb2RlIjsKKworUmVmUHRyPEluc3RhbmNlPiBJbnN0YW5jZTo6Y3Jl
YXRlKCkKK3sKKyAgICBOU1J1bkxvb3AgKnJ1bkxvb3AgPSBOU1J1bkxvb3AuY3VycmVudFJ1bkxv
b3A7CisgICAgaWYgKCFydW5Mb29wKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEluc3RhbmNlKHJ1bkxvb3ApKTsKK30KKworSW5zdGFuY2U6Oklu
c3RhbmNlKE5TUnVuTG9vcCAqcnVuTG9vcCkKKyAgICA6IG1fcnVuTG9vcChydW5Mb29wKQorewor
fQogCiBJbnN0YW5jZTo6fkluc3RhbmNlKCkgPSBkZWZhdWx0OwogCiBSZWY8U3VyZmFjZT4gSW5z
dGFuY2U6OmNyZWF0ZVN1cmZhY2UoY29uc3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7CiAgICAgcmV0dXJuIFN1cmZhY2U6OmNyZWF0ZSgpOwogfQogCiB2b2lkIElu
c3RhbmNlOjpwcm9jZXNzRXZlbnRzKCkKIHsKKyAgICAvLyBOU1J1bkxvb3BzIGFyZSBub3QgdGhy
ZWFkLXNhZmUsIGJ1dCB0aGVuIGFnYWluIG5laXRoZXIgaXMgV2ViR1BVLgorICAgIC8vIElmIHRo
ZSBjYWxsZXIgZG9lcyBhbGwgdGhlIG5lY2Vzc2FyeSBzeW5jaHJvbml6YXRpb24gdGhlbXNlbHZl
cywgdGhpcyB3aWxsIGJlIHNhZmUuCisgICAgLy8gSW4gdGhhdCBzaXR1YXRpb24sIHdlIGhhdmUg
dG8gbWFrZSBzdXJlIHdlJ3JlIHVzaW5nIHRoZSBydW4gbG9vcCB3ZSB3ZXJlIGNyZWF0ZWQgb24s
CisgICAgLy8gc28gdGFza3MgdGhhdCB3ZXJlIHF1ZXVlZCB1cCBvbiBvbmUgdGhyZWFkIGFjdHVh
bGx5IGdldCBleGVjdXRlZCBoZXJlLCBldmVuIGlmCisgICAgLy8gdGhpcyBpcyBleGVjdXRpbmcg
b24gYSBkaWZmZXJlbnQgdGhyZWFkLgorICAgIEJPT0wgcmVzdWx0OworICAgIGRvIHsKKyAgICAg
ICAgcmVzdWx0ID0gW21fcnVuTG9vcCBydW5Nb2RlOnJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05T
RGF0ZSBkYXRlXV07CisgICAgfSB3aGlsZSAocmVzdWx0KTsKK30KKworc3RhdGljIE5TQXJyYXk8
aWQgPE1UTERldmljZT4+ICpzb3J0ZWREZXZpY2VzKE5TQXJyYXk8aWQgPE1UTERldmljZT4+ICpk
ZXZpY2VzLCBXR1BVUG93ZXJQcmVmZXJlbmNlIHBvd2VyUHJlZmVyZW5jZSkKK3sKKyAgICBzd2l0
Y2ggKHBvd2VyUHJlZmVyZW5jZSkgeworICAgIGNhc2UgV0dQVVBvd2VyUHJlZmVyZW5jZV9VbmRl
ZmluZWQ6CisgICAgICAgIHJldHVybiBkZXZpY2VzOworICAgIGNhc2UgV0dQVVBvd2VyUHJlZmVy
ZW5jZV9Mb3dQb3dlcjoKKyAgICAgICAgcmV0dXJuIFtkZXZpY2VzIHNvcnRlZEFycmF5V2l0aE9w
dGlvbnM6TlNTb3J0U3RhYmxlIHVzaW5nQ29tcGFyYXRvcjpeTlNDb21wYXJpc29uUmVzdWx0IChp
ZCA8TVRMRGV2aWNlPiBvYmoxLCBpZCA8TVRMRGV2aWNlPiBvYmoyKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAob2JqMS5sb3dQb3dlciA9PSBvYmoyLmxvd1Bvd2VyKQorICAgICAgICAgICAg
ICAgIHJldHVybiBOU09yZGVyZWRTYW1lOworICAgICAgICAgICAgaWYgKG9iajEubG93UG93ZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5TT3JkZXJlZEFzY2VuZGluZzsKKyAgICAgICAgICAg
IHJldHVybiBOU09yZGVyZWREZXNjZW5kaW5nOworICAgICAgICB9XTsKKyAgICBjYXNlIFdHUFVQ
b3dlclByZWZlcmVuY2VfSGlnaFBlcmZvcm1hbmNlOgorICAgICAgICByZXR1cm4gW2RldmljZXMg
c29ydGVkQXJyYXlXaXRoT3B0aW9uczpOU1NvcnRTdGFibGUgdXNpbmdDb21wYXJhdG9yOl5OU0Nv
bXBhcmlzb25SZXN1bHQgKGlkIDxNVExEZXZpY2U+IG9iajEsIGlkIDxNVExEZXZpY2U+IG9iajIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvYmoxLmxvd1Bvd2VyID09IG9iajIubG93UG93
ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5TT3JkZXJlZFNhbWU7CisgICAgICAgICAgICBp
ZiAob2JqMS5sb3dQb3dlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gTlNPcmRlcmVkRGVzY2Vu
ZGluZzsKKyAgICAgICAgICAgIHJldHVybiBOU09yZGVyZWRBc2NlbmRpbmc7CisgICAgICAgIH1d
OworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQogfQogCi12b2lkIElu
c3RhbmNlOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBv
cHRpb25zLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzLCBSZWY8
QWRhcHRlcj4mJiwgY29uc3QgY2hhciopPiYmIGNhbGxiYWNrKQordm9pZCBJbnN0YW5jZTo6cmVx
dWVzdEFkYXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywgV1RG
OjpGdW5jdGlvbjx2b2lkKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cywgUmVmUHRyPEFkYXB0ZXI+
JiYsIGNvbnN0IGNoYXIqKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9u
cyk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKLSAgICBjYWxsYmFjayhXR1BVUmVxdWVz
dEFkYXB0ZXJTdGF0dXNfVW5hdmFpbGFibGUsIEFkYXB0ZXI6OmNyZWF0ZSgpLCAiQWRhcHRlciIp
OworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgTlNBcnJh
eTxpZCA8TVRMRGV2aWNlPj4gKmRldmljZXMgPSBNVExDb3B5QWxsRGV2aWNlcygpOworI2Vsc2UK
KyAgICBOU0FycmF5PGlkIDxNVExEZXZpY2U+PiAqZGV2aWNlcyA9IFtOU0FycmF5IGFycmF5XTsK
KyAgICBpZiAoaWQgPE1UTERldmljZT4gZGV2aWNlID0gTVRMQ3JlYXRlU3lzdGVtRGVmYXVsdERl
dmljZSgpKQorICAgICAgICBbZGV2aWNlcyBhcHBlbmQ6ZGV2aWNlXTsKKyNlbmRpZgorCisgICAg
Ly8gRklYTUU6IERlYWwgd2l0aCBvcHRpb25zLT5jb21wYXRpYmxlU3VyZmFjZS4KKworICAgIGF1
dG8gc29ydGVkRGV2aWNlcyA9IFdlYkdQVTo6c29ydGVkRGV2aWNlcyhkZXZpY2VzLCBvcHRpb25z
LT5wb3dlclByZWZlcmVuY2UpOworCisgICAgaWYgKG9wdGlvbnMtPm5leHRJbkNoYWluKSB7Cisg
ICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJvciwgbnVsbHB0ciwg
IlVua25vd24gZGVzY3JpcHRvciB0eXBlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpZiAob3B0aW9ucy0+Zm9yY2VGYWxsYmFja0FkYXB0ZXIpIHsKKyAgICAgICAgY2FsbGJhY2so
V0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzX1VuYXZhaWxhYmxlLCBudWxscHRyLCAiTm8gYWRhcHRl
cnMgcHJlc2VudCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFzb3J0ZWRE
ZXZpY2VzKSB7CisgICAgICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19FcnJv
ciwgbnVsbHB0ciwgIlVua25vd24gcG93ZXIgcHJlZmVyZW5jZSIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKCFzb3J0ZWREZXZpY2VzLmNvdW50KSB7CisgICAgICAgIGNhbGxi
YWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1c19VbmF2YWlsYWJsZSwgbnVsbHB0ciwgIk5vIGFk
YXB0ZXJzIHByZXNlbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
IXNvcnRlZERldmljZXNbMF0pIHsKKyAgICAgICAgY2FsbGJhY2soV0dQVVJlcXVlc3RBZGFwdGVy
U3RhdHVzX0Vycm9yLCBudWxscHRyLCAiQWRhcHRlciBpcyBpbnRlcm5hbGx5IG51bGwiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKFdHUFVSZXF1ZXN0QWRhcHRlclN0
YXR1c19TdWNjZXNzLCBBZGFwdGVyOjpjcmVhdGUoc29ydGVkRGV2aWNlc1swXSksIG51bGxwdHIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKQEAgLTYyLDEwICsxNDksMTAgQEAgdm9pZCB3
Z3B1SW5zdGFuY2VSZWxlYXNlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKICAgICBkZWxldGUgaW5z
dGFuY2U7CiB9CiAKLVdHUFVJbnN0YW5jZSB3Z3B1Q3JlYXRlSW5zdGFuY2UoY29uc3QgV0dQVUlu
c3RhbmNlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK1dHUFVJbnN0YW5jZSB3Z3B1Q3JlYXRlSW5z
dGFuY2UoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciopCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBuZXcgV0dQVUluc3RhbmNlSW1wbCB7IFdlYkdQVTo6
SW5zdGFuY2U6OmNyZWF0ZSgpIH07CisgICAgYXV0byByZXN1bHQgPSBXZWJHUFU6Okluc3RhbmNl
OjpjcmVhdGUoKTsKKyAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVJbnN0YW5jZUltcGwgeyBy
ZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKIH0KIAogV0dQVVByb2Mgd2dwdUdl
dFByb2NBZGRyZXNzKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKQEAg
LTMxMCw4ICszOTcsOCBAQCB2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3Rh
bmNlIGluc3RhbmNlKQogCiB2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RBZGFwdGVyKFdHUFVJbnN0
YW5jZSBpbnN0YW5jZSwgY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyogb3B0aW9ucywg
V0dQVVJlcXVlc3RBZGFwdGVyQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewot
ICAgIGluc3RhbmNlLT5pbnN0YW5jZS0+cmVxdWVzdEFkYXB0ZXIob3B0aW9ucywgW2NhbGxiYWNr
LCB1c2VyZGF0YV0gKFdHUFVSZXF1ZXN0QWRhcHRlclN0YXR1cyBzdGF0dXMsIFJlZjxXZWJHUFU6
OkFkYXB0ZXI+JiYgYWRhcHRlciwgY29uc3QgY2hhciogbWVzc2FnZSkgewotICAgICAgICBjYWxs
YmFjayhzdGF0dXMsIG5ldyBXR1BVQWRhcHRlckltcGwgeyBXVEZNb3ZlKGFkYXB0ZXIpIH0sIG1l
c3NhZ2UsIHVzZXJkYXRhKTsKKyAgICBpbnN0YW5jZS0+aW5zdGFuY2UtPnJlcXVlc3RBZGFwdGVy
KG9wdGlvbnMsIFtjYWxsYmFjaywgdXNlcmRhdGFdIChXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMg
c3RhdHVzLCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIGNvbnN0IGNoYXIqIG1l
c3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBhZGFwdGVyID8gbmV3IFdHUFVBZGFw
dGVySW1wbCB7IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZSwg
dXNlcmRhdGEpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9QaXBlbGluZUxheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQu
aAppbmRleCAxZjQwM2U1NDM2NGNiMTFjNzJhM2FjNjdiYmJjNDUxYjcyZDM0ZDM2Li40YjhmNTYy
YjNiOTgwODg2YmQyZTY5ZWI5MWU0YjliODQxZGU0ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Bp
cGVsaW5lTGF5b3V0LmgKQEAgLTI5LDIzICsyOSwzMyBAQAogI2ltcG9ydCA8d3RmL0Zhc3RNYWxs
b2MuaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBCaW5k
R3JvdXBMYXlvdXQ7CisKIGNsYXNzIFBpcGVsaW5lTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8
UGlwZWxpbmVMYXlvdXQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFBpcGVsaW5lTGF5b3V0PiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8
UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShWZWN0b3I8UmVmPEJpbmRHcm91cExheW91dD4+JiYgbGF5
b3V0cykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBpcGVsaW5lTGF5b3V0
KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQaXBlbGluZUxheW91dChXVEZNb3Zl
KGxheW91dHMpKSk7CiAgICAgfQogCiAgICAgflBpcGVsaW5lTGF5b3V0KCk7CiAKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IGNoYXIqKTsKIAorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQaXBl
bGluZUxheW91dCYpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQaXBlbGluZUxh
eW91dCYpIGNvbnN0OworCisgICAgc2l6ZV90IG51bWJlck9mQmluZEdyb3VwTGF5b3V0cygpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5b3V0cy5zaXplKCk7IH0KKwogcHJpdmF0ZToKLSAgICBQaXBlbGlu
ZUxheW91dCgpOworICAgIFBpcGVsaW5lTGF5b3V0KFZlY3RvcjxSZWY8QmluZEdyb3VwTGF5b3V0
Pj4mJik7CisKKyAgICBjb25zdCBWZWN0b3I8UmVmPEJpbmRHcm91cExheW91dD4+IG1fbGF5b3V0
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGlu
ZUxheW91dC5tbQppbmRleCBlN2EzNzU1MzliYjVmNWM5YmY3NWU2N2VhZjA2NDA2OGNhMzZhOTA1
Li4yMTZmZjI5ZDJlMWNmNGJmZWVhNjAxMzhhNDI1ZDUxNTQ3OWFkOTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQpAQCAtMjYsMTcgKzI2LDUwIEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIlBpcGVsaW5lTGF5b3V0LmgiCiAKKyNpbXBvcnQgIkJpbmRHcm91
cExheW91dC5oIgorI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJXZWJHUFVFeHQuaCIKIAog
bmFtZXNwYWNlIFdlYkdQVSB7CiAKLVBpcGVsaW5lTGF5b3V0OjpQaXBlbGluZUxheW91dCgpID0g
ZGVmYXVsdDsKK1JlZlB0cjxQaXBlbGluZUxheW91dD4gRGV2aWNlOjpjcmVhdGVQaXBlbGluZUxh
eW91dChjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQorewor
ICAgIGlmIChkZXNjcmlwdG9yLT5uZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBWZWN0b3I8UmVmPEJpbmRHcm91cExheW91dD4+IGJpbmRHcm91cExheW91dHM7Cisg
ICAgYmluZEdyb3VwTGF5b3V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRlc2NyaXB0b3ItPmJp
bmRHcm91cExheW91dENvdW50KTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZGVzY3Jp
cHRvci0+YmluZEdyb3VwTGF5b3V0Q291bnQ7ICsraSkgeworICAgICAgICBjb25zdCBhdXRvKiBi
aW5kR3JvdXBMYXlvdXQgPSBkZXNjcmlwdG9yLT5iaW5kR3JvdXBMYXlvdXRzW2ldOworICAgICAg
ICBiaW5kR3JvdXBMYXlvdXRzLnVuY2hlY2tlZEFwcGVuZChiaW5kR3JvdXBMYXlvdXQtPmJpbmRH
cm91cExheW91dCk7CisgICAgfQorICAgIHJldHVybiBQaXBlbGluZUxheW91dDo6Y3JlYXRlKFdU
Rk1vdmUoYmluZEdyb3VwTGF5b3V0cykpOworfQorCitQaXBlbGluZUxheW91dDo6UGlwZWxpbmVM
YXlvdXQoVmVjdG9yPFJlZjxCaW5kR3JvdXBMYXlvdXQ+PiYmIGJpbmRHcm91cExheW91dHMpCisg
ICAgOiBtX2xheW91dHMoV1RGTW92ZShiaW5kR3JvdXBMYXlvdXRzKSkKK3sKK30KIAogUGlwZWxp
bmVMYXlvdXQ6On5QaXBlbGluZUxheW91dCgpID0gZGVmYXVsdDsKIAotdm9pZCBQaXBlbGluZUxh
eW91dDo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCit2b2lkIFBpcGVsaW5lTGF5b3V0Ojpz
ZXRMYWJlbChjb25zdCBjaGFyKikKK3sKKyAgICAvLyBUaGVyZSBpcyBubyBNZXRhbCBvYmplY3Qg
dGhhdCByZXByZXNlbnRzIGEgcGlwZWxpbmUgbGF5b3V0LgorfQorCitib29sIFBpcGVsaW5lTGF5
b3V0OjpvcGVyYXRvcj09KGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBvdGhlcikgY29uc3QKK3sKKyAg
ICBVTlVTRURfUEFSQU0ob3RoZXIpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBQaXBlbGluZUxheW91dDo6b3BlcmF0b3IhPShjb25z
dCBQaXBlbGluZUxheW91dCYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKKyAgICBVTlVTRURfUEFSQU0ob3RoZXIpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUXVlcnlTZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQppbmRl
eCA1Nzg0MjEyYzczYzA0ODE2MzYxZDJkNmE5MWFmYTIzM2RiMThlNmEyLi44YTdmZDAyNGZjYzc5
ODczNGYzNmUyMTg4OWRmMjIzZjgyNWNkNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWVyeVNldC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpA
QCAtMjYsMTAgKzI2LDE3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlF1ZXJ5U2V0
LmgiCiAKKyNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiV2ViR1BVRXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCitSZWY8UXVlcnlTZXQ+IERldmljZTo6Y3JlYXRlUXVlcnlTZXQoY29u
c3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBVTlVTRURfUEFS
QU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFF1ZXJ5U2V0OjpjcmVhdGUoKTsKK30KKwogUXVl
cnlTZXQ6OlF1ZXJ5U2V0KCkgPSBkZWZhdWx0OwogCiBRdWVyeVNldDo6flF1ZXJ5U2V0KCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKaW5kZXggZjc2ZTY5MWEzNmVkYWQ5YzdhYmZiOWZmNjU4
MDA0M2E1NGI4OTBjNS4uYzkwMzE4NjEwOTg5ZDM2MTEyMmY0Njg3ZTI3NjgwOTY4N2U3ZDI3ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9RdWV1ZS5oCkBAIC00MCw5ICs0MCw5IEBAIGNsYXNzIENvbW1hbmRCdWZmZXI7
CiBjbGFzcyBRdWV1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxRdWV1ZT4gY3JlYXRlKCkK
KyAgICBzdGF0aWMgUmVmPFF1ZXVlPiBjcmVhdGUoaWQgPE1UTENvbW1hbmRRdWV1ZT4gY29tbWFu
ZFF1ZXVlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWUoKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXVlKGNvbW1hbmRRdWV1ZSkpOwogICAgIH0K
IAogICAgIH5RdWV1ZSgpOwpAQCAtNTMsOCArNTMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgd3Jp
dGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwgY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGRhdGFTaXplLCBjb25zdCBXR1BVVGV4dHVyZURhdGFMYXlvdXQq
LCBjb25zdCBXR1BVRXh0ZW50M0QqIHdyaXRlU2l6ZSk7CiAgICAgdm9pZCBzZXRMYWJlbChjb25z
dCBjaGFyKik7CiAKKyAgICBpZCA8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUoKSBjb25z
dCB7IHJldHVybiBtX2NvbW1hbmRRdWV1ZTsgfQorCiBwcml2YXRlOgotICAgIFF1ZXVlKCk7Cisg
ICAgUXVldWUoaWQgPE1UTENvbW1hbmRRdWV1ZT4pOworCisgICAgaWQgPE1UTENvbW1hbmRRdWV1
ZT4gbV9jb21tYW5kUXVldWUgeyBuaWwgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9RdWV1ZS5tbQppbmRleCBhZTRjMmNjNDc3NWQ0YzNmYjRkZmMxZGQxM2QzZDk3YWI4
ZGJjM2QzLi5iYmFkZTFiNDNlNmEwMTgxMTEyOTYyYzMzZTMzMzgyMGNiMmNiOTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9RdWV1ZS5tbQpAQCAtMjgsMTEgKzI4LDE1IEBACiAKICNpbXBvcnQgIkJ1ZmZlci5oIgog
I2ltcG9ydCAiQ29tbWFuZEJ1ZmZlci5oIgorI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJX
ZWJHUFVFeHQuaCIKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVF1ZXVlOjpRdWV1ZSgpID0gZGVm
YXVsdDsKK1F1ZXVlOjpRdWV1ZShpZCA8TVRMQ29tbWFuZFF1ZXVlPiBjb21tYW5kUXVldWUpCisg
ICAgOiBtX2NvbW1hbmRRdWV1ZShjb21tYW5kUXVldWUpCit7Cit9CiAKIFF1ZXVlOjp+UXVldWUo
KSA9IGRlZmF1bHQ7CiAKQEAgLTY2LDcgKzcwLDcgQEAgdm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJl
KGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlKiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGEK
IAogdm9pZCBRdWV1ZTo6c2V0TGFiZWwoY29uc3QgY2hhciogbGFiZWwpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGxhYmVsKTsKKyAgICBtX2NvbW1hbmRRdWV1ZS5sYWJlbCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ1N0cmluZzpsYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyQnVuZGxlRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRs
ZUVuY29kZXIubW0KaW5kZXggOWJiZTE1NTFkM2E5ZGYzOGViZjIyMWQyMjU1OGQ2MjNkNzBmMjk3
OC4uYWMxNzI2OWMyNjYzZDFhZWQ0ODE4NTM4YzUzZDI2OGI5NjMzMmM3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCkBAIC0yOCwxMiArMjgsMTkgQEAK
IAogI2ltcG9ydCAiQmluZEdyb3VwLmgiCiAjaW1wb3J0ICJCdWZmZXIuaCIKKyNpbXBvcnQgIkRl
dmljZS5oIgogI2ltcG9ydCAiUmVuZGVyQnVuZGxlLmgiCiAjaW1wb3J0ICJSZW5kZXJQaXBlbGlu
ZS5oIgogI2ltcG9ydCAiV2ViR1BVRXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitSZWY8
UmVuZGVyQnVuZGxlRW5jb2Rlcj4gRGV2aWNlOjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNv
bnN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFJlbmRlckJ1bmRsZUVuY29k
ZXI6OmNyZWF0ZSgpOworfQorCiBSZW5kZXJCdW5kbGVFbmNvZGVyOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyKCkgPSBkZWZhdWx0OwogCiBSZW5kZXJCdW5kbGVFbmNvZGVyOjp+UmVuZGVyQnVuZGxlRW5j
b2RlcigpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
clBpcGVsaW5lLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KaW5k
ZXggZTM2NTAzYWFhMmE2NmVkNjg1ZDc5NTdmNDA3YzkzNGZjMmZjODE4Zi4uNWNlNDE5OTcyZDRi
YjRlNDQ1MzBkNmIyY2FmMWZlOGY1MWQ5YTIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVy
UGlwZWxpbmUubW0KQEAgLTI3LDEwICsyNywyMyBAQAogI2ltcG9ydCAiUmVuZGVyUGlwZWxpbmUu
aCIKIAogI2ltcG9ydCAiQmluZEdyb3VwTGF5b3V0LmgiCisjaW1wb3J0ICJEZXZpY2UuaCIKICNp
bXBvcnQgIldlYkdQVUV4dC5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorUmVmPFJlbmRlclBp
cGVsaW5lPiBEZXZpY2U6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFdHUFVSZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOworICAgIHJldHVybiBSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKCk7Cit9CisKK3ZvaWQgRGV2
aWNlOjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IqIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChXR1BVQ3JlYXRlUGlwZWxp
bmVBc3luY1N0YXR1cywgUmVmPFJlbmRlclBpcGVsaW5lPiYmLCBjb25zdCBjaGFyKiBtZXNzYWdl
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7CisgICAgVU5V
U0VEX1BBUkFNKGNhbGxiYWNrKTsKK30KKwogUmVuZGVyUGlwZWxpbmU6OlJlbmRlclBpcGVsaW5l
KCkgPSBkZWZhdWx0OwogCiBSZW5kZXJQaXBlbGluZTo6flJlbmRlclBpcGVsaW5lKCkgPSBkZWZh
dWx0OwpAQCAtMzgsNyArNTEsNyBAQCBSZW5kZXJQaXBlbGluZTo6flJlbmRlclBpcGVsaW5lKCkg
PSBkZWZhdWx0OwogUmVmPEJpbmRHcm91cExheW91dD4gUmVuZGVyUGlwZWxpbmU6OmdldEJpbmRH
cm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShncm91
cEluZGV4KTsKLSAgICByZXR1cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUoKTsKKyAgICByZXR1
cm4gQmluZEdyb3VwTGF5b3V0OjpjcmVhdGUobmlsLCBuaWwsIG5pbCk7CiB9CiAKIHZvaWQgUmVu
ZGVyUGlwZWxpbmU6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxl
ci5oCmluZGV4IDFiNzM2NWRlOGI4MTZlZDQ1OGViOTBjZWEyYWU4NjRiN2FmZjgwNjIuLjU0Y2Qy
OGNjZjk2NzU5NWIwN2Y1ZWNlMjNiNDAxYmM1NGYwNzA3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVy
LmgKQEAgLTM1LDE3ICszNSwyMSBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIGNsYXNzIFNhbXBsZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxTYW1wbGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTYW1wbGVyPiBjcmVhdGUoKQorICAgIHN0YXRp
YyBSZWY8U2FtcGxlcj4gY3JlYXRlKGlkIDxNVExTYW1wbGVyU3RhdGU+IHNhbXBsZXJTdGF0ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNhbXBsZXIoKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNhbXBsZXIoc2FtcGxlclN0YXRlKSk7CiAgICAgfQogCiAg
ICAgflNhbXBsZXIoKTsKIAogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCisgICAg
aWQgPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxlclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zYW1w
bGVyU3RhdGU7IH0KKwogcHJpdmF0ZToKLSAgICBTYW1wbGVyKCk7CisgICAgU2FtcGxlcihpZCA8
TVRMU2FtcGxlclN0YXRlPik7CisKKyAgICBpZCA8TVRMU2FtcGxlclN0YXRlPiBtX3NhbXBsZXJT
dGF0ZSB7IG5pbCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5tbQppbmRleCA2YTE2YTIyMjY2NmRkYTNmNTdjYzNkMTlkMzYwNTA5MjI1NzA3Nzc3Li4z
NmNmY2EyZTM3NTdkZDVlMjM2YzZkMzNmYjhjNjkxMmEzN2Q4ZjFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Nh
bXBsZXIubW0KQEAgLTI2LDE3ICsyNiwyNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJTYW1wbGVyLmgiCiAKKyNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiV2ViR1BVRXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1TYW1wbGVyOjpTYW1wbGVyKCkgPSBkZWZhdWx0Owor
UmVmPFNhbXBsZXI+IERldmljZTo6Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2Ny
aXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOworICAg
IHJldHVybiBTYW1wbGVyOjpjcmVhdGUobmlsKTsKK30KKworU2FtcGxlcjo6U2FtcGxlcihpZCA8
TVRMU2FtcGxlclN0YXRlPiBzYW1wbGVyU3RhdGUpCisgICAgOiBtX3NhbXBsZXJTdGF0ZShzYW1w
bGVyU3RhdGUpCit7Cit9CiAKIFNhbXBsZXI6On5TYW1wbGVyKCkgPSBkZWZhdWx0OwogCi12b2lk
IFNhbXBsZXI6OnNldExhYmVsKGNvbnN0IGNoYXIqIGxhYmVsKQordm9pZCBTYW1wbGVyOjpzZXRM
YWJlbChjb25zdCBjaGFyKikKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIC8vIFNh
bXBsZXJzJyBsYWJlbHMgYXJlIHJlYWQtb25seS4KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaAppbmRleCBjMmFkM2VlZDE4NzE1NDFiMjk1NWVkY2UwYmNmZGQwYzk1NjZmZDY1
Li44Mzc3MjlkNDVmNzJkMmE4NzkwNDdhMDQ3YjhhODdkYTU2OTg0NjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TaGFkZXJNb2R1bGUuaApAQCAtMjUsMTkgKzI1LDI0IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW1wb3J0ICJXR1NMLmgiCiAjaW1wb3J0ICJXZWJHUFUuaCIKICNpbXBvcnQgPHd0Zi9GYXN0
TWFsbG9jLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5o
PgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBQaXBlbGluZUxheW91dDsK
KwogY2xhc3MgU2hhZGVyTW9kdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8U2hhZGVyTW9kdWxlPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
aGFkZXJNb2R1bGU+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0
ZShzdGQ6OnZhcmlhbnQ8V0dTTDo6U3VjY2Vzc2Z1bENoZWNrLCBXR1NMOjpGYWlsZWRDaGVjaz4m
JiBjaGVja1Jlc3VsdCwgSGFzaE1hcDxTdHJpbmcsIFJlZjxQaXBlbGluZUxheW91dD4+JiYgcGlw
ZWxpbmVMYXlvdXRIaW50cywgSGFzaE1hcDxTdHJpbmcsIFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5
UG9pbnRJbmZvcm1hdGlvbj4mJiBlbnRyeVBvaW50SW5mb3JtYXRpb24sIGlkIDxNVExMaWJyYXJ5
PiBsaWJyYXJ5KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2hhZGVyTW9k
dWxlKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFkZXJNb2R1bGUoV1RGTW92
ZShjaGVja1Jlc3VsdCksIFdURk1vdmUocGlwZWxpbmVMYXlvdXRIaW50cyksIFdURk1vdmUoZW50
cnlQb2ludEluZm9ybWF0aW9uKSwgbGlicmFyeSkpOwogICAgIH0KIAogICAgIH5TaGFkZXJNb2R1
bGUoKTsKQEAgLTQ1LDggKzUwLDIyIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldENvbXBpbGF0aW9u
SW5mbyhXVEY6OkZ1bmN0aW9uPHZvaWQoV0dQVUNvbXBpbGF0aW9uSW5mb1JlcXVlc3RTdGF0dXMs
IGNvbnN0IFdHUFVDb21waWxhdGlvbkluZm8qKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBzZXRM
YWJlbChjb25zdCBjaGFyKik7CiAKKyAgICBzdGF0aWMgV0dTTDo6UGlwZWxpbmVMYXlvdXQgY29u
dmVydFBpcGVsaW5lTGF5b3V0KGNvbnN0IFBpcGVsaW5lTGF5b3V0Jik7CisgICAgc3RhdGljIGlk
IDxNVExMaWJyYXJ5PiBjcmVhdGVMaWJyYXJ5KGlkIDxNVExEZXZpY2U+LCBjb25zdCBTdHJpbmcm
IG1zbCwgTlNTdHJpbmcgKmxhYmVsKTsKKworICAgIGNvbnN0IFdHU0w6OkFTVCogYXN0KCkgY29u
c3Q7CisKKyAgICBjb25zdCBQaXBlbGluZUxheW91dCogcGlwZWxpbmVMYXlvdXRIaW50KGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIGNvbnN0IFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJ
bmZvcm1hdGlvbiogZW50cnlQb2ludEluZm9ybWF0aW9uKGNvbnN0IFN0cmluZyYpIGNvbnN0Owor
ICAgIGlkIDxNVExMaWJyYXJ5PiBsaWJyYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9saWJyYXJ5OyB9
CisKIHByaXZhdGU6Ci0gICAgU2hhZGVyTW9kdWxlKCk7CisgICAgU2hhZGVyTW9kdWxlKHN0ZDo6
dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdHU0w6OkZhaWxlZENoZWNrPiYmLCBIYXNo
TWFwPFN0cmluZywgUmVmPFBpcGVsaW5lTGF5b3V0Pj4mJiwgSGFzaE1hcDxTdHJpbmcsIFdHU0w6
OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1hdGlvbj4mJiwgaWQgPE1UTExpYnJhcnk+KTsK
KworICAgIGNvbnN0IHN0ZDo6dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdHU0w6OkZh
aWxlZENoZWNrPiBtX2NoZWNrUmVzdWx0OworICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBSZWY8
UGlwZWxpbmVMYXlvdXQ+PiBtX3BpcGVsaW5lTGF5b3V0SGludHM7CisgICAgY29uc3QgSGFzaE1h
cDxTdHJpbmcsIFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1hdGlvbj4gbV9lbnRy
eVBvaW50SW5mb3JtYXRpb247CisgICAgaWQgPE1UTExpYnJhcnk+IG1fbGlicmFyeSB7IG5pbCB9
OyAvLyBUaGlzIGlzIG9ubHkgbm9uLW51bGwgaWYgd2UgY291bGQgY29tcGlsZSB0aGUgbW9kdWxl
IGVhcmx5LgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUubW0KaW5kZXggNmNiM2M5ZTlmMGRhYTRlZTNhM2E3MjI4Njg0MzFkZTE3MjU2OGM4
My4uOTUzMTY5MWIzZWNiODUzMzJhNjRkMDM3NDQ3M2E3ZDk5MTc5MTZhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1NoYWRlck1vZHVsZS5tbQpAQCAtMjYsMjIgKzI2LDIyMCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJTaGFkZXJNb2R1bGUuaCIKIAorI2ltcG9ydCAiRGV2aWNlLmgiCisj
aW1wb3J0ICJQaXBlbGluZUxheW91dC5oIgogI2ltcG9ydCAiV2ViR1BVRXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1TaGFkZXJNb2R1bGU6OlNoYWRlck1vZHVsZSgpID0gZGVmYXVsdDsK
K3N0cnVjdCBTaGFkZXJNb2R1bGVQYXJhbWV0ZXJzIHsKKyAgICBjb25zdCBXR1BVU2hhZGVyTW9k
dWxlV0dTTERlc2NyaXB0b3ImIHdnc2w7CisgICAgY29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2Ny
aXB0b3JIaW50cyogaGludHM7Cit9OworCitzdGF0aWMgc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1
bGVQYXJhbWV0ZXJzPiBmaW5kU2hhZGVyTW9kdWxlUGFyYW1ldGVycyhjb25zdCBXR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBjb25zdCBXR1BVU2hhZGVyTW9k
dWxlV0dTTERlc2NyaXB0b3IqIHdnc2wgPSBudWxscHRyOworICAgIGNvbnN0IFdHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9ySGludHMqIGhpbnRzID0gbnVsbHB0cjsKKworICAgIGZvciAoY29uc3Qg
V0dQVUNoYWluZWRTdHJ1Y3QqIHB0ciA9IGRlc2NyaXB0b3ItPm5leHRJbkNoYWluOyBwdHI7IHB0
ciA9IHB0ci0+bmV4dCkgeworICAgICAgICBhdXRvIHR5cGUgPSBwdHItPnNUeXBlOworCisgICAg
ICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8aW50Pih0eXBlKSkgeworICAgICAgICBjYXNlIFdHUFVT
VHlwZV9TaGFkZXJNb2R1bGVXR1NMRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGlmICh3Z3NsKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB3Z3NsID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBXR1BVU2hhZGVyTW9kdWxlV0dTTERlc2NyaXB0b3IqPihw
dHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVNUeXBlRXh0ZW5kZWRf
U2hhZGVyTW9kdWxlRGVzY3JpcHRvckhpbnRzOgorICAgICAgICAgICAgaWYgKGhpbnRzKQorICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBoaW50cyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgV0dQVVNoYWRlck1vZHVsZURlc2NyaXB0b3JIaW50cyo+KHB0
cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXdnc2wpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICp3Z3NsLCBoaW50
cyB9IH07Cit9CisKK2lkIDxNVExMaWJyYXJ5PiBTaGFkZXJNb2R1bGU6OmNyZWF0ZUxpYnJhcnko
aWQgPE1UTERldmljZT4gZGV2aWNlLCBjb25zdCBTdHJpbmcmIG1zbCwgTlNTdHJpbmcgKmxhYmVs
KQoreworICAgIGF1dG8gb3B0aW9ucyA9IFtNVExDb21waWxlT3B0aW9ucyBuZXddOworICAgIG9w
dGlvbnMuZmFzdE1hdGhFbmFibGVkID0gWUVTOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwor
ICAgIC8vIEZJWE1FOiBSdW4gdGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIHRoaXMKKyAgICBp
ZCA8TVRMTGlicmFyeT4gbGlicmFyeSA9IFtkZXZpY2UgbmV3TGlicmFyeVdpdGhTb3VyY2U6bXNs
IG9wdGlvbnM6b3B0aW9ucyBlcnJvcjomZXJyb3JdOworICAgIGlmIChlcnJvcikKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJNU0wgY29tcGlsYXRpb24gZXJyb3I6ICVAIiwgZXJyb3IpOworICAgIGxp
YnJhcnkubGFiZWwgPSBsYWJlbDsKKyAgICByZXR1cm4gbGlicmFyeTsKK30KKworc3RhdGljIFJl
ZlB0cjxTaGFkZXJNb2R1bGU+IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVsZShpZCA8TVRMRGV2aWNl
PiBkZXZpY2UsIHN0ZDo6dmFyaWFudDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2ssIFdHU0w6OkZhaWxl
ZENoZWNrPiYmIGNoZWNrUmVzdWx0LCBjb25zdCBXR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvckhp
bnRzJiBzdXBwbGllZEhpbnRzLCBOU1N0cmluZyAqbGFiZWwpCit7CisgICAgSGFzaE1hcDxTdHJp
bmcsIFJlZjxQaXBlbGluZUxheW91dD4+IGhpbnRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBXR1NM
OjpQaXBlbGluZUxheW91dD4gd2dzbEhpbnRzOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBzdXBwbGllZEhpbnRzLmhpbnRzQ291bnQ7ICsraSkgeworICAgICAgICBjb25zdCBhdXRvJiBo
aW50ID0gc3VwcGxpZWRIaW50cy5oaW50c1tpXTsKKyAgICAgICAgaWYgKGhpbnQubmV4dEluQ2hh
aW4pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaGludHMuYWRkKGhpbnQu
a2V5LCBoaW50LmhpbnQubGF5b3V0LT5waXBlbGluZUxheW91dCk7CisgICAgICAgIGF1dG8gY29u
dmVydGVkUGlwZWxpbmVMYXlvdXQgPSBTaGFkZXJNb2R1bGU6OmNvbnZlcnRQaXBlbGluZUxheW91
dChoaW50LmhpbnQubGF5b3V0LT5waXBlbGluZUxheW91dCk7CisgICAgICAgIHdnc2xIaW50cy5h
ZGQoaGludC5rZXksIFdURk1vdmUoY29udmVydGVkUGlwZWxpbmVMYXlvdXQpKTsKKyAgICB9Cisg
ICAgYXV0byBwcmVwYXJlUmVzdWx0ID0gcHJlcGFyZShzdGQ6OmdldDxXR1NMOjpTdWNjZXNzZnVs
Q2hlY2s+KGNoZWNrUmVzdWx0KS5hc3QsIHdnc2xIaW50cyk7CisgICAgYXV0byBsaWJyYXJ5ID0g
U2hhZGVyTW9kdWxlOjpjcmVhdGVMaWJyYXJ5KGRldmljZSwgcHJlcGFyZVJlc3VsdC5tc2wsIGxh
YmVsKTsKKyAgICBpZiAoIWxpYnJhcnkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBTaGFkZXJNb2R1bGU6OmNyZWF0ZShXVEZNb3ZlKGNoZWNrUmVzdWx0KSwgV1RGTW92ZSho
aW50cyksIFdURk1vdmUocHJlcGFyZVJlc3VsdC5lbnRyeVBvaW50cyksIGxpYnJhcnkpOworfQor
CitSZWZQdHI8U2hhZGVyTW9kdWxlPiBEZXZpY2U6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBX
R1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKK3sKKyAgICBpZiAoIWRlc2Ny
aXB0b3ItPm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8g
c2hhZGVyTW9kdWxlUGFyYW1ldGVycyA9IGZpbmRTaGFkZXJNb2R1bGVQYXJhbWV0ZXJzKGRlc2Ny
aXB0b3IpOworICAgIGlmICghc2hhZGVyTW9kdWxlUGFyYW1ldGVycykKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGNoZWNrUmVzdWx0ID0gV0dTTDo6c3RhdGljQ2hlY2soU3Ry
aW5nKHNoYWRlck1vZHVsZVBhcmFtZXRlcnMtPndnc2wuY29kZSksIHN0ZDo6bnVsbG9wdCk7CisK
KyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxXR1NMOjpTdWNjZXNzZnVsQ2hlY2s+KGNo
ZWNrUmVzdWx0KSAmJiBzaGFkZXJNb2R1bGVQYXJhbWV0ZXJzLT5oaW50cyAmJiBzaGFkZXJNb2R1
bGVQYXJhbWV0ZXJzLT5oaW50cy0+aGludHNDb3VudCkKKyAgICAgICAgcmV0dXJuIGVhcmx5Q29t
cGlsZVNoYWRlck1vZHVsZShtX2RldmljZSwgV1RGTW92ZShjaGVja1Jlc3VsdCksICpzaGFkZXJN
b2R1bGVQYXJhbWV0ZXJzLT5oaW50cywgW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmRlc2Ny
aXB0b3ItPmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSk7CisKKyAgICByZXR1
cm4gU2hhZGVyTW9kdWxlOjpjcmVhdGUoV1RGTW92ZShjaGVja1Jlc3VsdCksIHsgfSwgeyB9LCBu
aWwpOworfQorCitTaGFkZXJNb2R1bGU6OlNoYWRlck1vZHVsZShzdGQ6OnZhcmlhbnQ8V0dTTDo6
U3VjY2Vzc2Z1bENoZWNrLCBXR1NMOjpGYWlsZWRDaGVjaz4mJiBjaGVja1Jlc3VsdCwgSGFzaE1h
cDxTdHJpbmcsIFJlZjxQaXBlbGluZUxheW91dD4+JiYgcGlwZWxpbmVMYXlvdXRIaW50cywgSGFz
aE1hcDxTdHJpbmcsIFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1hdGlvbj4mJiBl
bnRyeVBvaW50SW5mb3JtYXRpb24sIGlkIDxNVExMaWJyYXJ5PiBsaWJyYXJ5KQorICAgIDogbV9j
aGVja1Jlc3VsdChXVEZNb3ZlKGNoZWNrUmVzdWx0KSkKKyAgICAsIG1fcGlwZWxpbmVMYXlvdXRI
aW50cyhXVEZNb3ZlKHBpcGVsaW5lTGF5b3V0SGludHMpKQorICAgICwgbV9lbnRyeVBvaW50SW5m
b3JtYXRpb24oV1RGTW92ZShlbnRyeVBvaW50SW5mb3JtYXRpb24pKQorICAgICwgbV9saWJyYXJ5
KGxpYnJhcnkpCit7Cit9CiAKIFNoYWRlck1vZHVsZTo6flNoYWRlck1vZHVsZSgpID0gZGVmYXVs
dDsKIAorc3RydWN0IE1lc3NhZ2VzIHsKKyAgICBjb25zdCBWZWN0b3I8V0dTTDo6Q29tcGlsYXRp
b25NZXNzYWdlPiYgbWVzc2FnZXM7CisgICAgV0dQVUNvbXBpbGF0aW9uTWVzc2FnZVR5cGUgdHlw
ZTsKK307CisKK3N0cnVjdCBDb21waWxhdGlvbk1lc3NhZ2VEYXRhIHsKKyAgICBDb21waWxhdGlv
bk1lc3NhZ2VEYXRhKFZlY3RvcjxXR1BVQ29tcGlsYXRpb25NZXNzYWdlPiYmIGNvbXBpbGF0aW9u
TWVzc2FnZXMsIFZlY3RvcjxDU3RyaW5nPiYmIG1lc3NhZ2VzKQorICAgICAgICA6IGNvbXBpbGF0
aW9uTWVzc2FnZXMoV1RGTW92ZShjb21waWxhdGlvbk1lc3NhZ2VzKSkKKyAgICAgICAgLCBtZXNz
YWdlcyhXVEZNb3ZlKG1lc3NhZ2VzKSkKKyAgICB7CisgICAgfQorCisgICAgQ29tcGlsYXRpb25N
ZXNzYWdlRGF0YShjb25zdCBDb21waWxhdGlvbk1lc3NhZ2VEYXRhJikgPSBkZWxldGU7CisgICAg
Q29tcGlsYXRpb25NZXNzYWdlRGF0YShDb21waWxhdGlvbk1lc3NhZ2VEYXRhJiYpID0gZGVmYXVs
dDsKKworICAgIFZlY3RvcjxXR1BVQ29tcGlsYXRpb25NZXNzYWdlPiBjb21waWxhdGlvbk1lc3Nh
Z2VzOworICAgIFZlY3RvcjxDU3RyaW5nPiBtZXNzYWdlczsKK307CisKK3N0YXRpYyBDb21waWxh
dGlvbk1lc3NhZ2VEYXRhIGNvbnZlcnRNZXNzYWdlcyhjb25zdCBNZXNzYWdlcyYgbWVzc2FnZXMx
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VzPiYgbWVzc2FnZXMyID0gc3RkOjpudWxsb3B0
KQoreworICAgIFZlY3RvcjxXR1BVQ29tcGlsYXRpb25NZXNzYWdlPiBmbGF0dGVuZWRDb21waWxh
dGlvbk1lc3NhZ2VzOworICAgIFZlY3RvcjxDU3RyaW5nPiBmbGF0dGVuZWRNZXNzYWdlczsKKwor
ICAgIGF1dG8gcG9wdWxhdGVNZXNzYWdlcyA9IFsmXSAoY29uc3QgTWVzc2FnZXMmIGNvbXBpbGF0
aW9uTWVzc2FnZXMpIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjb21waWxhdGlvbk1lc3Nh
Z2UgOiBjb21waWxhdGlvbk1lc3NhZ2VzLm1lc3NhZ2VzKQorICAgICAgICAgICAgZmxhdHRlbmVk
TWVzc2FnZXMuYXBwZW5kKGNvbXBpbGF0aW9uTWVzc2FnZS5tZXNzYWdlLnV0ZjgoKSk7CisgICAg
fTsKKworICAgIHBvcHVsYXRlTWVzc2FnZXMobWVzc2FnZXMxKTsKKyAgICBpZiAobWVzc2FnZXMy
KQorICAgICAgICBwb3B1bGF0ZU1lc3NhZ2VzKCptZXNzYWdlczIpOworCisgICAgYXV0byBwb3B1
bGF0ZUNvbXBpbGF0aW9uTWVzc2FnZXMgPSBbJl0gKGNvbnN0IE1lc3NhZ2VzJiBjb21waWxhdGlv
bk1lc3NhZ2VzLCBzaXplX3QgYmFzZSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvbXBpbGF0aW9uTWVzc2FnZXMubWVzc2FnZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGNvbnN0IGF1dG8mIGNvbXBpbGF0aW9uTWVzc2FnZSA9IGNvbXBpbGF0aW9uTWVzc2FnZXMubWVz
c2FnZXNbaV07CisgICAgICAgICAgICBmbGF0dGVuZWRDb21waWxhdGlvbk1lc3NhZ2VzLmFwcGVu
ZCh7CisgICAgICAgICAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICBmbGF0dGVuZWRN
ZXNzYWdlc1tpICsgYmFzZV0uZGF0YSgpLAorICAgICAgICAgICAgICAgIGNvbXBpbGF0aW9uTWVz
c2FnZXMudHlwZSwKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbk1lc3NhZ2UubGluZU51bWJl
ciwKKyAgICAgICAgICAgICAgICBjb21waWxhdGlvbk1lc3NhZ2UubGluZVBvc2l0aW9uLAorICAg
ICAgICAgICAgICAgIGNvbXBpbGF0aW9uTWVzc2FnZS5vZmZzZXQsCisgICAgICAgICAgICAgICAg
Y29tcGlsYXRpb25NZXNzYWdlLmxlbmd0aCwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9Cisg
ICAgfTsKKworICAgIHBvcHVsYXRlQ29tcGlsYXRpb25NZXNzYWdlcyhtZXNzYWdlczEsIDApOwor
ICAgIGlmIChtZXNzYWdlczIpCisgICAgICAgIHBvcHVsYXRlQ29tcGlsYXRpb25NZXNzYWdlcygq
bWVzc2FnZXMyLCBtZXNzYWdlczEubWVzc2FnZXMuc2l6ZSgpKTsKKworICAgIHJldHVybiB7IFdU
Rk1vdmUoZmxhdHRlbmVkQ29tcGlsYXRpb25NZXNzYWdlcyksIFdURk1vdmUoZmxhdHRlbmVkTWVz
c2FnZXMpIH07Cit9CisKIHZvaWQgU2hhZGVyTW9kdWxlOjpnZXRDb21waWxhdGlvbkluZm8oV1RG
OjpGdW5jdGlvbjx2b2lkKFdHUFVDb21waWxhdGlvbkluZm9SZXF1ZXN0U3RhdHVzLCBjb25zdCBX
R1BVQ29tcGlsYXRpb25JbmZvKik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNh
bGxiYWNrKTsKKyAgICBXVEY6OnN3aXRjaE9uKG1fY2hlY2tSZXN1bHQsIFsmXSAoY29uc3QgV0dT
TDo6U3VjY2Vzc2Z1bENoZWNrJiBzdWNjZXNzZnVsQ2hlY2spIHsKKyAgICAgICAgYXV0byBjb21w
aWxhdGlvbk1lc3NhZ2VEYXRhKGNvbnZlcnRNZXNzYWdlcyh7IHN1Y2Nlc3NmdWxDaGVjay53YXJu
aW5ncywgV0dQVUNvbXBpbGF0aW9uTWVzc2FnZVR5cGVfV2FybmluZyB9KSk7CisgICAgICAgIFdH
UFVDb21waWxhdGlvbkluZm8gY29tcGlsYXRpb25JbmZvIHsKKyAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29tcGlsYXRpb25NZXNzYWdlRGF0
YS5jb21waWxhdGlvbk1lc3NhZ2VzLnNpemUoKSksCisgICAgICAgICAgICBjb21waWxhdGlvbk1l
c3NhZ2VEYXRhLmNvbXBpbGF0aW9uTWVzc2FnZXMuZGF0YSgpLAorICAgICAgICB9OworICAgICAg
ICBjYWxsYmFjayhXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1c19TdWNjZXNzLCAmY29t
cGlsYXRpb25JbmZvKTsKKyAgICB9LCBbJl0gKGNvbnN0IFdHU0w6OkZhaWxlZENoZWNrJiBmYWls
ZWRDaGVjaykgeworICAgICAgICBhdXRvIGNvbXBpbGF0aW9uTWVzc2FnZURhdGEoY29udmVydE1l
c3NhZ2VzKAorICAgICAgICAgICAgeyBmYWlsZWRDaGVjay5lcnJvcnMsIFdHUFVDb21waWxhdGlv
bk1lc3NhZ2VUeXBlX0Vycm9yIH0sCisgICAgICAgICAgICB7IHsgZmFpbGVkQ2hlY2sud2Fybmlu
Z3MsIFdHUFVDb21waWxhdGlvbk1lc3NhZ2VUeXBlX1dhcm5pbmcgfSB9KSk7CisgICAgICAgIFdH
UFVDb21waWxhdGlvbkluZm8gY29tcGlsYXRpb25JbmZvIHsKKyAgICAgICAgICAgIG51bGxwdHIs
CisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29tcGlsYXRpb25NZXNzYWdlRGF0
YS5jb21waWxhdGlvbk1lc3NhZ2VzLnNpemUoKSksCisgICAgICAgICAgICBjb21waWxhdGlvbk1l
c3NhZ2VEYXRhLmNvbXBpbGF0aW9uTWVzc2FnZXMuZGF0YSgpLAorICAgICAgICB9OworICAgICAg
ICBjYWxsYmFjayhXR1BVQ29tcGlsYXRpb25JbmZvUmVxdWVzdFN0YXR1c19FcnJvciwgJmNvbXBp
bGF0aW9uSW5mbyk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2hhZGVyTW9kdWxlOjpzZXRMYWJlbChj
b25zdCBjaGFyKiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGlmICht
X2xpYnJhcnkpCisgICAgICAgIG1fbGlicmFyeS5sYWJlbCA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Q1N0cmluZzpsYWJlbCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cit9CisKK1dHU0w6
OlBpcGVsaW5lTGF5b3V0IFNoYWRlck1vZHVsZTo6Y29udmVydFBpcGVsaW5lTGF5b3V0KGNvbnN0
IFBpcGVsaW5lTGF5b3V0JiBwaXBlbGluZUxheW91dCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocGlw
ZWxpbmVMYXlvdXQpOworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworICAgIHJldHVybiB7
IHsgfSB9OworfQorCitjb25zdCBXR1NMOjpBU1QqIFNoYWRlck1vZHVsZTo6YXN0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihtX2NoZWNrUmVzdWx0LCBbJl0gKGNvbnN0IFdH
U0w6OlN1Y2Nlc3NmdWxDaGVjayYgc3VjY2Vzc2Z1bENoZWNrKSAtPiBjb25zdCBXR1NMOjpBU1Qq
IHsKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxDaGVjay5hc3QucHRyKCk7CisgICAgfSwgWyZd
IChjb25zdCBXR1NMOjpGYWlsZWRDaGVjayYpIC0+IGNvbnN0IFdHU0w6OkFTVCogeworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9KTsKK30KKworY29uc3QgUGlwZWxpbmVMYXlvdXQqIFNo
YWRlck1vZHVsZTo6cGlwZWxpbmVMYXlvdXRIaW50KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QK
K3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9waXBlbGluZUxheW91dEhpbnRzLmZpbmQobmFtZSk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fcGlwZWxpbmVMYXlvdXRIaW50cy5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZS5wdHIoKTsKK30K
KworY29uc3QgV0dTTDo6UmVmbGVjdGlvbjo6RW50cnlQb2ludEluZm9ybWF0aW9uKiBTaGFkZXJN
b2R1bGU6OmVudHJ5UG9pbnRJbmZvcm1hdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0Cit7
CisgICAgYXV0byBpdGVyYXRvciA9IG1fZW50cnlQb2ludEluZm9ybWF0aW9uLmZpbmQobmFtZSk7
CisgICAgaWYgKGl0ZXJhdG9yID09IG1fZW50cnlQb2ludEluZm9ybWF0aW9uLmVuZCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9T
d2FwQ2hhaW4ubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KaW5kZXggOWZj
ZjhkNWE5MmVhOTI0ZjFlM2Q1OWNmZmRjZWM2NzBiYThhMGE1MS4uYTVmMzlhYTlmYjIwNGUxYmNj
NjE2ZjI1YTFhYTA5OTUxMzkwNmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
U3dhcENoYWluLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQpAQCAt
MzcsNyArMzcsNyBAQCBTd2FwQ2hhaW46On5Td2FwQ2hhaW4oKSA9IGRlZmF1bHQ7CiAKIFJlZjxU
ZXh0dXJlVmlldz4gU3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZVZpZXcoKQogewotICAgIHJl
dHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVh
dGUobmlsKTsKIH0KIAogdm9pZCBTd2FwQ2hhaW46OnByZXNlbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZS5oCmluZGV4IGEyMmI4MjM3NzUxYTAxOGY3M2Y1ZDNlZWE2ZGVmY2RhMjE2NTBiNjQuLjg1OGU5
ZTlkZjg3ODlhZjEyYmRiYzdkNTRlZTMwNjk5MGVhMjM3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
LmgKQEAgLTM3LDkgKzM3LDkgQEAgY2xhc3MgVGV4dHVyZVZpZXc7CiBjbGFzcyBUZXh0dXJlIDog
cHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKCkKKyAgICBzdGF0aWMg
UmVmPFRleHR1cmU+IGNyZWF0ZShpZCA8TVRMVGV4dHVyZT4gdGV4dHVyZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUoKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHR1cmUodGV4dHVyZSkpOwogICAgIH0KIAogICAgIH5UZXh0dXJlKCk7CkBA
IC00OCw4ICs0OCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95KCk7CiAgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBjaGFyKik7CiAKKyAgICBpZCA8TVRMVGV4dHVyZT4gdGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQorCiBwcml2YXRlOgotICAgIFRleHR1cmUoKTsKKyAg
ICBUZXh0dXJlKGlkIDxNVExUZXh0dXJlPik7CisKKyAgICBpZCA8TVRMVGV4dHVyZT4gbV90ZXh0
dXJlIHsgbmlsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0
dXJlLm1tCmluZGV4IDI0NTczMTZhNWNkYzczMzhiNDQzYWE0M2Q4N2Y0ZjVhMmQxYWZjMmQuLjRj
ZmRiYjY2MjE3N2U5ZTdjYTUyOWUzNmUxNzk4MDA2OTRmZGEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5tbQpAQCAtMjYsMjggKzI2LDM5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlRleHR1cmUuaCIKIAorI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJUZXh0dXJlVmlldy5o
IgogI2ltcG9ydCAiV2ViR1BVRXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1UZXh0dXJl
OjpUZXh0dXJlKCkgPSBkZWZhdWx0OworUmVmPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVy
ZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCit7CisgICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOworICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUobmlsKTsKK30K
KworVGV4dHVyZTo6VGV4dHVyZShpZCA8TVRMVGV4dHVyZT4gdGV4dHVyZSkKKyAgICA6IG1fdGV4
dHVyZSh0ZXh0dXJlKQoreworfQogCiBUZXh0dXJlOjp+VGV4dHVyZSgpID0gZGVmYXVsdDsKIAog
UmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3Ip
OwotICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFRleHR1cmVW
aWV3OjpjcmVhdGUobmlsKTsKIH0KIAogdm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKIHsKKyAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9CiAKIHZvaWQgVGV4dHVyZTo6c2V0TGFiZWwoY29u
c3QgY2hhciogbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBtX3RleHR1
cmUubGFiZWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6bGFiZWwgZW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlVmlldy5oCmluZGV4IGI5YzYyZDlmYjk5ZjYyMTNlNjYyZmU3NTFjNDQwYmU5
ZGJhYzZiOGUuLjQwNzEyY2QzZWZiZmNhZTdkYmMyMGI1MGM0YTFkNTk3ZDQ4MTkyZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaApAQCAtMzUsMTcgKzM1LDIxIEBAIG5hbWVzcGFjZSBX
ZWJHUFUgewogY2xhc3MgVGV4dHVyZVZpZXcgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlVmll
dz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxUZXh0dXJlVmlldz4gY3Jl
YXRlKGlkIDxNVExUZXh0dXJlPiB0ZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dHVyZVZpZXcoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRl
eHR1cmVWaWV3KHRleHR1cmUpKTsKICAgICB9CiAKICAgICB+VGV4dHVyZVZpZXcoKTsKIAogICAg
IHZvaWQgc2V0TGFiZWwoY29uc3QgY2hhciopOwogCisgICAgaWQgPE1UTFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0KKwogcHJpdmF0ZToKLSAgICBUZXh0dXJl
VmlldygpOworICAgIFRleHR1cmVWaWV3KGlkIDxNVExUZXh0dXJlPik7CisKKyAgICBpZCA8TVRM
VGV4dHVyZT4gbV90ZXh0dXJlIHsgbmlsIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KaW5kZXggY2I3YmMxZmRhYjVkOWNkNGVjMWY5
Mjg4ZjcxOGJhNDhlNmJmYzIwMS4uZDhjZTM2MWQwODQ0NzQxOGUyODg1MTk3NDQ4Y2MxMTA2MGE1
ODZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KQEAgLTMwLDEzICszMCwxNiBA
QAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotVGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3KCkgPSBk
ZWZhdWx0OworVGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3KGlkIDxNVExUZXh0dXJlPiB0ZXh0dXJl
KQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CiAKIFRleHR1cmVWaWV3Ojp+VGV4dHVy
ZVZpZXcoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgVGV4dHVyZVZpZXc6OnNldExhYmVsKGNvbnN0IGNo
YXIqIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgbV90ZXh0dXJlLmxh
YmVsID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDU3RyaW5nOmxhYmVsIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Y29uZmlnLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaAppbmRleCA4YzEyN2E5NDM0
MGE3ZDdhYzAyOTliYmY0MjdhMTI3NmU1MTU2NzNiLi5kMDc5MTIxYmIyMjYwNWFkNzE5ZTkxYWE5
MGI5MmIxNGZkNDFmNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9jb25maWcuaApAQCAtMjUsOCArMjUsOCBAQAog
CiAjaW5jbHVkZSAiRXhwb3J0TWFjcm9zLmgiCiAKLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPE1ldGFsL01ldGFsLmg+CiAKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+Ci0KICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>