<?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>238001</bug_id>
          
          <creation_ts>2022-03-16 22:48:51 -0700</creation_ts>
          <short_desc>[WebGPU] Remove the double pointer indirection in front of all objects</short_desc>
          <delta_ts>2022-03-22 14:33:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1852138</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 22:48:51 -0700</bug_when>
    <thetext>[WebGPU] Remove the double pointer indirection in front of all objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852139</commentid>
    <comment_count>1</comment_count>
      <attachid>454933</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 23:15:14 -0700</bug_when>
    <thetext>Created attachment 454933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852141</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-16 23:19:54 -0700</bug_when>
    <thetext>*** Bug 237921 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852164</commentid>
    <comment_count>3</comment_count>
      <attachid>454933</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-17 00:51:02 -0700</bug_when>
    <thetext>Comment on attachment 454933
Patch

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

&gt; Source/WebGPU/ChangeLog:18
&gt; +

Unfortunately you have to invert the relationship.

Now you have reasoning of:
&quot;WGPUBufferImpl has the same layout as WebGPU::Buffer. This means I can take hunk of data pointed by WGPUBufferImpl* and treat it as WebGPU::Buffer&quot;.

This is invalid reasoning. You can imagine a compiler that knows everything. It will know that the program never creates a single WGPUBufferImpl. This means it will remove all code that accesses data through WGPUBufferImpls, as that simply cannot happen, as there are never instances of such.

So when you have code like:
void wgpuAdapterRelease(WGPUAdapter adapter)
{
    adapter-&gt;deref();
}

The code will be removed, because WGPUAdapterImpl is never instantiated, so that -&gt;deref() call cannot ever be made.


This is the same scenario as having:
struct Kimmo {
  int a;
};
struct Myles {
  int a;
}

Myles* m = getMyles();

Kimmo* k = static_cast&lt;Kimmo*&gt;(m);
printf(&quot;%d&quot;, k-&gt;a);



struct WGPUBufferImpl : public WebGPU::Buffer;

// This is UB, WebGPU::Buffer is not WGPUBufferImpl.
WGPUBufferImpl* wgpuobj = static_cast&lt;WGPUBufferImp *&gt;(new WebGPU::Buffer());

// This is UB, WebGPU::Buffer is not float.
float* wgpuobj = static_cast&lt;float*&gt;(new WebGPU::Buffer());


E.g. you have to have something where WGPUBufferImpl is instantiated.

Since you instantiate WebGPU::Buffer instances, you need to have

struct WGPUBufferImpl {};
class WebGPU::Buffer : public WGPUBufferImpl {};

This way you can downcast:

WGPUBufferImpl* wgpuobj = new  WebGPU::Buffer();

// This is defined, since wgpuobject points to a real WebGPU::Buffer.
static_cast&lt;WebGPU::Buffer*&gt;(wgpuobj)-&gt;doSomethingBuffery();

So going back:

WebGPU::Adapter* fromAPI(WGPUAdapter adapter)
{
    // This static cast is DEFINED, IFF adapter was created from a pointer that pointed to WebGPU::Adapter. 
    return static_cast&lt;WebGPU::Adapter*&gt;(adapter);
}

void wgpuAdapterRelease(WGPUAdapter adapter)
{
    fromAPI(adapter)-&gt;deref();
}



The minimal type punning is achieved when:
-Input downcasts
- Output is natural subtype conversion

if you:
-  don&apos;t want empty base clasess
- void* types in the api

Then you need to type pun to opaque struct ptrs in the output.

&gt; Source/WebGPU/WebGPU/CommandEncoder.mm:363
&gt; +    return static_cast&lt;WGPUComputePassEncoder&gt;(WebGPU::fromAPI(commandEncoder).beginComputePass(*descriptor).leakRef());

So this is incorrect type punning, leading to UB.

There is never an instance of WGPUComputePassEncoder in this program. So the (all knowing) compiler knows this and can remove all code that ever references these codes, as they never can execute. If they would execute, they&apos;d be UB. 

You have to invert the inheritance, unfortunately.


so you write this code as

    return WebGPU::releaseToAPI(WebGPU::fromAPI(commandEncoder).beginComputePass(*descriptor));


WGPUComputePassEncoder releaseToAPI(RefPtr&lt;WebGPU::ComputePassEncoder&gt;&amp;&amp; e)
{
     return e.leakRef();
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852182</commentid>
    <comment_count>4</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-17 01:34:49 -0700</bug_when>
    <thetext>if you:
- don&apos;t want empty base clasess
- don&apos;t want void* types in the api

Then you need to type pun to opaque struct ptrs in the output.

So you have plain-old opaque struct api:

typedef struct WGPUBuffer WGPUBuffer; 
// struct WGPUBuffer opaque, never defined.
class WebGPU::Buffer {};

WGPUBuffer* releaseToAPI(RefPtr&lt;WebGPU::Buffer&gt;&amp;&amp; e)
{
     return reinterpret_cast&lt;WGPUBuffer*&gt;(e.leakRef());
}


WebGPU::Buffer&amp; fromAPI(WGPUBuffer* b)
{
   return *reinterpret_cast&lt;WebGPU::Buffer*&gt;(b);
}

Strictly that should be UB too, but at least that&apos;s just something everybody lives with, I suppose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853480</commentid>
    <comment_count>5</comment_count>
      <attachid>455317</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-21 19:17:14 -0700</bug_when>
    <thetext>Created attachment 455317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853820</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-22 12:05:35 -0700</bug_when>
    <thetext>Committed r291687 (248729@main): &lt;https://commits.webkit.org/248729@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455317.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853821</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-22 12:06:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/90651490&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454933</attachid>
            <date>2022-03-16 23:15:14 -0700</date>
            <delta_ts>2022-03-21 19:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238001-20220316231514.patch</filename>
            <type>text/plain</type>
            <size>48550</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDg0ZDE1OGM2NzIxZjAyYTI5
NDg2NGQzYTFlNjViNjJjOGUyOGMzZDAuLjg1MzRmYjM5ODQzN2M4MzM5MWY4ZjFhMGUzODJjNGQ0
NzM2Yzc3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI4IEBACisyMDIyLTAzLTE2ICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVt
b3ZlIHRoZSBkb3VibGUgcG9pbnRlciBpbmRpcmVjdGlvbiBpbiBmcm9udCBvZiBhbGwgb2JqZWN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVh
ZCBvZiBkb2luZworCisgICAgICAgIHN0cnVjdCBXR1BVQnVmZmVySW1wbCB7CisgICAgICAgICAg
ICBSZWY8V2ViR1BVOjpCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgfQorCisgICAgICAgIHdlIGNh
biBpbnN0ZWFkIGRvCisKKyAgICAgICAgc3RydWN0IFdHUFVCdWZmZXJJbXBsIDogcHVibGljIFdl
YkdQVTo6QnVmZmVyIHsKKyAgICAgICAgfTsKKworICAgICAgICBzbyB3ZSBkb24ndCBoYXZlIHRv
IGRvIHBvaW50ZXIgY2hhc2luZyB0byBpbnRlcmFjdCB3aXRoIG9iamVjdHMuCisKKyAgICAgICAg
KiBXZWJHUFUvQVBJQ29udmVyc2lvbnMuaDoKKyAgICAgICAgKFdlYkdQVTo6ZnJvbUFQSSk6Cisg
ICAgICAgICogV2ViR1BVL0FkYXB0ZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQWRhcHRlci5tbToK
KyAgICAgICAgKHdncHVBZGFwdGVyUmVsZWFzZSk6CisgICAgICAgICh3Z3B1QWRhcHRlclJlcXVl
c3REZXZpY2UpOgorICAgICAgICAod2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlV2l0aEJsb2NrKToK
KyAgICAgICAgKiBXZWJHUFUvQmluZEdyb3VwLmg6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91
cC5tbToKKyAgICAgICAgKHdncHVCaW5kR3JvdXBSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUv
QmluZEdyb3VwTGF5b3V0Lmg6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5tbToK
KyAgICAgICAgKHdncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUv
QnVmZmVyLmg6CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5tbToKKyAgICAgICAgKHdncHVCdWZm
ZXJSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEJ1ZmZlci5oOgorICAgICAgICAq
IFdlYkdQVS9Db21tYW5kQnVmZmVyLm1tOgorICAgICAgICAod2dwdUNvbW1hbmRCdWZmZXJSZWxl
YXNlKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJH
UFUvQ29tbWFuZEVuY29kZXIubW06CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJSZWxlYXNl
KToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlckJlZ2luQ29tcHV0ZVBhc3MpOgorICAgICAg
ICAod2dwdUNvbW1hbmRFbmNvZGVyQmVnaW5SZW5kZXJQYXNzKToKKyAgICAgICAgKHdncHVDb21t
YW5kRW5jb2RlckZpbmlzaCk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5o
OgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW06CisgICAgICAgICh3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL0NvbXB1dGVQaXBl
bGluZS5oOgorICAgICAgICAqIFdlYkdQVS9Db21wdXRlUGlwZWxpbmUubW06CisgICAgICAgICh3
Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZSk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVsaW5l
R2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKiBXZWJHUFUvRGV2aWNlLmg6CisgICAgICAg
ICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAgKHdncHVEZXZpY2VSZWxlYXNlKToKKyAgICAg
ICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXApOgorICAgICAgICAod2dwdURldmljZUNyZWF0
ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQnVmZmVyKToKKyAg
ICAgICAgKHdncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgICh3Z3B1RGV2
aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVDb21w
dXRlUGlwZWxpbmVBc3luYyk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVs
aW5lQXN5bmNXaXRoQmxvY2spOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5
b3V0KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVRdWVyeVNldCk6CisgICAgICAgICh3Z3B1
RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAgICAgICh3Z3B1RGV2aWNlQ3Jl
YXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVs
aW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNX
aXRoQmxvY2spOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAo
d2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRl
U3dhcENoYWluKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVUZXh0dXJlKToKKyAgICAgICAg
KHdncHVEZXZpY2VHZXRRdWV1ZSk6CisgICAgICAgICogV2ViR1BVL0luc3RhbmNlLmg6CisgICAg
ICAgICogV2ViR1BVL0luc3RhbmNlLm1tOgorICAgICAgICAod2dwdUluc3RhbmNlUmVsZWFzZSk6
CisgICAgICAgICh3Z3B1Q3JlYXRlSW5zdGFuY2UpOgorICAgICAgICAod2dwdUluc3RhbmNlQ3Jl
YXRlU3VyZmFjZSk6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcik6CisgICAg
ICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldpdGhCbG9jayk6CisgICAgICAgICogV2Vi
R1BVL1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1t
OgorICAgICAgICAod2dwdVBpcGVsaW5lTGF5b3V0UmVsZWFzZSk6CisgICAgICAgICogV2ViR1BV
L1F1ZXJ5U2V0Lmg6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lm1tOgorICAgICAgICAod2dw
dVF1ZXJ5U2V0UmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLmg6CisgICAgICAgICog
V2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAod2dwdVF1ZXVlUmVsZWFzZSk6CisgICAgICAgICog
V2ViR1BVL1JlbmRlckJ1bmRsZS5oOgorICAgICAgICAqIFdlYkdQVS9SZW5kZXJCdW5kbGUubW06
CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL1Jl
bmRlckJ1bmRsZUVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rl
ci5tbToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZSk6CisgICAgICAg
ICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckZpbmlzaCk6CisgICAgICAgICogV2ViR1BVL1JlbmRl
clBhc3NFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tOgor
ICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BV
L1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLm1tOgor
ICAgICAgICAod2dwdVJlbmRlclBpcGVsaW5lUmVsZWFzZSk6CisgICAgICAgICh3Z3B1UmVuZGVy
UGlwZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQpOgorICAgICAgICAqIFdlYkdQVS9TYW1wbGVyLmg6
CisgICAgICAgICogV2ViR1BVL1NhbXBsZXIubW06CisgICAgICAgICh3Z3B1U2FtcGxlclJlbGVh
c2UpOgorICAgICAgICAqIFdlYkdQVS9TaGFkZXJNb2R1bGUuaDoKKyAgICAgICAgKiBXZWJHUFUv
U2hhZGVyTW9kdWxlLm1tOgorICAgICAgICAoV2ViR1BVOjplYXJseUNvbXBpbGVTaGFkZXJNb2R1
bGUpOgorICAgICAgICAod2dwdVNoYWRlck1vZHVsZVJlbGVhc2UpOgorICAgICAgICAqIFdlYkdQ
VS9TdXJmYWNlLmg6CisgICAgICAgICogV2ViR1BVL1N1cmZhY2UubW06CisgICAgICAgICh3Z3B1
U3VyZmFjZVJlbGVhc2UpOgorICAgICAgICAqIFdlYkdQVS9Td2FwQ2hhaW4uaDoKKyAgICAgICAg
KiBXZWJHUFUvU3dhcENoYWluLm1tOgorICAgICAgICAod2dwdVN3YXBDaGFpblJlbGVhc2UpOgor
ICAgICAgICAod2dwdVN3YXBDaGFpbkdldEN1cnJlbnRUZXh0dXJlVmlldyk6CisgICAgICAgICog
V2ViR1BVL1RleHR1cmUuaDoKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5tbToKKyAgICAgICAg
KHdncHVUZXh0dXJlUmVsZWFzZSk6CisgICAgICAgICh3Z3B1VGV4dHVyZUNyZWF0ZVZpZXcpOgor
ICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJl
Vmlldy5tbToKKyAgICAgICAgKHdncHVUZXh0dXJlVmlld1JlbGVhc2UpOgorCiAyMDIyLTAzLTE2
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YkdQVV0gSW1wbGVtZW50IHNhbXBsZXIgY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBzcGVjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BUElDb252ZXJzaW9ucy5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMuaAppbmRleCAwNmZiYjY0Y2FkZjA4ODg3NzQ2
Nzg0ZWE1OTdkZWEyMmUwMzEwNTYwLi4wOTYyM2Q0Njc2OWUwNGM1MjdhYTFlYWVjM2ViZTFlMzI4
ZGY4OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BUElDb252ZXJzaW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNpb25zLmgKQEAgLTU0LDExNyAr
NTQsMTE3IEBAIG5hbWVzcGFjZSBXZWJHUFUgewogCiBpbmxpbmUgQWRhcHRlciYgZnJvbUFQSShX
R1BVQWRhcHRlciBhZGFwdGVyKQogewotICAgIHJldHVybiBhZGFwdGVyLT5hZGFwdGVyOworICAg
IHJldHVybiAqYWRhcHRlcjsKIH0KIAogaW5saW5lIEJpbmRHcm91cCYgZnJvbUFQSShXR1BVQmlu
ZEdyb3VwIGJpbmRHcm91cCkKIHsKLSAgICByZXR1cm4gYmluZEdyb3VwLT5iaW5kR3JvdXA7Cisg
ICAgcmV0dXJuICpiaW5kR3JvdXA7CiB9CiAKIGlubGluZSBCaW5kR3JvdXBMYXlvdXQmIGZyb21B
UEkoV0dQVUJpbmRHcm91cExheW91dCBiaW5kR3JvdXBMYXlvdXQpCiB7Ci0gICAgcmV0dXJuIGJp
bmRHcm91cExheW91dC0+YmluZEdyb3VwTGF5b3V0OworICAgIHJldHVybiAqYmluZEdyb3VwTGF5
b3V0OwogfQogCiBpbmxpbmUgQnVmZmVyJiBmcm9tQVBJKFdHUFVCdWZmZXIgYnVmZmVyKQogewot
ICAgIHJldHVybiBidWZmZXItPmJ1ZmZlcjsKKyAgICByZXR1cm4gKmJ1ZmZlcjsKIH0KIAogaW5s
aW5lIENvbW1hbmRCdWZmZXImIGZyb21BUEkoV0dQVUNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZl
cikKIHsKLSAgICByZXR1cm4gY29tbWFuZEJ1ZmZlci0+Y29tbWFuZEJ1ZmZlcjsKKyAgICByZXR1
cm4gKmNvbW1hbmRCdWZmZXI7CiB9CiAKIGlubGluZSBDb21tYW5kRW5jb2RlciYgZnJvbUFQSShX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIGNvbW1hbmRF
bmNvZGVyLT5jb21tYW5kRW5jb2RlcjsKKyAgICByZXR1cm4gKmNvbW1hbmRFbmNvZGVyOwogfQog
CiBpbmxpbmUgQ29tcHV0ZVBhc3NFbmNvZGVyJiBmcm9tQVBJKFdHUFVDb21wdXRlUGFzc0VuY29k
ZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAgIHJldHVybiBjb21wdXRlUGFzc0VuY29kZXIt
PmNvbXB1dGVQYXNzRW5jb2RlcjsKKyAgICByZXR1cm4gKmNvbXB1dGVQYXNzRW5jb2RlcjsKIH0K
IAogaW5saW5lIENvbXB1dGVQaXBlbGluZSYgZnJvbUFQSShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNv
bXB1dGVQaXBlbGluZSkKIHsKLSAgICByZXR1cm4gY29tcHV0ZVBpcGVsaW5lLT5jb21wdXRlUGlw
ZWxpbmU7CisgICAgcmV0dXJuICpjb21wdXRlUGlwZWxpbmU7CiB9CiAKIGlubGluZSBEZXZpY2Um
IGZyb21BUEkoV0dQVURldmljZSBkZXZpY2UpCiB7Ci0gICAgcmV0dXJuIGRldmljZS0+ZGV2aWNl
OworICAgIHJldHVybiAqZGV2aWNlOwogfQogCiBpbmxpbmUgSW5zdGFuY2UmIGZyb21BUEkoV0dQ
VUluc3RhbmNlIGluc3RhbmNlKQogewotICAgIHJldHVybiBpbnN0YW5jZS0+aW5zdGFuY2U7Cisg
ICAgcmV0dXJuICppbnN0YW5jZTsKIH0KIAogaW5saW5lIFBpcGVsaW5lTGF5b3V0JiBmcm9tQVBJ
KFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCkKIHsKLSAgICByZXR1cm4gcGlwZWxp
bmVMYXlvdXQtPnBpcGVsaW5lTGF5b3V0OworICAgIHJldHVybiAqcGlwZWxpbmVMYXlvdXQ7CiB9
CiAKIGlubGluZSBRdWVyeVNldCYgZnJvbUFQSShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCiB7Ci0g
ICAgcmV0dXJuIHF1ZXJ5U2V0LT5xdWVyeVNldDsKKyAgICByZXR1cm4gKnF1ZXJ5U2V0OwogfQog
CiBpbmxpbmUgUXVldWUmIGZyb21BUEkoV0dQVVF1ZXVlIHF1ZXVlKQogewotICAgIHJldHVybiBx
dWV1ZS0+cXVldWU7CisgICAgcmV0dXJuICpxdWV1ZTsKIH0KIAogaW5saW5lIFJlbmRlckJ1bmRs
ZSYgZnJvbUFQSShXR1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKIHsKLSAgICByZXR1cm4g
cmVuZGVyQnVuZGxlLT5yZW5kZXJCdW5kbGU7CisgICAgcmV0dXJuICpyZW5kZXJCdW5kbGU7CiB9
CiAKIGlubGluZSBSZW5kZXJCdW5kbGVFbmNvZGVyJiBmcm9tQVBJKFdHUFVSZW5kZXJCdW5kbGVF
bmNvZGVyIHJlbmRlckJ1bmRsZUVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIHJlbmRlckJ1bmRsZUVu
Y29kZXItPnJlbmRlckJ1bmRsZUVuY29kZXI7CisgICAgcmV0dXJuICpyZW5kZXJCdW5kbGVFbmNv
ZGVyOwogfQogCiBpbmxpbmUgUmVuZGVyUGFzc0VuY29kZXImIGZyb21BUEkoV0dQVVJlbmRlclBh
c3NFbmNvZGVyIHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIHJldHVybiByZW5kZXJQYXNzRW5j
b2Rlci0+cmVuZGVyUGFzc0VuY29kZXI7CisgICAgcmV0dXJuICpyZW5kZXJQYXNzRW5jb2RlcjsK
IH0KIAogaW5saW5lIFJlbmRlclBpcGVsaW5lJiBmcm9tQVBJKFdHUFVSZW5kZXJQaXBlbGluZSBy
ZW5kZXJQaXBlbGluZSkKIHsKLSAgICByZXR1cm4gcmVuZGVyUGlwZWxpbmUtPnJlbmRlclBpcGVs
aW5lOworICAgIHJldHVybiAqcmVuZGVyUGlwZWxpbmU7CiB9CiAKIGlubGluZSBTYW1wbGVyJiBm
cm9tQVBJKFdHUFVTYW1wbGVyIHNhbXBsZXIpCiB7Ci0gICAgcmV0dXJuIHNhbXBsZXItPnNhbXBs
ZXI7CisgICAgcmV0dXJuICpzYW1wbGVyOwogfQogCiBpbmxpbmUgU2hhZGVyTW9kdWxlJiBmcm9t
QVBJKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogewotICAgIHJldHVybiBzaGFkZXJN
b2R1bGUtPnNoYWRlck1vZHVsZTsKKyAgICByZXR1cm4gKnNoYWRlck1vZHVsZTsKIH0KIAogaW5s
aW5lIFN1cmZhY2UmIGZyb21BUEkoV0dQVVN1cmZhY2Ugc3VyZmFjZSkKIHsKLSAgICByZXR1cm4g
c3VyZmFjZS0+c3VyZmFjZTsKKyAgICByZXR1cm4gKnN1cmZhY2U7CiB9CiAKIGlubGluZSBTd2Fw
Q2hhaW4mIGZyb21BUEkoV0dQVVN3YXBDaGFpbiBzd2FwQ2hhaW4pCiB7Ci0gICAgcmV0dXJuIHN3
YXBDaGFpbi0+c3dhcENoYWluOworICAgIHJldHVybiAqc3dhcENoYWluOwogfQogCiBpbmxpbmUg
VGV4dHVyZSYgZnJvbUFQSShXR1BVVGV4dHVyZSB0ZXh0dXJlKQogewotICAgIHJldHVybiB0ZXh0
dXJlLT50ZXh0dXJlOworICAgIHJldHVybiAqdGV4dHVyZTsKIH0KIAogaW5saW5lIFRleHR1cmVW
aWV3JiBmcm9tQVBJKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldykKIHsKLSAgICByZXR1cm4g
dGV4dHVyZVZpZXctPnRleHR1cmVWaWV3OworICAgIHJldHVybiAqdGV4dHVyZVZpZXc7CiB9CiAK
IGlubGluZSBTdHJpbmcgZnJvbUFQSShjb25zdCBjaGFyKiBzdHJpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFw
dGVyLmgKaW5kZXggZjA1YTE5YTRmY2FjNGVkMDU4NDNjNGE2ZDUwMzQzNDdiMDNiNWEwNi4uYjZj
ZDMwNzI5YzBjMGQ3YWZhMGY5Y2U2MmFkM2FiZmJjN2ZhZmQ3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0
ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
IAotc3RydWN0IFdHUFVBZGFwdGVySW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6QWRhcHRlcj4gYWRh
cHRlcjsKK3N0cnVjdCBXR1BVQWRhcHRlckltcGwgOiBwdWJsaWMgV2ViR1BVOjpBZGFwdGVyIHsK
IH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVBZGFwdGVySW1wbCkgPT0gc2l6ZW9mKFdl
YkdQVTo6QWRhcHRlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRl
ci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggNjRiOTIwNDgyOGNk
ZDE2NzJjMzUyODAzYWNkZGI0NTg3MTBjNTVjZS4uNzI3NDc3MjBlOGZkZmNiZmFjMzlhNGM4Yjlh
MDMxODhjZWEwZTU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5t
bQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCkBAIC0xMzAsNyArMTMwLDcg
QEAgdm9pZCBBZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBDb21wbGV0aW9uSGEKIAogdm9pZCB3Z3B1QWRhcHRlclJlbGVhc2UoV0dQ
VUFkYXB0ZXIgYWRhcHRlcikKIHsKLSAgICBkZWxldGUgYWRhcHRlcjsKKyAgICBhZGFwdGVyLT5k
ZXJlZigpOwogfQogCiBzaXplX3Qgd2dwdUFkYXB0ZXJFbnVtZXJhdGVGZWF0dXJlcyhXR1BVQWRh
cHRlciBhZGFwdGVyLCBXR1BVRmVhdHVyZU5hbWUqIGZlYXR1cmVzKQpAQCAtMTU2LDIxICsxNTYs
MTMgQEAgYm9vbCB3Z3B1QWRhcHRlckhhc0ZlYXR1cmUoV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQ
VUZlYXR1cmVOYW1lIGZlYXR1cmUpCiB2b2lkIHdncHVBZGFwdGVyUmVxdWVzdERldmljZShXR1BV
QWRhcHRlciBhZGFwdGVyLCBjb25zdCBXR1BVRGV2aWNlRGVzY3JpcHRvciogZGVzY3JpcHRvciwg
V0dQVVJlcXVlc3REZXZpY2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7CiAg
ICAgV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtj
YWxsYmFjaywgdXNlcmRhdGFdKFdHUFVSZXF1ZXN0RGV2aWNlU3RhdHVzIHN0YXR1cywgUmVmUHRy
PFdlYkdQVTo6RGV2aWNlPiYmIGRldmljZSwgU3RyaW5nJiYgbWVzc2FnZSkgewotICAgICAgICBp
ZiAoZGV2aWNlKSB7Ci0gICAgICAgICAgICBhdXRvJiBxdWV1ZSA9IGRldmljZS0+Z2V0UXVldWUo
KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgbmV3IFdHUFVEZXZpY2VJbXBsIHsgZGV2
aWNlLnJlbGVhc2VOb25OdWxsKCksIHsgcXVldWUgfSB9LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCks
IHVzZXJkYXRhKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMs
IG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgdXNlcmRhdGEpOworICAgICAgICBjYWxs
YmFjayhzdGF0dXMsIHN0YXRpY19jYXN0PFdHUFVEZXZpY2U+KGRldmljZS5sZWFrUmVmKCkpLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1
QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVURl
dmljZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUJsb2Nr
Q2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJlcXVl
c3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BV
UmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZp
Y2UsIFN0cmluZyYmIG1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKGRldmljZSkgewotICAgICAgICAg
ICAgYXV0byYgcXVldWUgPSBkZXZpY2UtPmdldFF1ZXVlKCk7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhzdGF0dXMsIG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpLCB7
IHF1ZXVlIH0gfSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgc3RhdGljX2Nhc3Q8V0dQVURldmljZT4oZGV2aWNl
LmxlYWtSZWYoKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0JpbmRHcm91cC5oCmluZGV4IDZlMDIwYmM0MTlkYmFmMzg5ODRhZmFiZTBmZDNhZTY1NzY5
Y2VkOGYuLjJlNmZkMmYzNzQyOThjZWExZWQxM2EzYzlkYTIxOGJmNWUyMDhlMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0JpbmRHcm91cC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVUJpbmRHcm91cEltcGwgewotICAgIFJlZjxXZWJH
UFU6OkJpbmRHcm91cD4gYmluZEdyb3VwOworc3RydWN0IFdHUFVCaW5kR3JvdXBJbXBsIDogcHVi
bGljIFdlYkdQVTo6QmluZEdyb3VwIHsKIH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVC
aW5kR3JvdXBJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpCaW5kR3JvdXApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cC5tbQppbmRleCBiMzBmN2VlM2M0NDVjOWI5M2FjMjc2NDljYTIwN2NjZTUxOTdl
MjEwLi4zY2VhYjEwNTk1ZjVkZTYwYjI0NzliZWU3YTc1ODBiMjI3ZjBjYmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0KKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBCaW5kR3JvdXA6OnNl
dExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVCaW5kR3JvdXBSZWxlYXNlKFdHUFVC
aW5kR3JvdXAgYmluZEdyb3VwKQogewotICAgIGRlbGV0ZSBiaW5kR3JvdXA7CisgICAgYmluZEdy
b3VwLT5kZXJlZigpOwogfQogCiB2b2lkIHdncHVCaW5kR3JvdXBTZXRMYWJlbChXR1BVQmluZEdy
b3VwIGJpbmRHcm91cCwgY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRH
cm91cExheW91dC5oCmluZGV4IGJiNmU2Zjg5MTM1MjJhMzBkNWY2ZTQ2ZThiMzY4OGJhZjNlODFh
NDYuLmFjMTBkZmQyZTE0NWYyZDY2ZDFlYmI2Y2Y4OGQ0MmRmMDJkNGZjN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5oCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5oCkBAIC01OSw2ICs1OSw3IEBAIHByaXZhdGU6CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVUJpbmRHcm91cExheW91dEltcGwg
ewotICAgIFJlZjxXZWJHUFU6OkJpbmRHcm91cExheW91dD4gYmluZEdyb3VwTGF5b3V0Oworc3Ry
dWN0IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIDogcHVibGljIFdlYkdQVTo6QmluZEdyb3VwTGF5
b3V0IHsKIH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBs
KSA9PSBzaXplb2YoV2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0JpbmRHcm91cExheW91dC5tbQppbmRleCBmOTcyODk1NTU4ZjllYmE5MDk0ZjU0NTJkMTYyYzJi
MmFkNGQzMTRlLi4zYjlkYzI1OWFhZDAyYzQ4OGQwOGUzYjM0YzkwZjYxN2M0ZGI4ZDAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KKysrIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tCkBAIC0yNDMsNyArMjQzLDcgQEAg
TlNVSW50ZWdlciBCaW5kR3JvdXBMYXlvdXQ6OmVuY29kZWRMZW5ndGgoKSBjb25zdAogCiB2b2lk
IHdncHVCaW5kR3JvdXBMYXlvdXRSZWxlYXNlKFdHUFVCaW5kR3JvdXBMYXlvdXQgYmluZEdyb3Vw
TGF5b3V0KQogewotICAgIGRlbGV0ZSBiaW5kR3JvdXBMYXlvdXQ7CisgICAgYmluZEdyb3VwTGF5
b3V0LT5kZXJlZigpOwogfQogCiB2b2lkIHdncHVCaW5kR3JvdXBMYXlvdXRTZXRMYWJlbChXR1BV
QmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCwgY29uc3QgY2hhciogbGFiZWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0J1ZmZlci5oCmluZGV4IDEwMWYxN2U2NmE2M2MwMTY1MDRkZjc2MTg0MTUwZTRhZTgzMjVl
ZmIuLmQyNzUxNzY2NzkyYTY2MzdlNDVmYzI4ZDJjNmJhYTE2ZDZkNDJhNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0J1ZmZlci5oCkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkdQVQogCi1zdHJ1Y3QgV0dQVUJ1ZmZlckltcGwgewotICAgIFJlZjxXZWJHUFU6OkJ1ZmZlcj4g
YnVmZmVyOworc3RydWN0IFdHUFVCdWZmZXJJbXBsIDogcHVibGljIFdlYkdQVTo6QnVmZmVyIHsK
IH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVCdWZmZXJJbXBsKSA9PSBzaXplb2YoV2Vi
R1BVOjpCdWZmZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCAwZmM0ZWJmMjI4ZjEwOTli
YzkzNjg5NTgxMGJiMDA1YTkzOGI0MzgxLi5jY2FiMmIzMDc2MDZhMDcxNmZmY2ZlYjZkZTA3ZmYw
MzU1ODFkZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBAIC0zOTEsNyArMzkxLDcgQEAgdm9p
ZCBCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVCdWZmZXJSZWxl
YXNlKFdHUFVCdWZmZXIgYnVmZmVyKQogewotICAgIGRlbGV0ZSBidWZmZXI7CisgICAgYnVmZmVy
LT5kZXJlZigpOwogfQogCiB2b2lkIHdncHVCdWZmZXJEZXN0cm95KFdHUFVCdWZmZXIgYnVmZmVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCmluZGV4IGFiNTg5ZjkwZjE0NTYzYmRi
Y2ZmNWRkYTMzYWM5OTA3OTBhNTc4NzcuLmQwNzI2YzkxMmU1MWNmZjQ0NTM1YTQwNTgzYmE2MWNl
MzY3ODE4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIu
aAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKQEAgLTUzLDYgKzUz
LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKLXN0cnVjdCBXR1BVQ29t
bWFuZEJ1ZmZlckltcGwgewotICAgIFJlZjxXZWJHUFU6OkNvbW1hbmRCdWZmZXI+IGNvbW1hbmRC
dWZmZXI7CitzdHJ1Y3QgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIDogcHVibGljIFdlYkdQVTo6Q29t
bWFuZEJ1ZmZlciB7CiB9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVQ29tbWFuZEJ1ZmZl
ckltcGwpID09IHNpemVvZihXZWJHUFU6OkNvbW1hbmRCdWZmZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21tYW5kQnVmZmVyLm1tCmluZGV4IGExZDgyNWNjNGM2M2ZkNDBiY2VhODcwZDRmNTQzMzhi
Y2NlZDQ2NTMuLmZkZDRiNDliNGZkNjAyMjc3YzkwMzQwNjEzZGFmM2YzYjIyZTNiZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0KKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIENv
bW1hbmRCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVDb21tYW5k
QnVmZmVyUmVsZWFzZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVyKQogewotICAgIGRl
bGV0ZSBjb21tYW5kQnVmZmVyOworICAgIGNvbW1hbmRCdWZmZXItPmRlcmVmKCk7CiB9CiAKIHZv
aWQgd2dwdUNvbW1hbmRCdWZmZXJTZXRMYWJlbChXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVm
ZmVyLCBjb25zdCBjaGFyKiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5o
CmluZGV4IDBlMTlkNGUwNThlYTY0MmEzZmQyY2RiZDQ4NmY3MmU5YTY0NjEyNDAuLjBlNjhmNmYz
NzQxZTY1NGNjYTUwZGNiMTI5OTc3NDIwNjBlZjJkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIuaApAQCAtODAsNiArODAsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJHUFUKIAotc3RydWN0IFdHUFVDb21tYW5kRW5jb2RlckltcGwgewotICAgIFJlZjxXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyPiBjb21tYW5kRW5jb2RlcjsKK3N0cnVjdCBXR1BVQ29tbWFuZEVu
Y29kZXJJbXBsIDogcHVibGljIFdlYkdQVTo6Q29tbWFuZEVuY29kZXIgewogfTsKKworc3RhdGlj
X2Fzc2VydChzaXplb2YoV0dQVUNvbW1hbmRFbmNvZGVySW1wbCkgPT0gc2l6ZW9mKFdlYkdQVTo6
Q29tbWFuZEVuY29kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5k
ZXggM2I4ZjAyM2FiYTg4MTY1YmVjMzIxYTk1ZDJhODk1ODM1M2RiOTUxOC4uM2I4NGZhNTBmZWJm
ZWUzOWY1ZTY4OGEyMGZiNzgxYTVhZDU4YWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KQEAgLTM1NSwxOSArMzU1LDE3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OnNl
dExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVDb21tYW5kRW5jb2RlclJlbGVhc2Uo
V0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyKQogewotICAgIGRlbGV0ZSBjb21tYW5k
RW5jb2RlcjsKKyAgICBjb21tYW5kRW5jb2Rlci0+ZGVyZWYoKTsKIH0KIAogV0dQVUNvbXB1dGVQ
YXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQYXNzKFdHUFVDb21tYW5k
RW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUNvbXB1dGVQYXNzRGVzY3JpcHRvciog
ZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShjb21tYW5k
RW5jb2RlcikuYmVnaW5Db21wdXRlUGFzcygqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3Vs
dCA/IG5ldyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVs
bCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVQ29tcHV0ZVBhc3NF
bmNvZGVyPihXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmJlZ2luQ29tcHV0ZVBhc3Mo
KmRlc2NyaXB0b3IpLmxlYWtSZWYoKSk7CiB9CiAKIFdHUFVSZW5kZXJQYXNzRW5jb2RlciB3Z3B1
Q29tbWFuZEVuY29kZXJCZWdpblJlbmRlclBhc3MoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRF
bmNvZGVyLCBjb25zdCBXR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmJlZ2luUmVu
ZGVyUGFzcygqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVUmVuZGVy
UGFzc0VuY29kZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVSZW5kZXJQYXNzRW5jb2Rlcj4oV2ViR1BVOjpmcm9t
QVBJKGNvbW1hbmRFbmNvZGVyKS5iZWdpblJlbmRlclBhc3MoKmRlc2NyaXB0b3IpLmxlYWtSZWYo
KSk7CiB9CiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyQ29weUJ1ZmZlclRvQnVmZmVyKFdHUFVD
b21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlciBzb3VyY2UsIHVpbnQ2NF90
IHNvdXJjZU9mZnNldCwgV0dQVUJ1ZmZlciBkZXN0aW5hdGlvbiwgdWludDY0X3QgZGVzdGluYXRp
b25PZmZzZXQsIHVpbnQ2NF90IHNpemUpCkBAIC0zOTcsOCArMzk1LDcgQEAgdm9pZCB3Z3B1Q29t
bWFuZEVuY29kZXJDbGVhckJ1ZmZlcihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIs
IFdHUFVCdWZmZXIKIAogV0dQVUNvbW1hbmRCdWZmZXIgd2dwdUNvbW1hbmRFbmNvZGVyRmluaXNo
KFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUNvbW1hbmRCdWZm
ZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpm
cm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5maW5pc2goKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiBy
ZXN1bHQgPyBuZXcgV0dQVUNvbW1hbmRCdWZmZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxs
KCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVDb21tYW5kQnVmZmVy
PihXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmZpbmlzaCgqZGVzY3JpcHRvcikubGVh
a1JlZigpKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtlcihX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxhYmVs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLmgg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaAppbmRleCBjZjViNTgw
NmRlYTVmNGM5YTk3OGFmY2I2ZDZhMzc2MWFiMjE3YTc0Li5jNzYyODdjMGZlYTZmMTgwY2YzOTJi
NWU2NGNmZWY3YjVhMDBkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0Vu
Y29kZXIuaApAQCAtNzEsNiArNzEsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKIAotc3RydWN0IFdHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBsIHsKLSAgICBSZWY8V2ViR1BV
OjpDb21wdXRlUGFzc0VuY29kZXI+IGNvbXB1dGVQYXNzRW5jb2RlcjsKK3N0cnVjdCBXR1BVQ29t
cHV0ZVBhc3NFbmNvZGVySW1wbCA6IHB1YmxpYyBXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2RlciB7
CiB9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCkg
PT0gc2l6ZW9mKFdlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0KaW5kZXggZmRmZjU5ODllYTI0ZDNkYjE1MTA2ZjQ3
MDg1MDFjNzAzZGM3OWUzOC4uYmM5ZWIyZmE2ZjQ3MWUzODVmMzM4MTlkOGMxYmZlNmQzYTAxNTM5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQpAQCAtMTQy
LDcgKzE0Miw3IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRMYWJlbChTdHJpbmcmJiBs
YWJlbCkKIAogdm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZShXR1BVQ29tcHV0ZVBh
c3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBkZWxldGUgY29tcHV0ZVBhc3NF
bmNvZGVyOworICAgIGNvbXB1dGVQYXNzRW5jb2Rlci0+ZGVyZWYoKTsKIH0KIAogdm9pZCB3Z3B1
Q29tcHV0ZVBhc3NFbmNvZGVyQmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShXR1BVQ29tcHV0
ZVBhc3NFbmNvZGVyIGNvbXB1dGVQYXNzRW5jb2RlciwgV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0LCB1
aW50MzJfdCBxdWVyeUluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
cHV0ZVBpcGVsaW5lLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaApp
bmRleCBkYjYyNTkwMDY2OTg5NWQyN2ZmMWU0M2I1NzdlZmE5MmQxM2Q5YTBkLi4zYTdlMTlhM2Zj
ZTZjYWUwY2VkMzg1NWMyZDEzMWYzN2ZkNDU1MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGlwZWxpbmUuaApAQCAtNTYsNiArNTYsNyBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJHUFUKIAotc3RydWN0IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsKLSAgICBSZWY8V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmU+IGNvbXB1dGVQaXBlbGluZTsKK3N0cnVjdCBXR1BVQ29tcHV0
ZVBpcGVsaW5lSW1wbCA6IHB1YmxpYyBXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSB7CiB9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCkgPT0gc2l6ZW9mKFdl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21wdXRlUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxp
bmUubW0KaW5kZXggYzMxY2Q2MDA0NGEyZGVmNjRiNjllYWJmZGQ3N2U4OWE4NGVhYzU2Ny4uZTE2
ZGVmOTM3YThjMTg3OWFjNjA4ZTdjMjE2NzExYzhmMzc4NGY3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbXB1dGVQaXBlbGluZS5tbQpAQCAtMTk3LDEyICsxOTcsMTIgQEAgdm9pZCBDb21wdXRl
UGlwZWxpbmU6OnNldExhYmVsKFN0cmluZyYmKQogCiB2b2lkIHdncHVDb21wdXRlUGlwZWxpbmVS
ZWxlYXNlKFdHUFVDb21wdXRlUGlwZWxpbmUgY29tcHV0ZVBpcGVsaW5lKQogewotICAgIGRlbGV0
ZSBjb21wdXRlUGlwZWxpbmU7CisgICAgY29tcHV0ZVBpcGVsaW5lLT5kZXJlZigpOwogfQogCiBX
R1BVQmluZEdyb3VwTGF5b3V0IHdncHVDb21wdXRlUGlwZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQo
V0dQVUNvbXB1dGVQaXBlbGluZSBjb21wdXRlUGlwZWxpbmUsIHVpbnQzMl90IGdyb3VwSW5kZXgp
CiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7IFdlYkdQVTo6ZnJv
bUFQSShjb21wdXRlUGlwZWxpbmUpLmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KSB9Owor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVQmluZEdyb3VwTGF5b3V0PihXZWJHUFU6OmZyb21B
UEkoY29tcHV0ZVBpcGVsaW5lKS5nZXRCaW5kR3JvdXBMYXlvdXQoZ3JvdXBJbmRleCkucHRyKCkp
OwogfQogCiB2b2lkIHdncHVDb21wdXRlUGlwZWxpbmVTZXRMYWJlbChXR1BVQ29tcHV0ZVBpcGVs
aW5lIGNvbXB1dGVQaXBlbGluZSwgY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5o
CmluZGV4IGUyNTk4NWU4NzNjM2RjNzBlYzhmMDU4MTZhZjdiMWU0NGM5NGMwZDEuLjM0NTdhZDll
MDA4ODcwYzJhNzhjODY3YjdmYjlkYzdkYTVlZDg1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCkBA
IC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1
Y3QgV0dQVURldmljZUltcGwgewotICAgIFJlZjxXZWJHUFU6OkRldmljZT4gZGV2aWNlOwotICAg
IFdHUFVRdWV1ZUltcGwgZGVmYXVsdFF1ZXVlOworc3RydWN0IFdHUFVEZXZpY2VJbXBsIDogcHVi
bGljIFdlYkdQVTo6RGV2aWNlIHsKIH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVEZXZp
Y2VJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpEZXZpY2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQpp
bmRleCBhZTAxNWM3ZDI1YjQ4ZTBjZmU4NzBmODBlYzhkYjQ1ZWU3ZWZkMDVmLi5mZDM0ZDgxNzM3
NWI2ZDdiYTRkNTM3MWExNTg3ZTFlZDMyZTM3MzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBA
IC0xMzYsMTEzICsxMzYsMTAwIEBAIHZvaWQgRGV2aWNlOjpzZXRMYWJlbChTdHJpbmcmJikKIAog
dm9pZCB3Z3B1RGV2aWNlUmVsZWFzZShXR1BVRGV2aWNlIGRldmljZSkKIHsKLSAgICBkZWxldGUg
ZGV2aWNlOworICAgIGRldmljZS0+ZGVyZWYoKTsKIH0KIAogV0dQVUJpbmRHcm91cCB3Z3B1RGV2
aWNlQ3JlYXRlQmluZEdyb3VwKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVQmluZEdyb3Vw
RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJv
bUFQSShkZXZpY2UpLmNyZWF0ZUJpbmRHcm91cCgqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJl
c3VsdCA/IG5ldyBXR1BVQmluZEdyb3VwSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0g
OiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVQmluZEdyb3VwPihXZWJHUFU6
OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVCaW5kR3JvdXAoKmRlc2NyaXB0b3IpLmxlYWtSZWYoKSk7
CiB9CiAKIFdHUFVCaW5kR3JvdXBMYXlvdXQgd2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91
dChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNl
KS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQg
PyBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9
IDogbnVsbHB0cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVUJpbmRHcm91cExheW91dD4o
V2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlQmluZEdyb3VwTGF5b3V0KCpkZXNjcmlwdG9y
KS5sZWFrUmVmKCkpOwogfQogCiBXR1BVQnVmZmVyIHdncHVEZXZpY2VDcmVhdGVCdWZmZXIoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVCdWZmZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQog
ewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlQnVmZmVy
KCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVCdWZmZXJJbXBsIHsg
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdHUFVCdWZmZXI+KFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUJ1ZmZlcigqZGVz
Y3JpcHRvcikubGVha1JlZigpKTsKIH0KIAogV0dQVUNvbW1hbmRFbmNvZGVyIHdncHVEZXZpY2VD
cmVhdGVDb21tYW5kRW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUNvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQ
VTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCpkZXNjcmlwdG9yKTsKLSAg
ICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVDb21tYW5kRW5jb2RlckltcGwgeyByZXN1bHQucmVs
ZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVUNv
bW1hbmRFbmNvZGVyPihXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVDb21tYW5kRW5jb2Rl
cigqZGVzY3JpcHRvcikubGVha1JlZigpKTsKIH0KIAogV0dQVUNvbXB1dGVQaXBlbGluZSB3Z3B1
RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BV
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1dGVQaXBlbGluZSgqZGVzY3Jp
cHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQ29tcHV0ZVBpcGVsaW5lSW1wbCB7
IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXR1BVQ29tcHV0ZVBpcGVsaW5lPihXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVD
b21wdXRlUGlwZWxpbmUoKmRlc2NyaXB0b3IpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgd2dwdURl
dmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBjb25zdCBX
R1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZUNvbXB1
dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQogewogICAg
IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKCpkZXNj
cmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1
cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGluZSwgU3Ry
aW5nJiYgbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHBpcGVsaW5lID8gbmV3
IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUucmVsZWFzZU5vbk51bGwoKSB9IDog
bnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CisgICAgICAgIGNhbGxi
YWNrKHN0YXR1cywgc3RhdGljX2Nhc3Q8V0dQVUNvbXB1dGVQaXBlbGluZT4ocGlwZWxpbmUubGVh
a1JlZigpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jV2l0aEJsb2NrKFdHUFVE
ZXZpY2UgZGV2aWNlLCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciBjb25zdCAqIGRlc2Ny
aXB0b3IsIFdHUFVDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luY0Jsb2NrQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlQ29tcHV0ZVBpcGVsaW5l
QXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVQ3Jl
YXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhz
dGF0dXMsIHBpcGVsaW5lID8gbmV3IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUu
cmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgY2FsbGJhY2soc3RhdHVzLCBzdGF0aWNfY2FzdDxXR1BVQ29tcHV0ZVBpcGVsaW5lPihw
aXBlbGluZS5sZWFrUmVmKCkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0pOwogfQog
CiBXR1BVUGlwZWxpbmVMYXlvdXQgd2dwdURldmljZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KFdHUFVE
ZXZpY2UgZGV2aWNlLCBjb25zdCBXR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKiBkZXNjcmlw
dG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRl
UGlwZWxpbmVMYXlvdXQoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQ
VVBpcGVsaW5lTGF5b3V0SW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRy
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVUGlwZWxpbmVMYXlvdXQ+KFdlYkdQVTo6ZnJv
bUFQSShkZXZpY2UpLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpkZXNjcmlwdG9yKS5sZWFrUmVmKCkp
OwogfQogCiBXR1BVUXVlcnlTZXQgd2dwdURldmljZUNyZWF0ZVF1ZXJ5U2V0KFdHUFVEZXZpY2Ug
ZGV2aWNlLCBjb25zdCBXR1BVUXVlcnlTZXREZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAg
IGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUXVlcnlTZXQoKmRl
c2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVF1ZXJ5U2V0SW1wbCB7IHJl
c3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXR1BVUXVlcnlTZXQ+KFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVF1ZXJ5U2V0KCpk
ZXNjcmlwdG9yKS5sZWFrUmVmKCkpOwogfQogCiBXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciB3Z3B1
RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2RlcihXR1BVRGV2aWNlIGRldmljZSwgY29uc3Qg
V0dQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1
dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyQnVuZGxlRW5j
b2RlcigqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVVJlbmRlckJ1bmRsZUVuY29kZXI+KFdlYkdQVTo6ZnJv
bUFQSShkZXZpY2UpLmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmRlc2NyaXB0b3IpLmxlYWtS
ZWYoKSk7CiB9CiAKIFdHUFVSZW5kZXJQaXBlbGluZSB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlw
ZWxpbmUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2
aWNlKS5jcmVhdGVSZW5kZXJQaXBlbGluZSgqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3Vs
dCA/IG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkg
fSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVSZW5kZXJQaXBlbGluZT4o
V2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmUoKmRlc2NyaXB0b3Ip
LmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgd2dwdURldmljZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmMoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iq
IGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJh
Y2ssIHZvaWQqIHVzZXJkYXRhKQogewogICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0
ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjaywgdXNlcmRhdGFdKFdH
UFVDcmVhdGVQaXBlbGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6UmVuZGVy
UGlwZWxpbmU+JiYgcGlwZWxpbmUsIFN0cmluZyYmIG1lc3NhZ2UpIHsKLSAgICAgICAgY2FsbGJh
Y2soc3RhdHVzLCBwaXBlbGluZSA/IG5ldyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsIHsgcGlwZWxp
bmUucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1
c2VyZGF0YSk7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgc3RhdGljX2Nhc3Q8V0dQVVJlbmRl
clBpcGVsaW5lPihwaXBlbGluZS5sZWFrUmVmKCkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVz
ZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxp
bmVBc3luY1dpdGhCbG9jayhXR1BVRGV2aWNlIGRldmljZSwgV0dQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvciBjb25zdCAqIGRlc2NyaXB0b3IsIFdHUFVDcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5j
QmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5j
cmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKCpkZXNjcmlwdG9yLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8
V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVzc2FnZSkgewot
ICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHBpcGVsaW5lID8gbmV3IFdHUFVSZW5kZXJQaXBlbGlu
ZUltcGwgeyBwaXBlbGluZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHN0YXRpY19jYXN0PFdHUFVS
ZW5kZXJQaXBlbGluZT4ocGlwZWxpbmUubGVha1JlZigpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgp
KTsKICAgICB9KTsKIH0KIAogV0dQVVNhbXBsZXIgd2dwdURldmljZUNyZWF0ZVNhbXBsZXIoV0dQ
VURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVNhbXBs
ZXIoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVNhbXBsZXJJbXBs
IHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdHUFVTYW1wbGVyPihXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVTYW1wbGVy
KCpkZXNjcmlwdG9yKS5sZWFrUmVmKCkpOwogfQogCiBXR1BVU2hhZGVyTW9kdWxlIHdncHVEZXZp
Y2VDcmVhdGVTaGFkZXJNb2R1bGUoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BV
Ojpmcm9tQVBJKGRldmljZSkuY3JlYXRlU2hhZGVyTW9kdWxlKCpkZXNjcmlwdG9yKTsKLSAgICBy
ZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTaGFkZXJNb2R1bGVJbXBsIHsgcmVzdWx0LnJlbGVhc2VO
b25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVTaGFkZXJN
b2R1bGU+KFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVNoYWRlck1vZHVsZSgqZGVzY3Jp
cHRvcikubGVha1JlZigpKTsKIH0KIAogV0dQVVN3YXBDaGFpbiB3Z3B1RGV2aWNlQ3JlYXRlU3dh
cENoYWluKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VyZmFjZSBzdXJmYWNlLCBjb25zdCBXR1BV
U3dhcENoYWluRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdl
YkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVN3YXBDaGFpbihXZWJHUFU6OmZyb21BUEkoc3Vy
ZmFjZSksICpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTd2FwQ2hh
aW5JbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdHUFVTd2FwQ2hhaW4+KFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0
ZVN3YXBDaGFpbihXZWJHUFU6OmZyb21BUEkoc3VyZmFjZSksICpkZXNjcmlwdG9yKS5sZWFrUmVm
KCkpOwogfQogCiBXR1BVVGV4dHVyZSB3Z3B1RGV2aWNlQ3JlYXRlVGV4dHVyZShXR1BVRGV2aWNl
IGRldmljZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAg
IGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlVGV4dHVyZSgqZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVVGV4dHVyZUltcGwgeyByZXN1
bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V0dQVVRleHR1cmU+KFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVRleHR1cmUoKmRlc2Ny
aXB0b3IpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgd2dwdURldmljZURlc3Ryb3koV0dQVURldmlj
ZSBkZXZpY2UpCkBAIC0yNjIsNyArMjQ5LDcgQEAgYm9vbCB3Z3B1RGV2aWNlR2V0TGltaXRzKFdH
UFVEZXZpY2UgZGV2aWNlLCBXR1BVU3VwcG9ydGVkTGltaXRzKiBsaW1pdHMpCiAKIFdHUFVRdWV1
ZSB3Z3B1RGV2aWNlR2V0UXVldWUoV0dQVURldmljZSBkZXZpY2UpCiB7Ci0gICAgcmV0dXJuICZk
ZXZpY2UtPmRlZmF1bHRRdWV1ZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V0dQVVF1ZXVlPigm
V2ViR1BVOjpmcm9tQVBJKGRldmljZSkuZ2V0UXVldWUoKSk7CiB9CiAKIGJvb2wgd2dwdURldmlj
ZUhhc0ZlYXR1cmUoV0dQVURldmljZSBkZXZpY2UsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0luc3RhbmNlLmgKaW5kZXggMjNkNTNhZDFjMDIzMmY4ZDE3ZWQxYTUwYTU1ODY3
NDg3MGQ0NTM2MS4uMWMzODhkMmY5ZDdhOTQ4ZTFiMWU0MDc2MDA2MjQ0MTM4ZDUyMTFkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9JbnN0YW5jZS5oCkBAIC02Nyw2ICs2Nyw3IEBAIHByaXZhdGU6CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVUluc3RhbmNlSW1wbCB7Ci0gICAgUmVmPFdl
YkdQVTo6SW5zdGFuY2U+IGluc3RhbmNlOworc3RydWN0IFdHUFVJbnN0YW5jZUltcGwgOiBwdWJs
aWMgV2ViR1BVOjpJbnN0YW5jZSB7CiB9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVSW5z
dGFuY2VJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpJbnN0YW5jZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0
YW5jZS5tbQppbmRleCAxMDQ1NThlMmU3OGNkZTk5MGNjYjMzNTRiZTg5MzFhNWNlY2YwZWNlLi45
NWQzYjI0MGI4MDE4NGMwOTZjNTJhMmUwZWRkZTgzNGY1ODBhY2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9J
bnN0YW5jZS5tbQpAQCAtMTczLDEzICsxNzMsMTIgQEAgdm9pZCBJbnN0YW5jZTo6cmVxdWVzdEFk
YXB0ZXIoY29uc3QgV0dQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgQ29tcGxldGkK
IAogdm9pZCB3Z3B1SW5zdGFuY2VSZWxlYXNlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKIHsKLSAg
ICBkZWxldGUgaW5zdGFuY2U7CisgICAgaW5zdGFuY2UtPmRlcmVmKCk7CiB9CiAKIFdHUFVJbnN0
YW5jZSB3Z3B1Q3JlYXRlSW5zdGFuY2UoY29uc3QgV0dQVUluc3RhbmNlRGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6SW5zdGFuY2U6OmNyZWF0ZSgq
ZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVSW5zdGFuY2VJbXBsIHsg
cmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdHUFVJbnN0YW5jZT4oV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlKCpkZXNjcmlwdG9yKS5s
ZWFrUmVmKCkpOwogfQogCiBXR1BVUHJvYyB3Z3B1R2V0UHJvY0FkZHJlc3MoV0dQVURldmljZSwg
Y29uc3QgY2hhciogcHJvY05hbWUpCkBAIC00MzMsOCArNDMyLDcgQEAgV0dQVVByb2Mgd2dwdUdl
dFByb2NBZGRyZXNzKFdHUFVEZXZpY2UsIGNvbnN0IGNoYXIqIHByb2NOYW1lKQogCiBXR1BVU3Vy
ZmFjZSB3Z3B1SW5zdGFuY2VDcmVhdGVTdXJmYWNlKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgY29u
c3QgV0dQVVN1cmZhY2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0
ID0gV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5jcmVhdGVTdXJmYWNlKCpkZXNjcmlwdG9yKTsK
LSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTdXJmYWNlSW1wbCB7IHJlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVU3VyZmFj
ZT4oV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5jcmVhdGVTdXJmYWNlKCpkZXNjcmlwdG9yKS5s
ZWFrUmVmKCkpOwogfQogCiB2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3Rh
bmNlIGluc3RhbmNlKQpAQCAtNDQ1LDEzICs0NDMsMTMgQEAgdm9pZCB3Z3B1SW5zdGFuY2VQcm9j
ZXNzRXZlbnRzKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSkKIHZvaWQgd2dwdUluc3RhbmNlUmVxdWVz
dEFkYXB0ZXIoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJP
cHRpb25zKiBvcHRpb25zLCBXR1BVUmVxdWVzdEFkYXB0ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9p
ZCogdXNlcmRhdGEpCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5yZXF1ZXN0QWRh
cHRlcigqb3B0aW9ucywgW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVVJlcXVlc3RBZGFwdGVyU3Rh
dHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBTdHJpbmcmJiBt
ZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRh
cHRlckltcGwgeyBhZGFwdGVyLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2Uu
dXRmOCgpLmRhdGEoKSwgdXNlcmRhdGEpOworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHN0YXRp
Y19jYXN0PFdHUFVBZGFwdGVyPihhZGFwdGVyLmxlYWtSZWYoKSksIG1lc3NhZ2UudXRmOCgpLmRh
dGEoKSwgdXNlcmRhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVJbnN0YW5jZVJlcXVlc3RB
ZGFwdGVyV2l0aEJsb2NrKFdHUFVJbnN0YW5jZSBpbnN0YW5jZSwgV0dQVVJlcXVlc3RBZGFwdGVy
T3B0aW9ucyBjb25zdCAqIG9wdGlvbnMsIFdHUFVSZXF1ZXN0QWRhcHRlckJsb2NrQ2FsbGJhY2sg
Y2FsbGJhY2spCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5yZXF1ZXN0QWRhcHRl
cigqb3B0aW9ucywgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVSZXF1ZXN0QWRh
cHRlclN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkFkYXB0ZXI+JiYgYWRhcHRlciwgU3Ry
aW5nJiYgbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMsIGFkYXB0ZXIgPyBuZXcg
V0dQVUFkYXB0ZXJJbXBsIHsgYWRhcHRlci5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBt
ZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHN0YXRpY19j
YXN0PFdHUFVBZGFwdGVyPihhZGFwdGVyLmxlYWtSZWYoKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEo
KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGlu
ZUxheW91dC5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaAppbmRleCA0
MmQxMjIzYWFjY2IzMTA0YzdlMWFmMjU3M2MwYjBlZDkxZDc5NGJlLi4zYmUxMTc3OTE5MjUwNTEy
NWVjZDBjZDJkYjFiMGVmN2VlODFjNjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9QaXBlbGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5
b3V0LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BV
CiAKLXN0cnVjdCBXR1BVUGlwZWxpbmVMYXlvdXRJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpQaXBl
bGluZUxheW91dD4gcGlwZWxpbmVMYXlvdXQ7CitzdHJ1Y3QgV0dQVVBpcGVsaW5lTGF5b3V0SW1w
bCA6IHB1YmxpYyBXZWJHUFU6OlBpcGVsaW5lTGF5b3V0IHsKIH07CisKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKFdHUFVQaXBlbGluZUxheW91dEltcGwpID09IHNpemVvZihXZWJHUFU6OlBpcGVsaW5l
TGF5b3V0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91
dC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lm1tCmluZGV4IGRhM2M0
YWY5ZDgyYzgxZGQ5OTY2NmIzZWZjYzkxYzcwZDg1NmI0N2QuLmM1YjY0YTY0MDg3NTY2NmNjODdh
MjhjYzRlZDdjYzNkNzI1NDM4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Bp
cGVsaW5lTGF5b3V0Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0
Lm1tCkBAIC03NCw3ICs3NCw3IEBAIGJvb2wgUGlwZWxpbmVMYXlvdXQ6Om9wZXJhdG9yIT0oY29u
c3QgUGlwZWxpbmVMYXlvdXQmIG90aGVyKSBjb25zdAogCiB2b2lkIHdncHVQaXBlbGluZUxheW91
dFJlbGVhc2UoV0dQVVBpcGVsaW5lTGF5b3V0IHBpcGVsaW5lTGF5b3V0KQogewotICAgIGRlbGV0
ZSBwaXBlbGluZUxheW91dDsKKyAgICBwaXBlbGluZUxheW91dC0+ZGVyZWYoKTsKIH0KIAogdm9p
ZCB3Z3B1UGlwZWxpbmVMYXlvdXRTZXRMYWJlbChXR1BVUGlwZWxpbmVMYXlvdXQgcGlwZWxpbmVM
YXlvdXQsIGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUXVlcnlTZXQuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKaW5kZXggYzlh
ZDBhYWNiNWI3ZjIyYmZiZjk0MjM0OTM0OTNiMjUyOGQxMjU2My4uZDE1YTRhZDNkODQ0MDAxMzZh
ZDg1MGJmNWQwYTRiYzU2YzA1NThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVlcnlTZXQuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oCkBAIC01NCw2
ICs1NCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQ
VVF1ZXJ5U2V0SW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6UXVlcnlTZXQ+IHF1ZXJ5U2V0Oworc3Ry
dWN0IFdHUFVRdWVyeVNldEltcGwgOiBwdWJsaWMgV2ViR1BVOjpRdWVyeVNldCB7CiB9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVUXVlcnlTZXRJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpR
dWVyeVNldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVlcnlTZXQubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQppbmRleCBlZmM3OWJlMzJlMGY2MzY4
YjkzM2I2ODM5MzE4ODkwM2NlY2FjMDhjLi4zYTUyM2M2NGZjYjI0ZjA3ZGQ0NzkxY2NmODhmZmRi
NzIwMTg1MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpAQCAtNTcsNyArNTcsNyBAQCB2
b2lkIFF1ZXJ5U2V0OjpzZXRMYWJlbChTdHJpbmcmJikKIAogdm9pZCB3Z3B1UXVlcnlTZXRSZWxl
YXNlKFdHUFVRdWVyeVNldCBxdWVyeVNldCkKIHsKLSAgICBkZWxldGUgcXVlcnlTZXQ7CisgICAg
cXVlcnlTZXQtPmRlcmVmKCk7CiB9CiAKIHZvaWQgd2dwdVF1ZXJ5U2V0RGVzdHJveShXR1BVUXVl
cnlTZXQgcXVlcnlTZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5o
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAppbmRleCBlMjU5YWYxNzdhZDNiYzc2NTNh
OGJhNzI4NzYyYmM1N2E2ZmQ4ODQwLi5mYTliZjJjZGI5NTg1Njc3MTMyYWRiMmUxNTA2MWRiZTVl
YjY0Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLmgKQEAgLTc2LDYgKzc2LDcgQEAgcHJpdmF0ZToKIAog
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKLXN0cnVjdCBXR1BVUXVldWVJbXBsIHsKLSAgICBSZWY8
V2ViR1BVOjpRdWV1ZT4gcXVldWU7CitzdHJ1Y3QgV0dQVVF1ZXVlSW1wbCA6IHB1YmxpYyBXZWJH
UFU6OlF1ZXVlIHsKIH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVRdWV1ZUltcGwpID09
IHNpemVvZihXZWJHUFU6OlF1ZXVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCmluZGV4IDU5MjQ5NmJi
OWUzM2RmZWYzNzZhZDhmMDZkYjNhMWMyYWM2ZWI1MWMuLjE1OTllMDc4OTJmYzgzOWFjODgyMmE0
ZGM0YjNlMzhmNDY5MjJmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVl
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCkBAIC0xMzEsNyArMTMxLDcg
QEAgdm9pZCBRdWV1ZTo6c2NoZWR1bGVXb3JrKEluc3RhbmNlOjpXb3JrSXRlbSYmIHdvcmtJdGVt
KQogCiB2b2lkIHdncHVRdWV1ZVJlbGVhc2UoV0dQVVF1ZXVlIHF1ZXVlKQogewotICAgIGRlbGV0
ZSBxdWV1ZTsKKyAgICBxdWV1ZS0+ZGVyZWYoKTsKIH0KIAogdm9pZCB3Z3B1UXVldWVPblN1Ym1p
dHRlZFdvcmtEb25lKFdHUFVRdWV1ZSBxdWV1ZSwgdWludDY0X3Qgc2lnbmFsVmFsdWUsIFdHUFVR
dWV1ZVdvcmtEb25lQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGUuaAppbmRleCA4ZGZjNTA3NDYxNGRmYTJkMzY1YWI0MDlmNWM2YjU0
ZGEzYzFiMDA1Li45YjZjMjFiMGI5MWVlZjcyMTNkOWQ3MTdkZDA3NDgzNDU2Y2YyMDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApAQCAtNTMsNiArNTMsNyBAQCBwcml2YXRlOgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKIAotc3RydWN0IFdHUFVSZW5kZXJCdW5kbGVJbXBsIHsK
LSAgICBSZWY8V2ViR1BVOjpSZW5kZXJCdW5kbGU+IHJlbmRlckJ1bmRsZTsKK3N0cnVjdCBXR1BV
UmVuZGVyQnVuZGxlSW1wbCA6IHB1YmxpYyBXZWJHUFU6OlJlbmRlckJ1bmRsZSB7CiB9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVUmVuZGVyQnVuZGxlSW1wbCkgPT0gc2l6ZW9mKFdlYkdQ
VTo6UmVuZGVyQnVuZGxlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5k
ZXJCdW5kbGUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KaW5kZXgg
NzM5MGY5NzlmOTYyODNkMWJhZDYxZWVlZjhiNDQwMjlkYjY2YTE1OC4uMTE2N2Q4ZmNiYWNkNmUy
ZTEyYzIyYmQxM2UzN2UzNjFmNWU0NTRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyQnVuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRs
ZS5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFJlbmRlckJ1bmRsZTo6c2V0TGFiZWwoU3RyaW5n
JiYgbGFiZWwpCiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZVJlbGVhc2UoV0dQVVJlbmRlckJ1bmRs
ZSByZW5kZXJCdW5kbGUpCiB7Ci0gICAgZGVsZXRlIHJlbmRlckJ1bmRsZTsKKyAgICByZW5kZXJC
dW5kbGUtPmRlcmVmKCk7CiB9CiAKIHZvaWQgd2dwdVJlbmRlckJ1bmRsZVNldExhYmVsKFdHUFVS
ZW5kZXJCdW5kbGUgcmVuZGVyQnVuZGxlLCBjb25zdCBjaGFyKiBsYWJlbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaCBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaAppbmRleCBjZjhkY2IyOTNlYzcxOTFjN2I3
Y2U3YzIwNmIzNTJlZTJjMGM2YWE4Li41NDY4NjE1YWJlMWViYmIwNTk2ZDMxMDg2ODRiN2RhNzQ2
YWNiYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNv
ZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBA
IC03NCw2ICs3NCw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1
Y3QgV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpSZW5kZXJC
dW5kbGVFbmNvZGVyPiByZW5kZXJCdW5kbGVFbmNvZGVyOworc3RydWN0IFdHUFVSZW5kZXJCdW5k
bGVFbmNvZGVySW1wbCA6IHB1YmxpYyBXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIgewogfTsK
Kworc3RhdGljX2Fzc2VydChzaXplb2YoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXJJbXBsKSA9PSBz
aXplb2YoV2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQppbmRleCA3MzM5YmY5YzFkZTY0MTkwZjk4MTY5ZTFi
Mjk4MDg4MDI0NTI3ZjlhLi4wZjQ3Yjk0MWJhZDgxNzhkN2EyMjIxODZiOTY5ZmQxMWRlNTE1Yjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTE3
Myw3ICsxNzMsNyBAQCB2b2lkIFJlbmRlckJ1bmRsZUVuY29kZXI6OnNldExhYmVsKFN0cmluZyYm
IGxhYmVsKQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVy
QnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQogewotICAgIGRlbGV0ZSByZW5kZXJC
dW5kbGVFbmNvZGVyOworICAgIHJlbmRlckJ1bmRsZUVuY29kZXItPmRlcmVmKCk7CiB9CiAKIHZv
aWQgd2dwdVJlbmRlckJ1bmRsZUVuY29kZXJEcmF3KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJl
bmRlckJ1bmRsZUVuY29kZXIsIHVpbnQzMl90IHZlcnRleENvdW50LCB1aW50MzJfdCBpbnN0YW5j
ZUNvdW50LCB1aW50MzJfdCBmaXJzdFZlcnRleCwgdWludDMyX3QgZmlyc3RJbnN0YW5jZSkKQEAg
LTE5OCw4ICsxOTgsNyBAQCB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRHJhd0luZGlyZWN0
KFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyIHJlbmRlckJ1bmRsZUVuYwogCiBXR1BVUmVuZGVyQnVu
ZGxlIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVyRmluaXNoKFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVy
IHJlbmRlckJ1bmRsZUVuY29kZXIsIGNvbnN0IFdHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yKiBk
ZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKHJlbmRlckJ1
bmRsZUVuY29kZXIpLmZpbmlzaCgqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5l
dyBXR1BVUmVuZGVyQnVuZGxlSW1wbCB7IHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxs
cHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVUmVuZGVyQnVuZGxlPihXZWJHUFU6OmZy
b21BUEkocmVuZGVyQnVuZGxlRW5jb2RlcikuZmluaXNoKCpkZXNjcmlwdG9yKS5sZWFrUmVmKCkp
OwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNvZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQ
VVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxlRW5jb2RlciwgY29uc3QgY2hhciogbWFy
a2VyTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5j
b2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGFzc0VuY29kZXIuaAppbmRleCAx
YTZkNmZlZDBhZTg3NjAwNGQ2MzcxODhkNDVlZjk1ZTY0OWFlOTRmLi4xMDk2Yjk4ODM4MzI2MDk5
YmNhZTQ1N2NmZmRlOWEzNTg2MDk3MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9SZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBh
c3NFbmNvZGVyLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCiAKLXN0cnVjdCBXR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsIHsKLSAgICBSZWY8V2Vi
R1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4gcmVuZGVyUGFzc0VuY29kZXI7CitzdHJ1Y3QgV0dQVVJl
bmRlclBhc3NFbmNvZGVySW1wbCA6IHB1YmxpYyBXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyIHsK
IH07CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwpID09
IHNpemVvZihXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1JlbmRlclBhc3NFbmNvZGVyLm1tCmluZGV4IGIzZmNmZDkwM2MxMjYzYTYwMmYwNmU5ZTBkNjk0
ZDYyNDQyYTZlNWQuLjZlNzdjZjk3OTMwOTAwNDNlNjk4MDg2NDgxYTAwN2RjMmFmZjY2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCkBAIC0yMjAsNyArMjIw
LDcgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiAK
IHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVyUGFzc0VuY29kZXIg
cmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgZGVsZXRlIHJlbmRlclBhc3NFbmNvZGVyOworICAg
IHJlbmRlclBhc3NFbmNvZGVyLT5kZXJlZigpOwogfQogCiB2b2lkIHdncHVSZW5kZXJQYXNzRW5j
b2RlckJlZ2luT2NjbHVzaW9uUXVlcnkoV0dQVVJlbmRlclBhc3NFbmNvZGVyIHJlbmRlclBhc3NF
bmNvZGVyLCB1aW50MzJfdCBxdWVyeUluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyUGlwZWxpbmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVs
aW5lLmgKaW5kZXggYjY4ZWZiODExZWI4ZDc2OWNlZjc1OGQyZGM4ZGNhNDI3YzBiYTljMi4uMTJj
ZmVlNGZkMGIzZGJkMDQzOWYzMThiODQ5YTFhZjUxNjZjYjRlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9SZW5kZXJQaXBlbGluZS5oCkBAIC01Niw2ICs1Niw3IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7Ci0gICAgUmVm
PFdlYkdQVTo6UmVuZGVyUGlwZWxpbmU+IHJlbmRlclBpcGVsaW5lOworc3RydWN0IFdHUFVSZW5k
ZXJQaXBlbGluZUltcGwgOiBwdWJsaWMgV2ViR1BVOjpSZW5kZXJQaXBlbGluZSB7CiB9OworCitz
dGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVUmVuZGVyUGlwZWxpbmVJbXBsKSA9PSBzaXplb2YoV2Vi
R1BVOjpSZW5kZXJQaXBlbGluZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
UmVuZGVyUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5t
bQppbmRleCA3YTE2OWM3MWQ3OGIwZTI5YTBjNTk2MTc3NTY1NmQzOWZlMjhjMjEzLi5jOWE5YTk1
MmE2ODk3NDhkNzNkYmY4NTBmZTk2ZDA4YTQ3Yjg2ZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9S
ZW5kZXJQaXBlbGluZS5tbQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgUmVuZGVyUGlwZWxpbmU6
OnNldExhYmVsKFN0cmluZyYmKQogCiB2b2lkIHdncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UoV0dQ
VVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lKQogewotICAgIGRlbGV0ZSByZW5kZXJQaXBl
bGluZTsKKyAgICByZW5kZXJQaXBlbGluZS0+ZGVyZWYoKTsKIH0KIAogV0dQVUJpbmRHcm91cExh
eW91dCB3Z3B1UmVuZGVyUGlwZWxpbmVHZXRCaW5kR3JvdXBMYXlvdXQoV0dQVVJlbmRlclBpcGVs
aW5lIHJlbmRlclBpcGVsaW5lLCB1aW50MzJfdCBncm91cEluZGV4KQogewotICAgIHJldHVybiBu
ZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwgeyBXZWJHUFU6OmZyb21BUEkocmVuZGVyUGlwZWxp
bmUpLmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KSB9OworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXR1BVQmluZEdyb3VwTGF5b3V0PihXZWJHUFU6OmZyb21BUEkocmVuZGVyUGlwZWxpbmUp
LmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4KS5wdHIoKSk7CiB9CiAKIHZvaWQgd2dwdVJl
bmRlclBpcGVsaW5lU2V0TGFiZWwoV0dQVVJlbmRlclBpcGVsaW5lIHJlbmRlclBpcGVsaW5lLCBj
b25zdCBjaGFyKiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBs
ZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaAppbmRleCBjN2Y3MjhlODMyYTY2
NWRkZTg4MWJiM2VkMDk0MGY2YWNhZmMxZTU5Li40ZmFiYmVlZDAwY2FhYTU3NGM1YTIwNGI3NTIw
YTJiYTA3OWE4ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5oCkBAIC02Miw2ICs2Miw3IEBAIHBy
aXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVVNhbXBsZXJJbXBs
IHsKLSAgICBSZWY8V2ViR1BVOjpTYW1wbGVyPiBzYW1wbGVyOworc3RydWN0IFdHUFVTYW1wbGVy
SW1wbCA6IHB1YmxpYyBXZWJHUFU6OlNhbXBsZXIgewogfTsKKworc3RhdGljX2Fzc2VydChzaXpl
b2YoV0dQVVNhbXBsZXJJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpTYW1wbGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvU2FtcGxlci5tbQppbmRleCA0MTk0YTliNTkwMjZkNWY5ZjIzOWE0MzRmMTVjNjdhN2YyN2I3
OGM0Li5iZmE3YzlhMWE3ZjM5ODUzNmQ4ZmMxMTFkNDMwZWFjNzlkOWIyZTM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1NhbXBsZXIubW0KQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIFNhbXBsZXI6OnNldExhYmVs
KFN0cmluZyYmKQogCiB2b2lkIHdncHVTYW1wbGVyUmVsZWFzZShXR1BVU2FtcGxlciBzYW1wbGVy
KQogewotICAgIGRlbGV0ZSBzYW1wbGVyOworICAgIHNhbXBsZXItPmRlcmVmKCk7CiB9CiAKIHZv
aWQgd2dwdVNhbXBsZXJTZXRMYWJlbChXR1BVU2FtcGxlciBzYW1wbGVyLCBjb25zdCBjaGFyKiBs
YWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKaW5kZXggZjU3NzYwNzIwNzM0NTFm
ODBkZjEzZGUxNmJmNWFkZTg5YzJiZDUyNS4uMGY3M2RmNTJmMzVlMDg5NDY2Yzk2ZTY3YjIwYWUy
ZTJiMmM5ZjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxl
LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLmgKQEAgLTY5LDYgKzY5
LDcgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKLXN0cnVjdCBXR1BVU2hh
ZGVyTW9kdWxlSW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6U2hhZGVyTW9kdWxlPiBzaGFkZXJNb2R1
bGU7CitzdHJ1Y3QgV0dQVVNoYWRlck1vZHVsZUltcGwgOiBwdWJsaWMgV2ViR1BVOjpTaGFkZXJN
b2R1bGUgewogfTsKKworc3RhdGljX2Fzc2VydChzaXplb2YoV0dQVVNoYWRlck1vZHVsZUltcGwp
ID09IHNpemVvZihXZWJHUFU6OlNoYWRlck1vZHVsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVy
TW9kdWxlLm1tCmluZGV4IDNmOGYxOGJkYThhM2E5OTA4MDY1Yzg1ZDJiYTNjYjQwNWRjYmQyYzgu
LjIxM2QyYzkwZjcyYzVmMGQyYThmZThmNmY5NDk3NzAwZmQ1YThiYWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9TaGFkZXJNb2R1bGUubW0KQEAgLTg4LDggKzg4LDggQEAgc3RhdGljIFJlZlB0cjxTaGFk
ZXJNb2R1bGU+IGVhcmx5Q29tcGlsZVNoYWRlck1vZHVsZShpZDxNVExEZXZpY2U+IGRldmljZSwg
c3RkOjoKICAgICAgICAgY29uc3QgYXV0byYgaGludCA9IHN1cHBsaWVkSGludHMuaGludHNbaV07
CiAgICAgICAgIGlmIChoaW50Lm5leHRJbkNoYWluKQogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgICAgIGhpbnRzLmFkZChoaW50LmtleSwgaGludC5oaW50LmxheW91dC0+cGlwZWxp
bmVMYXlvdXQpOwotICAgICAgICBhdXRvIGNvbnZlcnRlZFBpcGVsaW5lTGF5b3V0ID0gU2hhZGVy
TW9kdWxlOjpjb252ZXJ0UGlwZWxpbmVMYXlvdXQoaGludC5oaW50LmxheW91dC0+cGlwZWxpbmVM
YXlvdXQpOworICAgICAgICBoaW50cy5hZGQoaGludC5rZXksIGZyb21BUEkoaGludC5oaW50Lmxh
eW91dCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlZFBpcGVsaW5lTGF5b3V0ID0gU2hhZGVyTW9k
dWxlOjpjb252ZXJ0UGlwZWxpbmVMYXlvdXQoZnJvbUFQSShoaW50LmhpbnQubGF5b3V0KSk7CiAg
ICAgICAgIHdnc2xIaW50cy5hZGQoaGludC5rZXksIFdURk1vdmUoY29udmVydGVkUGlwZWxpbmVM
YXlvdXQpKTsKICAgICB9CiAgICAgYXV0byBwcmVwYXJlUmVzdWx0ID0gV0dTTDo6cHJlcGFyZShz
dGQ6OmdldDxXR1NMOjpTdWNjZXNzZnVsQ2hlY2s+KGNoZWNrUmVzdWx0KS5hc3QsIHdnc2xIaW50
cyk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgY29uc3QgV0dTTDo6UmVmbGVjdGlvbjo6RW50cnlQb2lu
dEluZm9ybWF0aW9uKiBTaGFkZXJNb2R1bGU6OmVudHJ5UG9pbnRJbmZvcm1hdGkKIAogdm9pZCB3
Z3B1U2hhZGVyTW9kdWxlUmVsZWFzZShXR1BVU2hhZGVyTW9kdWxlIHNoYWRlck1vZHVsZSkKIHsK
LSAgICBkZWxldGUgc2hhZGVyTW9kdWxlOworICAgIHNoYWRlck1vZHVsZS0+ZGVyZWYoKTsKIH0K
IAogdm9pZCB3Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25JbmZvKFdHUFVTaGFkZXJNb2R1
bGUgc2hhZGVyTW9kdWxlLCBXR1BVQ29tcGlsYXRpb25JbmZvQ2FsbGJhY2sgY2FsbGJhY2ssIHZv
aWQgKiB1c2VyZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2Uu
aCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaAppbmRleCBiY2U5YTBmZWI5NzNlM2Ew
NjdmNTNjZTYxNGZkOTM5Zjc1NDVhZWU0Li40ZjNmYjg3OTcyMDg5Yjg1MmJkYTNlODBhZjFmNjFm
NWViNmU5MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5oCkBAIC01MSw2ICs1MSw3IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVVN1cmZhY2VJbXBsIHsK
LSAgICBSZWY8V2ViR1BVOjpTdXJmYWNlPiBzdXJmYWNlOworc3RydWN0IFdHUFVTdXJmYWNlSW1w
bCA6IHB1YmxpYyBXZWJHUFU6OlN1cmZhY2UgewogfTsKKworc3RhdGljX2Fzc2VydChzaXplb2Yo
V0dQVVN1cmZhY2VJbXBsKSA9PSBzaXplb2YoV2ViR1BVOjpTdXJmYWNlKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
U3VyZmFjZS5tbQppbmRleCA0YmEwNjM1OWRhZjQyZDg5YWQ0MTk5YTBjZDJlNzk3NTk2YWZiN2E3
Li4zY2Y3MjJkZjY4OGI2MWJjYTAxNDYwZTQ3MWNmOTNhN2E2OTliYjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1N1cmZhY2UubW0KQEAgLTQ1LDcgKzQ1LDcgQEAgV0dQVVRleHR1cmVGb3JtYXQgU3VyZmFjZTo6
Z2V0UHJlZmVycmVkRm9ybWF0KGNvbnN0IEFkYXB0ZXImIGFkYXB0ZXIpCiAKIHZvaWQgd2dwdVN1
cmZhY2VSZWxlYXNlKFdHUFVTdXJmYWNlIHN1cmZhY2UpCiB7Ci0gICAgZGVsZXRlIHN1cmZhY2U7
CisgICAgc3VyZmFjZS0+ZGVyZWYoKTsKIH0KIAogV0dQVVRleHR1cmVGb3JtYXQgd2dwdVN1cmZh
Y2VHZXRQcmVmZXJyZWRGb3JtYXQoV0dQVVN1cmZhY2Ugc3VyZmFjZSwgV0dQVUFkYXB0ZXIgYWRh
cHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5oIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKaW5kZXggYzlmZDNhYWRkZTlhODY5YWY4NmRk
Yzk0ZWVmMmVkNzUyZWY0MDIwNS4uODY4ZTVhNWI2YzkxMTM1MzA5ZDE1NTFhMTY2ZTE5YjU3NDY2
MDc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLmgKQEAgLTUyLDYgKzUyLDcgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCiAKLXN0cnVjdCBXR1BVU3dhcENoYWluSW1wbCB7
Ci0gICAgUmVmPFdlYkdQVTo6U3dhcENoYWluPiBzd2FwQ2hhaW47CitzdHJ1Y3QgV0dQVVN3YXBD
aGFpbkltcGwgOiBwdWJsaWMgV2ViR1BVOjpTd2FwQ2hhaW4gewogfTsKKworc3RhdGljX2Fzc2Vy
dChzaXplb2YoV0dQVVN3YXBDaGFpbkltcGwpID09IHNpemVvZihXZWJHUFU6OlN3YXBDaGFpbikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCmluZGV4IDc0NTIxMGI5N2M0NjJlMDZhZDhkZGNi
M2QyYTQ3NGFhZWE2YWM4ZjAuLmQ2YmU5NTUwMWQzMDRmZjExMzJhZjJjYjE2YmVmZGNjNzg4NGNm
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0KQEAgLTU2LDEyICs1NiwxMiBAQCB2b2lk
IFN3YXBDaGFpbjo6cHJlc2VudCgpCiAKIHZvaWQgd2dwdVN3YXBDaGFpblJlbGVhc2UoV0dQVVN3
YXBDaGFpbiBzd2FwQ2hhaW4pCiB7Ci0gICAgZGVsZXRlIHN3YXBDaGFpbjsKKyAgICBzd2FwQ2hh
aW4tPmRlcmVmKCk7CiB9CiAKIFdHUFVUZXh0dXJlVmlldyB3Z3B1U3dhcENoYWluR2V0Q3VycmVu
dFRleHR1cmVWaWV3KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQogewotICAgIHJldHVybiBuZXcg
V0dQVVRleHR1cmVWaWV3SW1wbCB7IFdlYkdQVTo6ZnJvbUFQSShzd2FwQ2hhaW4pLmdldEN1cnJl
bnRUZXh0dXJlVmlldygpIH07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdHUFVUZXh0dXJlVmll
dz4oV2ViR1BVOjpmcm9tQVBJKHN3YXBDaGFpbikuZ2V0Q3VycmVudFRleHR1cmVWaWV3KCkucHRy
KCkpOwogfQogCiB2b2lkIHdncHVTd2FwQ2hhaW5QcmVzZW50KFdHUFVTd2FwQ2hhaW4gc3dhcENo
YWluKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCmluZGV4IGVkMzM5Y2YxY2Q0ZTZiNjU3MWEyMTIwMTVk
YzBjYjUxMzk3NGUzMmQuLmQ1NjNlNjIxMWE4YTNlOWU3OGU3ODgxN2E3MjRhZTdmYjg5ZTRhMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHJpdmF0ZToKIAogfSAv
LyBuYW1lc3BhY2UgV2ViR1BVCiAKLXN0cnVjdCBXR1BVVGV4dHVyZUltcGwgewotICAgIFJlZjxX
ZWJHUFU6OlRleHR1cmU+IHRleHR1cmU7CitzdHJ1Y3QgV0dQVVRleHR1cmVJbXBsIDogcHVibGlj
IFdlYkdQVTo6VGV4dHVyZSB7CiB9OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVVGV4dHVy
ZUltcGwpID09IHNpemVvZihXZWJHUFU6OlRleHR1cmUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1t
CmluZGV4IDI4NjkxNjVjYTUxZmEzMTFmOGUxMTFlZTkzMzc5ZDM2MTEzZGY3NmMuLmY3NTUwNDdk
YTU0YWNjNDU3ZTIxN2ZlOWIxNmRhYWFmYWRkNjRhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5t
bQpAQCAtNjQsMTMgKzY0LDEyIEBAIHZvaWQgVGV4dHVyZTo6c2V0TGFiZWwoU3RyaW5nJiYgbGFi
ZWwpCiAKIHZvaWQgd2dwdVRleHR1cmVSZWxlYXNlKFdHUFVUZXh0dXJlIHRleHR1cmUpCiB7Ci0g
ICAgZGVsZXRlIHRleHR1cmU7CisgICAgdGV4dHVyZS0+ZGVyZWYoKTsKIH0KIAogV0dQVVRleHR1
cmVWaWV3IHdncHVUZXh0dXJlQ3JlYXRlVmlldyhXR1BVVGV4dHVyZSB0ZXh0dXJlLCBjb25zdCBX
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0
ID0gV2ViR1BVOjpmcm9tQVBJKHRleHR1cmUpLmNyZWF0ZVZpZXcoKmRlc2NyaXB0b3IpOwotICAg
IHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVRleHR1cmVWaWV3SW1wbCB7IHJlc3VsdC5yZWxlYXNl
Tm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXR1BVVGV4dHVy
ZVZpZXc+KFdlYkdQVTo6ZnJvbUFQSSh0ZXh0dXJlKS5jcmVhdGVWaWV3KCpkZXNjcmlwdG9yKS5s
ZWFrUmVmKCkpOwogfQogCiB2b2lkIHdncHVUZXh0dXJlRGVzdHJveShXR1BVVGV4dHVyZSB0ZXh0
dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKaW5kZXggMTkwYjc2N2Y1YWI3ZGRiNWU0
NzYxMmJjNDEzNmM4NjE5ZTI2ZTMwOC4uYmE5MzA0YmExYTliMWQ0MzVlZDIyYjRmZGE1N2I2MDk0
NmZlN2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC01Myw2ICs1Myw3IEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQogCi1zdHJ1Y3QgV0dQVVRleHR1cmVW
aWV3SW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6VGV4dHVyZVZpZXc+IHRleHR1cmVWaWV3Oworc3Ry
dWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgOiBwdWJsaWMgV2ViR1BVOjpUZXh0dXJlVmlldyB7CiB9
OworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihXR1BVVGV4dHVyZVZpZXdJbXBsKSA9PSBzaXplb2Yo
V2ViR1BVOjpUZXh0dXJlVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
VGV4dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQppbmRl
eCBmMzZlNDViMDEzM2VlZDI5MWU1NmFjNDhiMjAzNjk2MTM4MGJlZDNmLi40MmVlYzhhNzkxZTJl
NDIyNDM4NDVkNTc4N2UwMDAxY2E4OWNkYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmll
dy5tbQpAQCAtNDYsNyArNDYsNyBAQCB2b2lkIFRleHR1cmVWaWV3OjpzZXRMYWJlbChTdHJpbmcm
JiBsYWJlbCkKIAogdm9pZCB3Z3B1VGV4dHVyZVZpZXdSZWxlYXNlKFdHUFVUZXh0dXJlVmlldyB0
ZXh0dXJlVmlldykKIHsKLSAgICBVTlVTRURfUEFSQU0odGV4dHVyZVZpZXcpOworICAgIHRleHR1
cmVWaWV3LT5kZXJlZigpOwogfQogCiB2b2lkIHdncHVUZXh0dXJlVmlld1NldExhYmVsKFdHUFVU
ZXh0dXJlVmlldyB0ZXh0dXJlVmlldywgY29uc3QgY2hhciogbGFiZWwpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455317</attachid>
            <date>2022-03-21 19:17:14 -0700</date>
            <delta_ts>2022-03-22 14:33:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238001-20220321191714.patch</filename>
            <type>text/plain</type>
            <size>59446</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDBjNjhiYzE4YTQxYTY2ZjYw
NjFhNTBiZjUyM2NlNzQ4YTljNDVjOWYuLjdhNGQ0NjU0ZmE2ZjFkMzgzMGViYjlmNGFiYTE0MmQ0
MmYzNTNmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM4IEBACisyMDIyLTAzLTIxICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gUmVt
b3ZlIHRoZSBkb3VibGUgcG9pbnRlciBpbmRpcmVjdGlvbiBpbiBmcm9udCBvZiBhbGwgb2JqZWN0
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MDAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVh
ZCBvZiBkb2luZworCisgICAgICAgIGNsYXNzIEJ1ZmZlciB7CisgICAgICAgICAgICAuLi4KKyAg
ICAgICAgfTsKKyAgICAgICAgc3RydWN0IFdHUFVCdWZmZXJJbXBsIHsKKyAgICAgICAgICAgIFJl
ZjxCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgfQorCisgICAgICAgIHdlIGNhbiBpbnN0ZWFkIGRv
CisKKyAgICAgICAgc3RydWN0IFdHUFVCdWZmZXJJbXBsIHsKKyAgICAgICAgfTsKKyAgICAgICAg
c3RydWN0IEJ1ZmZlciA6IHB1YmxpYyBXR1BVQnVmZmVySW1wbCAgeworICAgICAgICAgICAgLi4u
CisgICAgICAgIH07CisKKyAgICAgICAgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyBwb2ludGVyIGNo
YXNpbmcgdG8gaW50ZXJhY3Qgd2l0aCBvYmplY3RzLgorCisgICAgICAgICogV2ViR1BVL0FQSUNv
bnZlcnNpb25zLmg6CisgICAgICAgIChXZWJHUFU6OmZyb21BUEkpOgorICAgICAgICAoV2ViR1BV
OjpyZWxlYXNlVG9BUEkpOgorICAgICAgICAqIFdlYkdQVS9BZGFwdGVyLmg6CisgICAgICAgICog
V2ViR1BVL0FkYXB0ZXIubW06CisgICAgICAgICh3Z3B1QWRhcHRlclJlbGVhc2UpOgorICAgICAg
ICAod2dwdUFkYXB0ZXJSZXF1ZXN0RGV2aWNlKToKKyAgICAgICAgKHdncHVBZGFwdGVyUmVxdWVz
dERldmljZVdpdGhCbG9jayk6CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cC5oOgorICAgICAg
ICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgICh3Z3B1QmluZEdyb3VwUmVsZWFzZSk6
CisgICAgICAgICogV2ViR1BVL0JpbmRHcm91cExheW91dC5oOgorICAgICAgICAqIFdlYkdQVS9C
aW5kR3JvdXBMYXlvdXQubW06CisgICAgICAgICh3Z3B1QmluZEdyb3VwTGF5b3V0UmVsZWFzZSk6
CisgICAgICAgICogV2ViR1BVL0J1ZmZlci5oOgorICAgICAgICAqIFdlYkdQVS9CdWZmZXIubW06
CisgICAgICAgICh3Z3B1QnVmZmVyUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRC
dWZmZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbToKKyAgICAgICAgKHdn
cHVDb21tYW5kQnVmZmVyUmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lmg6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tOgorICAgICAgICAod2dwdUNv
bW1hbmRFbmNvZGVyUmVsZWFzZSk6CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNv
bXB1dGVQYXNzKToKKyAgICAgICAgKHdncHVDb21tYW5kRW5jb2RlckJlZ2luUmVuZGVyUGFzcyk6
CisgICAgICAgICh3Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2gpOgorICAgICAgICAqIFdlYkdQVS9D
b21wdXRlUGFzc0VuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVy
Lm1tOgorICAgICAgICAod2dwdUNvbXB1dGVQYXNzRW5jb2RlclJlbGVhc2UpOgorICAgICAgICAq
IFdlYkdQVS9Db21wdXRlUGlwZWxpbmUuaDoKKyAgICAgICAgKiBXZWJHUFUvQ29tcHV0ZVBpcGVs
aW5lLm1tOgorICAgICAgICAoV2ViR1BVOjpDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExh
eW91dCk6CisgICAgICAgICh3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZSk6CisgICAgICAgICh3
Z3B1Q29tcHV0ZVBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKiBXZWJHUFUv
RGV2aWNlLmg6CisgICAgICAgICogV2ViR1BVL0RldmljZS5tbToKKyAgICAgICAgKHdncHVEZXZp
Y2VSZWxlYXNlKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVCaW5kR3JvdXApOgorICAgICAg
ICAod2dwdURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dCk6CisgICAgICAgICh3Z3B1RGV2aWNl
Q3JlYXRlQnVmZmVyKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVDb21tYW5kRW5jb2Rlcik6
CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKHdn
cHVEZXZpY2VDcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyk6CisgICAgICAgICh3Z3B1RGV2aWNl
Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2spOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVBpcGVsaW5lTGF5b3V0KToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVRdWVyeVNl
dCk6CisgICAgICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcik6CisgICAg
ICAgICh3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAod2dwdURldmlj
ZUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVJl
bmRlclBpcGVsaW5lQXN5bmNXaXRoQmxvY2spOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNh
bXBsZXIpOgorICAgICAgICAod2dwdURldmljZUNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAg
ICh3Z3B1RGV2aWNlQ3JlYXRlU3dhcENoYWluKToKKyAgICAgICAgKHdncHVEZXZpY2VDcmVhdGVU
ZXh0dXJlKToKKyAgICAgICAgKHdncHVEZXZpY2VHZXRRdWV1ZSk6CisgICAgICAgICogV2ViR1BV
L0luc3RhbmNlLmg6CisgICAgICAgICogV2ViR1BVL0luc3RhbmNlLm1tOgorICAgICAgICAod2dw
dUluc3RhbmNlUmVsZWFzZSk6CisgICAgICAgICh3Z3B1Q3JlYXRlSW5zdGFuY2UpOgorICAgICAg
ICAod2dwdUluc3RhbmNlQ3JlYXRlU3VyZmFjZSk6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1
ZXN0QWRhcHRlcik6CisgICAgICAgICh3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldpdGhCbG9j
ayk6CisgICAgICAgICogV2ViR1BVL1BpcGVsaW5lTGF5b3V0Lmg6CisgICAgICAgICogV2ViR1BV
L1BpcGVsaW5lTGF5b3V0Lm1tOgorICAgICAgICAod2dwdVBpcGVsaW5lTGF5b3V0UmVsZWFzZSk6
CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0Lmg6CisgICAgICAgICogV2ViR1BVL1F1ZXJ5U2V0
Lm1tOgorICAgICAgICAod2dwdVF1ZXJ5U2V0UmVsZWFzZSk6CisgICAgICAgICogV2ViR1BVL1F1
ZXVlLmg6CisgICAgICAgICogV2ViR1BVL1F1ZXVlLm1tOgorICAgICAgICAod2dwdVF1ZXVlUmVs
ZWFzZSk6CisgICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZS5oOgorICAgICAgICAqIFdlYkdQ
VS9SZW5kZXJCdW5kbGUubW06CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZSk6Cisg
ICAgICAgICogV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29kZXIuaDoKKyAgICAgICAgKiBXZWJHUFUv
UmVuZGVyQnVuZGxlRW5jb2Rlci5tbToKKyAgICAgICAgKHdncHVSZW5kZXJCdW5kbGVFbmNvZGVy
UmVsZWFzZSk6CisgICAgICAgICh3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckZpbmlzaCk6CisgICAg
ICAgICogV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmg6CisgICAgICAgICogV2ViR1BVL1JlbmRl
clBhc3NFbmNvZGVyLm1tOgorICAgICAgICAod2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZSk6
CisgICAgICAgICogV2ViR1BVL1JlbmRlclBpcGVsaW5lLmg6CisgICAgICAgICogV2ViR1BVL1Jl
bmRlclBpcGVsaW5lLm1tOgorICAgICAgICAoV2ViR1BVOjpSZW5kZXJQaXBlbGluZTo6Z2V0Qmlu
ZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKHdncHVSZW5kZXJQaXBlbGluZVJlbGVhc2UpOgorICAg
ICAgICAod2dwdVJlbmRlclBpcGVsaW5lR2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKiBX
ZWJHUFUvU2FtcGxlci5oOgorICAgICAgICAqIFdlYkdQVS9TYW1wbGVyLm1tOgorICAgICAgICAo
d2dwdVNhbXBsZXJSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvU2hhZGVyTW9kdWxlLmg6Cisg
ICAgICAgICogV2ViR1BVL1NoYWRlck1vZHVsZS5tbToKKyAgICAgICAgKFdlYkdQVTo6ZWFybHlD
b21waWxlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKHdncHVTaGFkZXJNb2R1bGVSZWxlYXNlKToK
KyAgICAgICAgKiBXZWJHUFUvU3VyZmFjZS5oOgorICAgICAgICAqIFdlYkdQVS9TdXJmYWNlLm1t
OgorICAgICAgICAod2dwdVN1cmZhY2VSZWxlYXNlKToKKyAgICAgICAgKiBXZWJHUFUvU3dhcENo
YWluLmg6CisgICAgICAgICogV2ViR1BVL1N3YXBDaGFpbi5tbToKKyAgICAgICAgKFdlYkdQVTo6
U3dhcENoYWluOjpnZXRDdXJyZW50VGV4dHVyZVZpZXcpOgorICAgICAgICAod2dwdVN3YXBDaGFp
blJlbGVhc2UpOgorICAgICAgICAod2dwdVN3YXBDaGFpbkdldEN1cnJlbnRUZXh0dXJlVmlldyk6
CisgICAgICAgICogV2ViR1BVL1RleHR1cmUuaDoKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZS5t
bToKKyAgICAgICAgKHdncHVUZXh0dXJlUmVsZWFzZSk6CisgICAgICAgICh3Z3B1VGV4dHVyZUNy
ZWF0ZVZpZXcpOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5oOgorICAgICAgICAqIFdl
YkdQVS9UZXh0dXJlVmlldy5tbToKKyAgICAgICAgKHdncHVUZXh0dXJlVmlld1JlbGVhc2UpOgor
CiAyMDIyLTAzLTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gbWF4QW5pc290cm9weSA+IDE2IGlzIGNsYW1wZWQsIHJhdGhlciB0
aGFuIGlsbGVnYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQSUNvbnZlcnNp
b25zLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BUElDb252ZXJzaW9ucy5oCmluZGV4IDA2ZmJi
NjRjYWRmMDg4ODc3NDY3ODRlYTU5N2RlYTIyZTAzMTA1NjAuLjIxM2QwNzE1NDI0MDIxMGE1ZjRh
YzE3YjNlOTYxODgzMGUyOGEwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FQ
SUNvbnZlcnNpb25zLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQVBJQ29udmVyc2lvbnMu
aApAQCAtNTIsMTE5ICs1MiwxMjEgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKKy8vIEZJWE1F
OiBJdCB3b3VsZCBiZSBjb29sIGlmIHdlIGRpZG4ndCBoYXZlIHRvIGxpc3QgYWxsIHRoZXNlIG92
ZXJsb2FkcywgYnV0IGluc3RlYWQgY291bGQgZG8gc29tZXRoaW5nIGxpa2UgYnJpZGdlX2Nhc3Qo
KSBpbiBXVEYuCisKIGlubGluZSBBZGFwdGVyJiBmcm9tQVBJKFdHUFVBZGFwdGVyIGFkYXB0ZXIp
CiB7Ci0gICAgcmV0dXJuIGFkYXB0ZXItPmFkYXB0ZXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFkYXB0ZXImPigqYWRhcHRlcik7CiB9CiAKIGlubGluZSBCaW5kR3JvdXAmIGZyb21BUEkoV0dQ
VUJpbmRHcm91cCBiaW5kR3JvdXApCiB7Ci0gICAgcmV0dXJuIGJpbmRHcm91cC0+YmluZEdyb3Vw
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxCaW5kR3JvdXAmPigqYmluZEdyb3VwKTsKIH0KIAog
aW5saW5lIEJpbmRHcm91cExheW91dCYgZnJvbUFQSShXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRH
cm91cExheW91dCkKIHsKLSAgICByZXR1cm4gYmluZEdyb3VwTGF5b3V0LT5iaW5kR3JvdXBMYXlv
dXQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJpbmRHcm91cExheW91dCY+KCpiaW5kR3JvdXBM
YXlvdXQpOwogfQogCiBpbmxpbmUgQnVmZmVyJiBmcm9tQVBJKFdHUFVCdWZmZXIgYnVmZmVyKQog
ewotICAgIHJldHVybiBidWZmZXItPmJ1ZmZlcjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVm
ZmVyJj4oKmJ1ZmZlcik7CiB9CiAKIGlubGluZSBDb21tYW5kQnVmZmVyJiBmcm9tQVBJKFdHUFVD
b21tYW5kQnVmZmVyIGNvbW1hbmRCdWZmZXIpCiB7Ci0gICAgcmV0dXJuIGNvbW1hbmRCdWZmZXIt
PmNvbW1hbmRCdWZmZXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbW1hbmRCdWZmZXImPigq
Y29tbWFuZEJ1ZmZlcik7CiB9CiAKIGlubGluZSBDb21tYW5kRW5jb2RlciYgZnJvbUFQSShXR1BV
Q29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCiB7Ci0gICAgcmV0dXJuIGNvbW1hbmRFbmNv
ZGVyLT5jb21tYW5kRW5jb2RlcjsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tbWFuZEVuY29k
ZXImPigqY29tbWFuZEVuY29kZXIpOwogfQogCiBpbmxpbmUgQ29tcHV0ZVBhc3NFbmNvZGVyJiBm
cm9tQVBJKFdHUFVDb21wdXRlUGFzc0VuY29kZXIgY29tcHV0ZVBhc3NFbmNvZGVyKQogewotICAg
IHJldHVybiBjb21wdXRlUGFzc0VuY29kZXItPmNvbXB1dGVQYXNzRW5jb2RlcjsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29tcHV0ZVBhc3NFbmNvZGVyJj4oKmNvbXB1dGVQYXNzRW5jb2Rlcik7
CiB9CiAKIGlubGluZSBDb21wdXRlUGlwZWxpbmUmIGZyb21BUEkoV0dQVUNvbXB1dGVQaXBlbGlu
ZSBjb21wdXRlUGlwZWxpbmUpCiB7Ci0gICAgcmV0dXJuIGNvbXB1dGVQaXBlbGluZS0+Y29tcHV0
ZVBpcGVsaW5lOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb21wdXRlUGlwZWxpbmUmPigqY29t
cHV0ZVBpcGVsaW5lKTsKIH0KIAogaW5saW5lIERldmljZSYgZnJvbUFQSShXR1BVRGV2aWNlIGRl
dmljZSkKIHsKLSAgICByZXR1cm4gZGV2aWNlLT5kZXZpY2U7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PERldmljZSY+KCpkZXZpY2UpOwogfQogCiBpbmxpbmUgSW5zdGFuY2UmIGZyb21BUEkoV0dQ
VUluc3RhbmNlIGluc3RhbmNlKQogewotICAgIHJldHVybiBpbnN0YW5jZS0+aW5zdGFuY2U7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RhbmNlJj4oKmluc3RhbmNlKTsKIH0KIAogaW5saW5l
IFBpcGVsaW5lTGF5b3V0JiBmcm9tQVBJKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91
dCkKIHsKLSAgICByZXR1cm4gcGlwZWxpbmVMYXlvdXQtPnBpcGVsaW5lTGF5b3V0OworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQaXBlbGluZUxheW91dCY+KCpwaXBlbGluZUxheW91dCk7CiB9CiAK
IGlubGluZSBRdWVyeVNldCYgZnJvbUFQSShXR1BVUXVlcnlTZXQgcXVlcnlTZXQpCiB7Ci0gICAg
cmV0dXJuIHF1ZXJ5U2V0LT5xdWVyeVNldDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UXVlcnlT
ZXQmPigqcXVlcnlTZXQpOwogfQogCiBpbmxpbmUgUXVldWUmIGZyb21BUEkoV0dQVVF1ZXVlIHF1
ZXVlKQogewotICAgIHJldHVybiBxdWV1ZS0+cXVldWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFF1ZXVlJj4oKnF1ZXVlKTsKIH0KIAogaW5saW5lIFJlbmRlckJ1bmRsZSYgZnJvbUFQSShXR1BV
UmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKIHsKLSAgICByZXR1cm4gcmVuZGVyQnVuZGxlLT5y
ZW5kZXJCdW5kbGU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlckJ1bmRsZSY+KCpyZW5k
ZXJCdW5kbGUpOwogfQogCiBpbmxpbmUgUmVuZGVyQnVuZGxlRW5jb2RlciYgZnJvbUFQSShXR1BV
UmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNvZGVyKQogewotICAgIHJldHVybiBy
ZW5kZXJCdW5kbGVFbmNvZGVyLT5yZW5kZXJCdW5kbGVFbmNvZGVyOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxSZW5kZXJCdW5kbGVFbmNvZGVyJj4oKnJlbmRlckJ1bmRsZUVuY29kZXIpOwogfQog
CiBpbmxpbmUgUmVuZGVyUGFzc0VuY29kZXImIGZyb21BUEkoV0dQVVJlbmRlclBhc3NFbmNvZGVy
IHJlbmRlclBhc3NFbmNvZGVyKQogewotICAgIHJldHVybiByZW5kZXJQYXNzRW5jb2Rlci0+cmVu
ZGVyUGFzc0VuY29kZXI7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclBhc3NFbmNvZGVy
Jj4oKnJlbmRlclBhc3NFbmNvZGVyKTsKIH0KIAogaW5saW5lIFJlbmRlclBpcGVsaW5lJiBmcm9t
QVBJKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBlbGluZSkKIHsKLSAgICByZXR1cm4gcmVu
ZGVyUGlwZWxpbmUtPnJlbmRlclBpcGVsaW5lOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5k
ZXJQaXBlbGluZSY+KCpyZW5kZXJQaXBlbGluZSk7CiB9CiAKIGlubGluZSBTYW1wbGVyJiBmcm9t
QVBJKFdHUFVTYW1wbGVyIHNhbXBsZXIpCiB7Ci0gICAgcmV0dXJuIHNhbXBsZXItPnNhbXBsZXI7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNhbXBsZXImPigqc2FtcGxlcik7CiB9CiAKIGlubGlu
ZSBTaGFkZXJNb2R1bGUmIGZyb21BUEkoV0dQVVNoYWRlck1vZHVsZSBzaGFkZXJNb2R1bGUpCiB7
Ci0gICAgcmV0dXJuIHNoYWRlck1vZHVsZS0+c2hhZGVyTW9kdWxlOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxTaGFkZXJNb2R1bGUmPigqc2hhZGVyTW9kdWxlKTsKIH0KIAogaW5saW5lIFN1cmZh
Y2UmIGZyb21BUEkoV0dQVVN1cmZhY2Ugc3VyZmFjZSkKIHsKLSAgICByZXR1cm4gc3VyZmFjZS0+
c3VyZmFjZTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZSY+KCpzdXJmYWNlKTsKIH0K
IAogaW5saW5lIFN3YXBDaGFpbiYgZnJvbUFQSShXR1BVU3dhcENoYWluIHN3YXBDaGFpbikKIHsK
LSAgICByZXR1cm4gc3dhcENoYWluLT5zd2FwQ2hhaW47CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFN3YXBDaGFpbiY+KCpzd2FwQ2hhaW4pOwogfQogCiBpbmxpbmUgVGV4dHVyZSYgZnJvbUFQSShX
R1BVVGV4dHVyZSB0ZXh0dXJlKQogewotICAgIHJldHVybiB0ZXh0dXJlLT50ZXh0dXJlOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0dXJlJj4oKnRleHR1cmUpOwogfQogCiBpbmxpbmUgVGV4
dHVyZVZpZXcmIGZyb21BUEkoV0dQVVRleHR1cmVWaWV3IHRleHR1cmVWaWV3KQogewotICAgIHJl
dHVybiB0ZXh0dXJlVmlldy0+dGV4dHVyZVZpZXc7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHR1cmVWaWV3Jj4oKnRleHR1cmVWaWV3KTsKIH0KIAogaW5saW5lIFN0cmluZyBmcm9tQVBJKGNv
bnN0IGNoYXIqIHN0cmluZykKQEAgLTE3Miw0ICsxNzQsMTAgQEAgaW5saW5lIFN0cmluZyBmcm9t
QVBJKGNvbnN0IGNoYXIqIHN0cmluZykKICAgICByZXR1cm4gU3RyaW5nKHN0cmluZyk7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgoraW5saW5lIFQqIHJlbGVhc2VUb0FQSShSZWZQdHI8VD4m
JiBwb2ludGVyKQoreworICAgIHJldHVybiBwb2ludGVyLmxlYWtSZWYoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLmgKaW5kZXggZDY5YzYyN2YxZDQ2ZDE5
MGY1YzQwOWE1ZmJjMjA2MDA3ODhkYWRmNS4uNmRmNGM4OTk5YmQ4NTZmNGJjNmRjMWFhODkzOTFh
ZmMwZTFkYzZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIuaApAQCAtMzEsMTIgKzMxLDE1IEBACiAj
aW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCitzdHJ1
Y3QgV0dQVUFkYXB0ZXJJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBE
ZXZpY2U7CiBjbGFzcyBJbnN0YW5jZTsKIAotY2xhc3MgQWRhcHRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEFkYXB0ZXI+IHsKK2NsYXNzIEFkYXB0ZXIgOiBwdWJsaWMgV0dQVUFkYXB0ZXJJbXBsLCBw
dWJsaWMgUmVmQ291bnRlZDxBZGFwdGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBZGFwdGVyPiBjcmVhdGUoaWQ8TVRMRGV2aWNlPiBk
ZXZpY2UsIEluc3RhbmNlJiBpbnN0YW5jZSkKQEAgLTYwLDkgKzYzLDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21hIG1hcmsgV0dQVSBXcmFwcGVyCi0K
LXN0cnVjdCBXR1BVQWRhcHRlckltcGwgewotICAgIFJlZjxXZWJHUFU6OkFkYXB0ZXI+IGFkYXB0
ZXI7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbSBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0FkYXB0ZXIubW0KaW5kZXggYmI0N2IzZmM2OWMzMmEzNjdjYjE5
ZGE4NDUyZDk2NWVlOTYzZDhlZi4uMWJiYWQ2MWE2Y2U3ZTI5NzU2ZGUxNTYxYWE0NjJkZTVkMWE2
ODI2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQWRhcHRlci5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9BZGFwdGVyLm1tCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBB
ZGFwdGVyOjpyZXF1ZXN0RGV2aWNlKGNvbnN0IFdHUFVEZXZpY2VEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBDb21wbGV0aW9uSGEKIAogdm9pZCB3Z3B1QWRhcHRlclJlbGVhc2UoV0dQVUFkYXB0ZXIg
YWRhcHRlcikKIHsKLSAgICBkZWxldGUgYWRhcHRlcjsKKyAgICBXZWJHUFU6OmZyb21BUEkoYWRh
cHRlcikuZGVyZWYoKTsKIH0KIAogc2l6ZV90IHdncHVBZGFwdGVyRW51bWVyYXRlRmVhdHVyZXMo
V0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQVUZlYXR1cmVOYW1lKiBmZWF0dXJlcykKQEAgLTE1OCwy
MSArMTU4LDEzIEBAIGJvb2wgd2dwdUFkYXB0ZXJIYXNGZWF0dXJlKFdHUFVBZGFwdGVyIGFkYXB0
ZXIsIFdHUFVGZWF0dXJlTmFtZSBmZWF0dXJlKQogdm9pZCB3Z3B1QWRhcHRlclJlcXVlc3REZXZp
Y2UoV0dQVUFkYXB0ZXIgYWRhcHRlciwgY29uc3QgV0dQVURldmljZURlc2NyaXB0b3IqIGRlc2Ny
aXB0b3IsIFdHUFVSZXF1ZXN0RGV2aWNlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRh
KQogewogICAgIFdlYkdQVTo6ZnJvbUFQSShhZGFwdGVyKS5yZXF1ZXN0RGV2aWNlKCpkZXNjcmlw
dG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMs
IFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBkZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2UpIHsKLSAg
ICAgICAgaWYgKGRldmljZSkgewotICAgICAgICAgICAgYXV0byYgcXVldWUgPSBkZXZpY2UtPmdl
dFF1ZXVlKCk7Ci0gICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG5ldyBXR1BVRGV2aWNlSW1w
bCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHF1ZXVlIH0gfSwgbWVzc2FnZS51dGY4KCku
ZGF0YSgpLCB1c2VyZGF0YSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FsbGJhY2so
c3RhdHVzLCBudWxscHRyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsKKyAgICAg
ICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZNb3ZlKGRldmljZSkp
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3
Z3B1QWRhcHRlclJlcXVlc3REZXZpY2VXaXRoQmxvY2soV0dQVUFkYXB0ZXIgYWRhcHRlciwgV0dQ
VURldmljZURlc2NyaXB0b3IgY29uc3QgKiBkZXNjcmlwdG9yLCBXR1BVUmVxdWVzdERldmljZUJs
b2NrQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGFkYXB0ZXIpLnJl
cXVlc3REZXZpY2UoKmRlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShX
R1BVUmVxdWVzdERldmljZVN0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkRldmljZT4mJiBk
ZXZpY2UsIFN0cmluZyYmIG1lc3NhZ2UpIHsKLSAgICAgICAgaWYgKGRldmljZSkgewotICAgICAg
ICAgICAgYXV0byYgcXVldWUgPSBkZXZpY2UtPmdldFF1ZXVlKCk7Ci0gICAgICAgICAgICBjYWxs
YmFjayhzdGF0dXMsIG5ldyBXR1BVRGV2aWNlSW1wbCB7IGRldmljZS5yZWxlYXNlTm9uTnVsbCgp
LCB7IHF1ZXVlIH0gfSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBjYWxsYmFjayhzdGF0dXMsIG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RGTW92
ZShkZXZpY2UpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwLmgKaW5kZXggNTlkNGY0Yzk0YWM1MmNiMGZiZjc1NDliODMxZTE3MzA4MjVi
ZjdhNC4uMDQ3NDk5YmYxMmU3YWE2ODRkNTJmNzZkMWViM2MxYjQ3ZWUyZTE5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwLmgKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQmluZEdyb3VwLmgKQEAgLTI5LDkgKzI5LDEyIEBACiAjaW1wb3J0IDx3dGYvUmVmLmg+
CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCitzdHJ1Y3QgV0dQVUJpbmRHcm91cEltcGwg
eworfTsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLWNsYXNzIEJpbmRHcm91cCA6IHB1YmxpYyBS
ZWZDb3VudGVkPEJpbmRHcm91cD4geworY2xhc3MgQmluZEdyb3VwIDogcHVibGljIFdHUFVCaW5k
R3JvdXBJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxCaW5kR3JvdXA+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEJpbmRHcm91cD4gY3JlYXRl
KGlkPE1UTEJ1ZmZlcj4gdmVydGV4QXJndW1lbnRCdWZmZXIsIGlkPE1UTEJ1ZmZlcj4gZnJhZ21l
bnRBcmd1bWVudEJ1ZmZlciwgaWQ8TVRMQnVmZmVyPiBjb21wdXRlQXJndW1lbnRCdWZmZXIpCkBA
IC01Niw5ICs1OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQot
I3ByYWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVUJpbmRHcm91cEltcGwgewot
ICAgIFJlZjxXZWJHUFU6OkJpbmRHcm91cD4gYmluZEdyb3VwOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Jp
bmRHcm91cC5tbQppbmRleCA3ZGQxMzU3MjM5YjE5YjBlMmM1MjMwM2YzNjk2NWQ4OTJmMTNjYjhj
Li42MTc1Mjg5ZjQ4YmJiYjM0YjAxOGUzNWU5MmM0MGI3NDFlOTUyNTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwLm1tCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBCaW5kR3JvdXA6OnNldExh
YmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVCaW5kR3JvdXBSZWxlYXNlKFdHUFVCaW5k
R3JvdXAgYmluZEdyb3VwKQogewotICAgIGRlbGV0ZSBiaW5kR3JvdXA7CisgICAgV2ViR1BVOjpm
cm9tQVBJKGJpbmRHcm91cCkuZGVyZWYoKTsKIH0KIAogdm9pZCB3Z3B1QmluZEdyb3VwU2V0TGFi
ZWwoV0dQVUJpbmRHcm91cCBiaW5kR3JvdXAsIGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0LmggYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAppbmRleCBkMjY1MTY3MmNhZjJlY2Q1NGViMjA1Yzg4
YmQ1NzI2ODVjYzI0YjhmLi42OTdiMmFmOTk0ZGNiOGI0ZWUxYzFjYzA0NTZjM2MwOTA3ODNmNTQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQuaApAQCAtMjksOSArMjksMTIg
QEAKICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK3N0
cnVjdCBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7Cit9OworCiBuYW1lc3BhY2UgV2ViR1BVIHsK
IAotY2xhc3MgQmluZEdyb3VwTGF5b3V0IDogcHVibGljIFJlZkNvdW50ZWQ8QmluZEdyb3VwTGF5
b3V0PiB7CitjbGFzcyBCaW5kR3JvdXBMYXlvdXQgOiBwdWJsaWMgV0dQVUJpbmRHcm91cExheW91
dEltcGwsIHB1YmxpYyBSZWZDb3VudGVkPEJpbmRHcm91cExheW91dD4gewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QmluZEdyb3VwTGF5b3V0
PiBjcmVhdGUoaWQ8TVRMQXJndW1lbnRFbmNvZGVyPiB2ZXJ0ZXhBcmd1bWVudEVuY29kZXIsIGlk
PE1UTEFyZ3VtZW50RW5jb2Rlcj4gZnJhZ21lbnRBcmd1bWVudEVuY29kZXIsIGlkPE1UTEFyZ3Vt
ZW50RW5jb2Rlcj4gY29tcHV0ZUFyZ3VtZW50RW5jb2RlcikKQEAgLTU4LDkgKzYxLDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21hIG1hcmsgV0dQVSBX
cmFwcGVyCi0KLXN0cnVjdCBXR1BVQmluZEdyb3VwTGF5b3V0SW1wbCB7Ci0gICAgUmVmPFdlYkdQ
VTo6QmluZEdyb3VwTGF5b3V0PiBiaW5kR3JvdXBMYXlvdXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvQmluZEdyb3VwTGF5b3V0Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQmluZEdyb3VwTGF5b3V0Lm1tCmluZGV4IGE2Yjc2YTY3ZWQyZWM4MDUzZjVmMGQxODY2NTEw
NGE4ZWI3M2QxMmEuLmJiNDk0NGZmZjBhYzExZTM3MTgwMmEwYzY5NmIzNGM5ZGI2M2M1ZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cExheW91dC5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXBMYXlvdXQubW0KQEAgLTI0NSw3ICsyNDUsNyBA
QCBOU1VJbnRlZ2VyIEJpbmRHcm91cExheW91dDo6ZW5jb2RlZExlbmd0aCgpIGNvbnN0CiAKIHZv
aWQgd2dwdUJpbmRHcm91cExheW91dFJlbGVhc2UoV0dQVUJpbmRHcm91cExheW91dCBiaW5kR3Jv
dXBMYXlvdXQpCiB7Ci0gICAgZGVsZXRlIGJpbmRHcm91cExheW91dDsKKyAgICBXZWJHUFU6OmZy
b21BUEkoYmluZEdyb3VwTGF5b3V0KS5kZXJlZigpOwogfQogCiB2b2lkIHdncHVCaW5kR3JvdXBM
YXlvdXRTZXRMYWJlbChXR1BVQmluZEdyb3VwTGF5b3V0IGJpbmRHcm91cExheW91dCwgY29uc3Qg
Y2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIuaCBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCmluZGV4IDdjOWNiNmY2MzVjMzU1MzA1MjE0
ZDJkNWNlMTE0YWJhOWM5NzViZDUuLjI2Y2JhMjVkYWQ0NWVlYmE3NTE3NDdjOTRjYTcxZDkwZDIw
N2Q0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5oCkBAIC0zMywxMSArMzMsMTQgQEAKICNpbXBvcnQg
PHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCitzdHJ1
Y3QgV0dQVUJ1ZmZlckltcGwgeworfTsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNsYXNzIERl
dmljZTsKIAotY2xhc3MgQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEJ1ZmZl
cj4geworY2xhc3MgQnVmZmVyIDogcHVibGljIFdHUFVCdWZmZXJJbXBsLCBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8QnVmZmVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3Q7CkBAIC05OCw5ICsxMDEsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEgbWFyayBX
R1BVIFdyYXBwZXIKLQotc3RydWN0IFdHUFVCdWZmZXJJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpC
dWZmZXI+IGJ1ZmZlcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZm
ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggNjBhMDlkZDk0YTJl
YmZhMjJhYmVlZDVmMjhmZjAzMTRlZTE0MTlkYS4uMTFkZDZlNjcxN2Y5NGJjNzI0ODBiOTM3NDEz
NWFhNGMwZmIxNmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1t
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMzk2LDcgKzM5Niw3IEBA
IHZvaWQgQnVmZmVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIAogdm9pZCB3Z3B1QnVmZmVy
UmVsZWFzZShXR1BVQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBkZWxldGUgYnVmZmVyOworICAgIFdl
YkdQVTo6ZnJvbUFQSShidWZmZXIpLmRlcmVmKCk7CiB9CiAKIHZvaWQgd2dwdUJ1ZmZlckRlc3Ry
b3koV0dQVUJ1ZmZlciBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kQnVmZmVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLmgKaW5k
ZXggOTQ4ZjMxNjkyZTY1NjY4MTI4NmMzOWVlNTZkMTExMmU0MDVhNmM0Ni4uY2E4ZjYyNzExMmVm
MDcyMDhiNDViYmNiMDVlODJjNjJjYjQzNjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRC
dWZmZXIuaApAQCAtMjksOSArMjksMTIgQEAKICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQg
PHd0Zi9SZWZDb3VudGVkLmg+CiAKK3N0cnVjdCBXR1BVQ29tbWFuZEJ1ZmZlckltcGwgeworfTsK
KwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLWNsYXNzIENvbW1hbmRCdWZmZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxDb21tYW5kQnVmZmVyPiB7CitjbGFzcyBDb21tYW5kQnVmZmVyIDogcHVibGljIFdH
UFVDb21tYW5kQnVmZmVySW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8Q29tbWFuZEJ1ZmZlcj4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q29t
bWFuZEJ1ZmZlcj4gY3JlYXRlKGlkPE1UTENvbW1hbmRCdWZmZXI+IGNvbW1hbmRCdWZmZXIpCkBA
IC01Miw5ICs1NSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQot
I3ByYWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVUNvbW1hbmRCdWZmZXJJbXBs
IHsKLSAgICBSZWY8V2ViR1BVOjpDb21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyOwotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0gYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9Db21tYW5kQnVmZmVyLm1tCmluZGV4IGM5NmRlMjJiMDY5MDIzMzFiN2M1
NzBjZDhmODZlOTI5NjFkNDc5ZDAuLmVjZWRiZTMzOGI1NDRhNTg5NmJlMjA2MWEzNDJlZDdiN2M4
ODY2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRCdWZmZXIubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEJ1ZmZlci5tbQpAQCAtNDgsNyArNDgs
NyBAQCB2b2lkIENvbW1hbmRCdWZmZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lk
IHdncHVDb21tYW5kQnVmZmVyUmVsZWFzZShXR1BVQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVy
KQogewotICAgIGRlbGV0ZSBjb21tYW5kQnVmZmVyOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21t
YW5kQnVmZmVyKS5kZXJlZigpOwogfQogCiB2b2lkIHdncHVDb21tYW5kQnVmZmVyU2V0TGFiZWwo
V0dQVUNvbW1hbmRCdWZmZXIgY29tbWFuZEJ1ZmZlciwgY29uc3QgY2hhciogbGFiZWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIuaAppbmRleCBkYmVlZTQzMDI3NGVhMzMzNWRkMTY2
YWE1NjA5NWE3MGM1NmYzZGMwLi40MGFkM2EwOWIxZjEzNGQ2MzdkNzdkNTMyMWVkNGNkOTg2NzRh
YTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLmgKQEAgLTMwLDYgKzMwLDkg
QEAKICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KIAorc3RydWN0
IFdHUFVDb21tYW5kRW5jb2RlckltcGwgeworfTsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNs
YXNzIEJ1ZmZlcjsKQEAgLTM5LDcgKzQyLDcgQEAgY2xhc3MgRGV2aWNlOwogY2xhc3MgUXVlcnlT
ZXQ7CiBjbGFzcyBSZW5kZXJQYXNzRW5jb2RlcjsKIAotY2xhc3MgQ29tbWFuZEVuY29kZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxDb21tYW5kRW5jb2Rlcj4sIHB1YmxpYyBDb21tYW5kc01peGluIHsK
K2NsYXNzIENvbW1hbmRFbmNvZGVyIDogcHVibGljIFdHUFVDb21tYW5kRW5jb2RlckltcGwsIHB1
YmxpYyBSZWZDb3VudGVkPENvbW1hbmRFbmNvZGVyPiwgcHVibGljIENvbW1hbmRzTWl4aW4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q29t
bWFuZEVuY29kZXI+IGNyZWF0ZShpZDxNVExDb21tYW5kQnVmZmVyPiBjb21tYW5kQnVmZmVyLCBE
ZXZpY2UmIGRldmljZSkKQEAgLTgyLDkgKzg1LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21hIG1hcmsgV0dQVSBXcmFwcGVyCi0KLXN0cnVjdCBXR1BV
Q29tbWFuZEVuY29kZXJJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4gY29t
bWFuZEVuY29kZXI7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRl
eCBiYzAwZmVmYzQ4M2QzNWExNTQ3ODYzMzBiMTYxNDAxZjk4ZTgzZjM3Li4wZTk4Zjg4ZGQzMmY2
YmM0ODc4YTFmMWY5MTFlNGNjN2NhYTJlODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbQpAQCAtMzYwLDE5ICszNjAsMTcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6c2V0
TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiAKIHZvaWQgd2dwdUNvbW1hbmRFbmNvZGVyUmVsZWFzZShX
R1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIpCiB7Ci0gICAgZGVsZXRlIGNvbW1hbmRF
bmNvZGVyOworICAgIFdlYkdQVTo6ZnJvbUFQSShjb21tYW5kRW5jb2RlcikuZGVyZWYoKTsKIH0K
IAogV0dQVUNvbXB1dGVQYXNzRW5jb2RlciB3Z3B1Q29tbWFuZEVuY29kZXJCZWdpbkNvbXB1dGVQ
YXNzKFdHUFVDb21tYW5kRW5jb2RlciBjb21tYW5kRW5jb2RlciwgY29uc3QgV0dQVUNvbXB1dGVQ
YXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6
ZnJvbUFQSShjb21tYW5kRW5jb2RlcikuYmVnaW5Db21wdXRlUGFzcygqZGVzY3JpcHRvcik7Ci0g
ICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQ29tcHV0ZVBhc3NFbmNvZGVySW1wbCB7IHJlc3Vs
dC5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyOworICAgIHJldHVybiBXZWJHUFU6OnJlbGVh
c2VUb0FQSShXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmJlZ2luQ29tcHV0ZVBhc3Mo
KmRlc2NyaXB0b3IpKTsKIH0KIAogV0dQVVJlbmRlclBhc3NFbmNvZGVyIHdncHVDb21tYW5kRW5j
b2RlckJlZ2luUmVuZGVyUGFzcyhXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNv
bnN0IFdHUFVSZW5kZXJQYXNzRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShjb21tYW5kRW5jb2RlcikuYmVnaW5SZW5kZXJQYXNzKCpk
ZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVSZW5kZXJQYXNzRW5jb2Rl
ckltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4g
V2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5iZWdp
blJlbmRlclBhc3MoKmRlc2NyaXB0b3IpKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJD
b3B5QnVmZmVyVG9CdWZmZXIoV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVyLCBXR1BV
QnVmZmVyIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2Zmc2V0LCBXR1BVQnVmZmVyIGRlc3RpbmF0
aW9uLCB1aW50NjRfdCBkZXN0aW5hdGlvbk9mZnNldCwgdWludDY0X3Qgc2l6ZSkKQEAgLTQwMiw4
ICs0MDAsNyBAQCB2b2lkIHdncHVDb21tYW5kRW5jb2RlckNsZWFyQnVmZmVyKFdHUFVDb21tYW5k
RW5jb2RlciBjb21tYW5kRW5jb2RlciwgV0dQVUJ1ZmZlcgogCiBXR1BVQ29tbWFuZEJ1ZmZlciB3
Z3B1Q29tbWFuZEVuY29kZXJGaW5pc2goV0dQVUNvbW1hbmRFbmNvZGVyIGNvbW1hbmRFbmNvZGVy
LCBjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoY29tbWFuZEVuY29kZXIpLmZpbmlzaCgqZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVQ29tbWFuZEJ1ZmZlckltcGwg
eyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViR1BV
OjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGNvbW1hbmRFbmNvZGVyKS5maW5pc2goKmRl
c2NyaXB0b3IpKTsKIH0KIAogdm9pZCB3Z3B1Q29tbWFuZEVuY29kZXJJbnNlcnREZWJ1Z01hcmtl
cihXR1BVQ29tbWFuZEVuY29kZXIgY29tbWFuZEVuY29kZXIsIGNvbnN0IGNoYXIqIG1hcmtlckxh
YmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVy
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIuaAppbmRleCA5MzBj
Y2I3MTJiMjRlZjQ5NjgzYmJjMmEwZDlmNjNmZTEyYmVlM2ZhLi41MjRiZGU2NzllZTVhMDdkNjhm
ZTczNjczYmM3NDk0ZWNjNmE1YmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21wdXRlUGFzc0VuY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGFz
c0VuY29kZXIuaApAQCAtMzAsNiArMzAsOSBAQAogI2ltcG9ydCA8d3RmL1JlZi5oPgogI2ltcG9y
dCA8d3RmL1JlZkNvdW50ZWQuaD4KIAorc3RydWN0IFdHUFVDb21wdXRlUGFzc0VuY29kZXJJbXBs
IHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBCaW5kR3JvdXA7CkBAIC0zNyw3
ICs0MCw3IEBAIGNsYXNzIEJ1ZmZlcjsKIGNsYXNzIENvbXB1dGVQaXBlbGluZTsKIGNsYXNzIFF1
ZXJ5U2V0OwogCi1jbGFzcyBDb21wdXRlUGFzc0VuY29kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxD
b21wdXRlUGFzc0VuY29kZXI+LCBwdWJsaWMgQ29tbWFuZHNNaXhpbiB7CitjbGFzcyBDb21wdXRl
UGFzc0VuY29kZXIgOiBwdWJsaWMgV0dQVUNvbXB1dGVQYXNzRW5jb2RlckltcGwsIHB1YmxpYyBS
ZWZDb3VudGVkPENvbXB1dGVQYXNzRW5jb2Rlcj4sIHB1YmxpYyBDb21tYW5kc01peGluIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbXB1
dGVQYXNzRW5jb2Rlcj4gY3JlYXRlKGlkPE1UTENvbXB1dGVDb21tYW5kRW5jb2Rlcj4gY29tcHV0
ZUNvbW1hbmRFbmNvZGVyKQpAQCAtNzAsOSArNzMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEgbWFyayBXR1BVIFdyYXBwZXIKLQotc3RydWN0IFdH
UFVDb21wdXRlUGFzc0VuY29kZXJJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpDb21wdXRlUGFzc0Vu
Y29kZXI+IGNvbXB1dGVQYXNzRW5jb2RlcjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21wdXRlUGFzc0VuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21w
dXRlUGFzc0VuY29kZXIubW0KaW5kZXggODZlZTBiYmZjMGIyMThhMWE1MDZkMzE1OWFkYjI5NjEw
M2NkNTQ0OS4uMDlkYzljM2IzMjhjNGMwMGUzMjU1N2MzOTcxMDg3YThkNDJhMWNlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBhc3NFbmNvZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQYXNzRW5jb2Rlci5tbQpAQCAtMTQ0LDcgKzE0NCw3
IEBAIHZvaWQgQ29tcHV0ZVBhc3NFbmNvZGVyOjpzZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIAog
dm9pZCB3Z3B1Q29tcHV0ZVBhc3NFbmNvZGVyUmVsZWFzZShXR1BVQ29tcHV0ZVBhc3NFbmNvZGVy
IGNvbXB1dGVQYXNzRW5jb2RlcikKIHsKLSAgICBkZWxldGUgY29tcHV0ZVBhc3NFbmNvZGVyOwor
ICAgIFdlYkdQVTo6ZnJvbUFQSShjb21wdXRlUGFzc0VuY29kZXIpLmRlcmVmKCk7CiB9CiAKIHZv
aWQgd2dwdUNvbXB1dGVQYXNzRW5jb2RlckJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoV0dQ
VUNvbXB1dGVQYXNzRW5jb2RlciBjb21wdXRlUGFzc0VuY29kZXIsIFdHUFVRdWVyeVNldCBxdWVy
eVNldCwgdWludDMyX3QgcXVlcnlJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbXB1dGVQaXBlbGluZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVs
aW5lLmgKaW5kZXggYjQxMGQyNDIwOGM1M2I3NjlmYjljNDU2YTMxZWFhNGYwZjRkODQ0Yy4uODc1
OTQ2NTMzZWYyY2Y3YTVlNGMxMGMwZTg3ZDAxMDAwMTc5ZDA3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tcHV0ZVBpcGVsaW5lLmgKQEAgLTI5LDExICsyOSwxNCBAQAogI2ltcG9ydCA8d3RmL1Jl
Zi5oPgogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KIAorc3RydWN0IFdHUFVDb21wdXRlUGlw
ZWxpbmVJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFzcyBCaW5kR3JvdXBM
YXlvdXQ7CiAKLWNsYXNzIENvbXB1dGVQaXBlbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvbXB1
dGVQaXBlbGluZT4geworY2xhc3MgQ29tcHV0ZVBpcGVsaW5lIDogcHVibGljIFdHUFVDb21wdXRl
UGlwZWxpbmVJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxDb21wdXRlUGlwZWxpbmU+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENvbXB1dGVQ
aXBlbGluZT4gY3JlYXRlKGlkPE1UTENvbXB1dGVQaXBlbGluZVN0YXRlPiBjb21wdXRlUGlwZWxp
bmVTdGF0ZSkKQEAgLTQzLDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgfkNvbXB1dGVQaXBlbGlu
ZSgpOwogCi0gICAgUmVmPEJpbmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQz
Ml90IGdyb3VwSW5kZXgpOworICAgIEJpbmRHcm91cExheW91dCogZ2V0QmluZEdyb3VwTGF5b3V0
KHVpbnQzMl90IGdyb3VwSW5kZXgpOwogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAg
ICAgaWQ8TVRMQ29tcHV0ZVBpcGVsaW5lU3RhdGU+IGNvbXB1dGVQaXBlbGluZVN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9jb21wdXRlUGlwZWxpbmVTdGF0ZTsgfQpAQCAtNTUsOSArNTgsMyBAQCBw
cml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEgbWFyayBXR1BV
IFdyYXBwZXIKLQotc3RydWN0IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsKLSAgICBSZWY8V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmU+IGNvbXB1dGVQaXBlbGluZTsKLX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21wdXRlUGlwZWxpbmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21wdXRlUGlwZWxpbmUubW0KaW5kZXggNDJiYzFjMzBmYTQ2NDYxYTE5MmYxNGYwNDNm
ZmM1MDU0ZGJlNGY3Yi4uYTNhYmJkZjYxMzYyMTdhYjM3YWU1NzYwNWNlNWU3YTAxYmM3NTE1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tcHV0ZVBpcGVsaW5lLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbXB1dGVQaXBlbGluZS5tbQpAQCAtMTgyLDEwICsxODIs
MTAgQEAgQ29tcHV0ZVBpcGVsaW5lOjpDb21wdXRlUGlwZWxpbmUoaWQ8TVRMQ29tcHV0ZVBpcGVs
aW5lU3RhdGU+IGNvbXB1dGVQaXBlbGluZVN0YXQKIAogQ29tcHV0ZVBpcGVsaW5lOjp+Q29tcHV0
ZVBpcGVsaW5lKCkgPSBkZWZhdWx0OwogCi1SZWY8QmluZEdyb3VwTGF5b3V0PiBDb21wdXRlUGlw
ZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KQorQmluZEdyb3Vw
TGF5b3V0KiBDb21wdXRlUGlwZWxpbmU6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91
cEluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShncm91cEluZGV4KTsKLSAgICByZXR1cm4gQmlu
ZEdyb3VwTGF5b3V0OjpjcmVhdGUobmlsLCBuaWwsIG5pbCk7CisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIHZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJikKQEAgLTE5OSwx
MiArMTk5LDEyIEBAIHZvaWQgQ29tcHV0ZVBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJikKIAog
dm9pZCB3Z3B1Q29tcHV0ZVBpcGVsaW5lUmVsZWFzZShXR1BVQ29tcHV0ZVBpcGVsaW5lIGNvbXB1
dGVQaXBlbGluZSkKIHsKLSAgICBkZWxldGUgY29tcHV0ZVBpcGVsaW5lOworICAgIFdlYkdQVTo6
ZnJvbUFQSShjb21wdXRlUGlwZWxpbmUpLmRlcmVmKCk7CiB9CiAKIFdHUFVCaW5kR3JvdXBMYXlv
dXQgd2dwdUNvbXB1dGVQaXBlbGluZUdldEJpbmRHcm91cExheW91dChXR1BVQ29tcHV0ZVBpcGVs
aW5lIGNvbXB1dGVQaXBlbGluZSwgdWludDMyX3QgZ3JvdXBJbmRleCkKIHsKLSAgICByZXR1cm4g
bmV3IFdHUFVCaW5kR3JvdXBMYXlvdXRJbXBsIHsgV2ViR1BVOjpmcm9tQVBJKGNvbXB1dGVQaXBl
bGluZSkuZ2V0QmluZEdyb3VwTGF5b3V0KGdyb3VwSW5kZXgpIH07CisgICAgcmV0dXJuIFdlYkdQ
VTo6ZnJvbUFQSShjb21wdXRlUGlwZWxpbmUpLmdldEJpbmRHcm91cExheW91dChncm91cEluZGV4
KTsKIH0KIAogdm9pZCB3Z3B1Q29tcHV0ZVBpcGVsaW5lU2V0TGFiZWwoV0dQVUNvbXB1dGVQaXBl
bGluZSBjb21wdXRlUGlwZWxpbmUsIGNvbnN0IGNoYXIqIGxhYmVsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2Uu
aAppbmRleCBiOTI1YjgxYWIzN2NjOTkzZDVlZjA2NGIwZDFmYjc0NDhlZTUwZjJkLi45NjI3MzM5
Y2RhZjUxNmQxMzRhMmE3NTc3ZDdhOTdmYTZiNGYyOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9EZXZpY2UuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApA
QCAtMzUsNiArMzUsOSBAQAogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKK3N0cnVjdCBXR1BVRGV2aWNlSW1wbCB7Cit9OworCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIAogY2xhc3MgQmluZEdyb3VwOwpAQCAtNTMsNyArNTYsNyBAQCBjbGFzcyBT
dXJmYWNlOwogY2xhc3MgU3dhcENoYWluOwogY2xhc3MgVGV4dHVyZTsKIAotY2xhc3MgRGV2aWNl
IDogcHVibGljIFJlZkNvdW50ZWQ8RGV2aWNlPiB7CitjbGFzcyBEZXZpY2UgOiBwdWJsaWMgV0dQ
VURldmljZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPERldmljZT4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8RGV2aWNlPiBjcmVhdGUo
aWQ8TVRMRGV2aWNlPiwgU3RyaW5nJiYgZGV2aWNlTGFiZWwsIEluc3RhbmNlJik7CkBAIC0xMTYs
MTAgKzExOSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQotI3By
YWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVURldmljZUltcGwgewotICAgIFJl
ZjxXZWJHUFU6OkRldmljZT4gZGV2aWNlOwotICAgIFdHUFVRdWV1ZUltcGwgZGVmYXVsdFF1ZXVl
OwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0RldmljZS5tbQppbmRleCA4MmJiZjkzMGYxOTE1Njk4MThiOTUzMTc5
NDkyM2QxMzM1Yzc1ZDcxLi5lOTFlZDA1NjJkNjBkY2VkOTYxOTk0NWU2YWE0MzQ2MDk2OWMyNDUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UubW0KKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvRGV2aWNlLm1tCkBAIC0yMTQsMTEzICsyMTQsMTAwIEBAIHZvaWQgRGV2
aWNlOjpzZXRMYWJlbChTdHJpbmcmJikKIAogdm9pZCB3Z3B1RGV2aWNlUmVsZWFzZShXR1BVRGV2
aWNlIGRldmljZSkKIHsKLSAgICBkZWxldGUgZGV2aWNlOworICAgIFdlYkdQVTo6ZnJvbUFQSShk
ZXZpY2UpLmRlcmVmKCk7CiB9CiAKIFdHUFVCaW5kR3JvdXAgd2dwdURldmljZUNyZWF0ZUJpbmRH
cm91cChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5j
cmVhdGVCaW5kR3JvdXAoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQ
VUJpbmRHcm91cEltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3Jl
YXRlQmluZEdyb3VwKCpkZXNjcmlwdG9yKSk7CiB9CiAKIFdHUFVCaW5kR3JvdXBMYXlvdXQgd2dw
dURldmljZUNyZWF0ZUJpbmRHcm91cExheW91dChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQ
VUJpbmRHcm91cExheW91dERlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVCaW5kR3JvdXBMYXlvdXQoKmRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUJpbmRHcm91cExheW91dEltcGwg
eyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViR1BV
OjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlQmluZEdyb3VwTGF5
b3V0KCpkZXNjcmlwdG9yKSk7CiB9CiAKIFdHUFVCdWZmZXIgd2dwdURldmljZUNyZWF0ZUJ1ZmZl
cihXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUJ1ZmZlckRlc2NyaXB0b3IqIGRlc2NyaXB0
b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVC
dWZmZXIoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVUJ1ZmZlcklt
cGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2Vi
R1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlQnVmZmVyKCpk
ZXNjcmlwdG9yKSk7CiB9CiAKIFdHUFVDb21tYW5kRW5jb2RlciB3Z3B1RGV2aWNlQ3JlYXRlQ29t
bWFuZEVuY29kZXIoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0IFdHUFVDb21tYW5kRW5jb2RlckRl
c2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21B
UEkoZGV2aWNlKS5jcmVhdGVDb21tYW5kRW5jb2RlcigqZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJu
IHJlc3VsdCA/IG5ldyBXR1BVQ29tbWFuZEVuY29kZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25O
dWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdlYkdQ
VTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbW1hbmRFbmNvZGVyKCpkZXNjcmlwdG9yKSk7CiB9
CiAKIFdHUFVDb21wdXRlUGlwZWxpbmUgd2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZShX
R1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IqIGRl
c2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5j
cmVhdGVDb21wdXRlUGlwZWxpbmUoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBu
ZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDog
bnVsbHB0cjsKKyAgICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJ
KGRldmljZSkuY3JlYXRlQ29tcHV0ZVBpcGVsaW5lKCpkZXNjcmlwdG9yKSk7CiB9CiAKIHZvaWQg
d2dwdURldmljZUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKFdHUFVEZXZpY2UgZGV2aWNlLCBj
b25zdCBXR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0
ZUNvbXB1dGVQaXBlbGluZUFzeW5jQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQog
ewogICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5j
KCpkZXNjcmlwdG9yLCBbY2FsbGJhY2ssIHVzZXJkYXRhXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3lu
Y1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4mJiBwaXBlbGlu
ZSwgU3RyaW5nJiYgbWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhzdGF0dXMsIHBpcGVsaW5l
ID8gbmV3IFdHUFVDb21wdXRlUGlwZWxpbmVJbXBsIHsgcGlwZWxpbmUucmVsZWFzZU5vbk51bGwo
KSB9IDogbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0YSgpLCB1c2VyZGF0YSk7CisgICAgICAg
IGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9BUEkoV1RGTW92ZShwaXBlbGluZSkp
LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCB3
Z3B1RGV2aWNlQ3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmNXaXRoQmxvY2soV0dQVURldmljZSBk
ZXZpY2UsIFdHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwg
V0dQVUNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jQmxvY2tDYWxsYmFjayBjYWxsYmFjaykKIHsK
ICAgICBXZWJHUFU6OmZyb21BUEkoZGV2aWNlKS5jcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYygq
ZGVzY3JpcHRvciwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFdHUFVDcmVhdGVQaXBl
bGluZUFzeW5jU3RhdHVzIHN0YXR1cywgUmVmUHRyPFdlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYm
IHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7Ci0gICAgICAgIGNhbGxiYWNrKHN0YXR1cywg
cGlwZWxpbmUgPyBuZXcgV0dQVUNvbXB1dGVQaXBlbGluZUltcGwgeyBwaXBlbGluZS5yZWxlYXNl
Tm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBj
YWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdURk1vdmUocGlwZWxpbmUpKSwg
bWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KIAogV0dQVVBpcGVsaW5lTGF5b3V0
IHdncHVEZXZpY2VDcmVhdGVQaXBlbGluZUxheW91dChXR1BVRGV2aWNlIGRldmljZSwgY29uc3Qg
V0dQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJl
c3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVQaXBlbGluZUxheW91dEltcGwg
eyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViR1BV
OjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUGlwZWxpbmVMYXlv
dXQoKmRlc2NyaXB0b3IpKTsKIH0KIAogV0dQVVF1ZXJ5U2V0IHdncHVEZXZpY2VDcmVhdGVRdWVy
eVNldChXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVF1ZXJ5U2V0RGVzY3JpcHRvciogZGVz
Y3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNy
ZWF0ZVF1ZXJ5U2V0KCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVR
dWVyeVNldEltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICBy
ZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRl
UXVlcnlTZXQoKmRlc2NyaXB0b3IpKTsKIH0KIAogV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgd2dw
dURldmljZUNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoV0dQVURldmljZSBkZXZpY2UsIGNvbnN0
IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVJlbmRlckJ1
bmRsZUVuY29kZXJJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7Cisg
ICAgcmV0dXJuIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNy
ZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoKmRlc2NyaXB0b3IpKTsKIH0KIAogV0dQVVJlbmRlclBp
cGVsaW5lIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGluZShXR1BVRGV2aWNlIGRldmljZSwg
Y29uc3QgV0dQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBh
dXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVJlbmRlclBpcGVsaW5l
KCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVSZW5kZXJQaXBlbGlu
ZUltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4g
V2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlUmVuZGVy
UGlwZWxpbmUoKmRlc2NyaXB0b3IpKTsKIH0KIAogdm9pZCB3Z3B1RGV2aWNlQ3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYyhXR1BVRGV2aWNlIGRldmljZSwgY29uc3QgV0dQVVJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvciogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNDYWxs
YmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEpCiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGRl
dmljZSkuY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqZGVzY3JpcHRvciwgW2NhbGxiYWNrLCB1
c2VyZGF0YV0oV0dQVUNyZWF0ZVBpcGVsaW5lQXN5bmNTdGF0dXMgc3RhdHVzLCBSZWZQdHI8V2Vi
R1BVOjpSZW5kZXJQaXBlbGluZT4mJiBwaXBlbGluZSwgU3RyaW5nJiYgbWVzc2FnZSkgewotICAg
ICAgICBjYWxsYmFjayhzdGF0dXMsIHBpcGVsaW5lID8gbmV3IFdHUFVSZW5kZXJQaXBlbGluZUlt
cGwgeyBwaXBlbGluZS5yZWxlYXNlTm9uTnVsbCgpIH0gOiBudWxscHRyLCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCksIHVzZXJkYXRhKTsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJl
bGVhc2VUb0FQSShXVEZNb3ZlKHBpcGVsaW5lKSksIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSwgdXNl
cmRhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIHdncHVEZXZpY2VDcmVhdGVSZW5kZXJQaXBlbGlu
ZUFzeW5jV2l0aEJsb2NrKFdHUFVEZXZpY2UgZGV2aWNlLCBXR1BVUmVuZGVyUGlwZWxpbmVEZXNj
cmlwdG9yIGNvbnN0ICogZGVzY3JpcHRvciwgV0dQVUNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmNC
bG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAgIFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNy
ZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoKmRlc2NyaXB0b3IsIFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShXR1BVQ3JlYXRlUGlwZWxpbmVBc3luY1N0YXR1cyBzdGF0dXMsIFJlZlB0cjxX
ZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmIHBpcGVsaW5lLCBTdHJpbmcmJiBtZXNzYWdlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgcGlwZWxpbmUgPyBuZXcgV0dQVVJlbmRlclBpcGVsaW5l
SW1wbCB7IHBpcGVsaW5lLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgIGNhbGxiYWNrKHN0YXR1cywgV2ViR1BVOjpyZWxlYXNlVG9B
UEkoV1RGTW92ZShwaXBlbGluZSkpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0pOwog
fQogCiBXR1BVU2FtcGxlciB3Z3B1RGV2aWNlQ3JlYXRlU2FtcGxlcihXR1BVRGV2aWNlIGRldmlj
ZSwgY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8g
cmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlU2FtcGxlcigqZGVzY3JpcHRv
cik7Ci0gICAgcmV0dXJuIHJlc3VsdCA/IG5ldyBXR1BVU2FtcGxlckltcGwgeyByZXN1bHQucmVs
ZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9B
UEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlU2FtcGxlcigqZGVzY3JpcHRvcikpOwog
fQogCiBXR1BVU2hhZGVyTW9kdWxlIHdncHVEZXZpY2VDcmVhdGVTaGFkZXJNb2R1bGUoV0dQVURl
dmljZSBkZXZpY2UsIGNvbnN0IFdHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlU2hh
ZGVyTW9kdWxlKCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdHUFVTaGFk
ZXJNb2R1bGVJbXBsIHsgcmVzdWx0LnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAg
cmV0dXJuIFdlYkdQVTo6cmVsZWFzZVRvQVBJKFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0
ZVNoYWRlck1vZHVsZSgqZGVzY3JpcHRvcikpOwogfQogCiBXR1BVU3dhcENoYWluIHdncHVEZXZp
Y2VDcmVhdGVTd2FwQ2hhaW4oV0dQVURldmljZSBkZXZpY2UsIFdHUFVTdXJmYWNlIHN1cmZhY2Us
IGNvbnN0IFdHUFVTd2FwQ2hhaW5EZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8g
cmVzdWx0ID0gV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuY3JlYXRlU3dhcENoYWluKFdlYkdQVTo6
ZnJvbUFQSShzdXJmYWNlKSwgKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcg
V0dQVVN3YXBDaGFpbkltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsK
KyAgICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKGRldmljZSku
Y3JlYXRlU3dhcENoYWluKFdlYkdQVTo6ZnJvbUFQSShzdXJmYWNlKSwgKmRlc2NyaXB0b3IpKTsK
IH0KIAogV0dQVVRleHR1cmUgd2dwdURldmljZUNyZWF0ZVRleHR1cmUoV0dQVURldmljZSBkZXZp
Y2UsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVRleHR1cmUoKmRlc2NyaXB0
b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVRleHR1cmVJbXBsIHsgcmVzdWx0LnJl
bGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkdQVTo6cmVsZWFzZVRv
QVBJKFdlYkdQVTo6ZnJvbUFQSShkZXZpY2UpLmNyZWF0ZVRleHR1cmUoKmRlc2NyaXB0b3IpKTsK
IH0KIAogdm9pZCB3Z3B1RGV2aWNlRGVzdHJveShXR1BVRGV2aWNlIGRldmljZSkKQEAgLTM0MCw3
ICszMjcsNyBAQCBib29sIHdncHVEZXZpY2VHZXRMaW1pdHMoV0dQVURldmljZSBkZXZpY2UsIFdH
UFVTdXBwb3J0ZWRMaW1pdHMqIGxpbWl0cykKIAogV0dQVVF1ZXVlIHdncHVEZXZpY2VHZXRRdWV1
ZShXR1BVRGV2aWNlIGRldmljZSkKIHsKLSAgICByZXR1cm4gJmRldmljZS0+ZGVmYXVsdFF1ZXVl
OworICAgIHJldHVybiAmV2ViR1BVOjpmcm9tQVBJKGRldmljZSkuZ2V0UXVldWUoKTsKIH0KIAog
Ym9vbCB3Z3B1RGV2aWNlSGFzRmVhdHVyZShXR1BVRGV2aWNlIGRldmljZSwgV0dQVUZlYXR1cmVO
YW1lIGZlYXR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5o
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UuaAppbmRleCBlZjViN2Y2MzU3MTQ5M2Rm
NjkzMGMxMjZiM2RlOTZkYjU4ZWRhZDc1Li5lOGVjNjkzNTdhYjliZWY0ZjlmM2FiMzA1NjdjNDI1
M2Q5MzVlZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9JbnN0YW5jZS5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLmgKQEAgLTMzLDEyICszMywxNSBAQAog
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+CiAKK3N0cnVjdCBXR1BVSW5zdGFuY2VJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCiBjbGFzcyBBZGFwdGVyOwogY2xhc3MgU3VyZmFjZTsKIAotY2xhc3MgSW5zdGFuY2UgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW5zdGFuY2U+IHsKK2NsYXNzIEluc3RhbmNlIDog
cHVibGljIFdHUFVJbnN0YW5jZUltcGwsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbnN0
YW5jZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8SW5zdGFuY2U+IGNyZWF0ZShjb25zdCBXR1BVSW5zdGFuY2VEZXNjcmlwdG9yJik7
CkBAIC02Niw5ICs2OSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUK
LQotI3ByYWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVUluc3RhbmNlSW1wbCB7
Ci0gICAgUmVmPFdlYkdQVTo6SW5zdGFuY2U+IGluc3RhbmNlOwotfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0luc3RhbmNlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvSW5z
dGFuY2UubW0KaW5kZXggOTNhOTlhN2Y0NWI2NDJjNmJjMDJiMjhmMzUxYjkwMGZjN2IyMDZiMS4u
NTQxMWM0NGRiZDUwMTM0ZjkzZGZjMzAyMDgyYzRmMTVkODJkYmJhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvSW5zdGFuY2UubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
SW5zdGFuY2UubW0KQEAgLTE3NSwxMyArMTc1LDEyIEBAIHZvaWQgSW5zdGFuY2U6OnJlcXVlc3RB
ZGFwdGVyKGNvbnN0IFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIENvbXBsZXRp
CiAKIHZvaWQgd2dwdUluc3RhbmNlUmVsZWFzZShXR1BVSW5zdGFuY2UgaW5zdGFuY2UpCiB7Ci0g
ICAgZGVsZXRlIGluc3RhbmNlOworICAgIFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkuZGVyZWYo
KTsKIH0KIAogV0dQVUluc3RhbmNlIHdncHVDcmVhdGVJbnN0YW5jZShjb25zdCBXR1BVSW5zdGFu
Y2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9yKQogewotICAgIGF1dG8gcmVzdWx0ID0gV2ViR1BVOjpJ
bnN0YW5jZTo6Y3JlYXRlKCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3IFdH
UFVJbnN0YW5jZUltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpJbnN0YW5jZTo6Y3JlYXRlKCpk
ZXNjcmlwdG9yKSk7CiB9CiAKIFdHUFVQcm9jIHdncHVHZXRQcm9jQWRkcmVzcyhXR1BVRGV2aWNl
LCBjb25zdCBjaGFyKiBwcm9jTmFtZSkKQEAgLTQzNSw4ICs0MzQsNyBAQCBXR1BVUHJvYyB3Z3B1
R2V0UHJvY0FkZHJlc3MoV0dQVURldmljZSwgY29uc3QgY2hhciogcHJvY05hbWUpCiAKIFdHUFVT
dXJmYWNlIHdncHVJbnN0YW5jZUNyZWF0ZVN1cmZhY2UoV0dQVUluc3RhbmNlIGluc3RhbmNlLCBj
b25zdCBXR1BVU3VyZmFjZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBXZWJHUFU6OmZyb21BUEkoaW5zdGFuY2UpLmNyZWF0ZVN1cmZhY2UoKmRlc2NyaXB0b3Ip
OwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVN1cmZhY2VJbXBsIHsgcmVzdWx0LnJlbGVh
c2VOb25OdWxsKCkgfSA6IG51bGxwdHI7CisgICAgcmV0dXJuIFdlYkdQVTo6cmVsZWFzZVRvQVBJ
KFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkuY3JlYXRlU3VyZmFjZSgqZGVzY3JpcHRvcikpOwog
fQogCiB2b2lkIHdncHVJbnN0YW5jZVByb2Nlc3NFdmVudHMoV0dQVUluc3RhbmNlIGluc3RhbmNl
KQpAQCAtNDQ3LDEzICs0NDUsMTMgQEAgdm9pZCB3Z3B1SW5zdGFuY2VQcm9jZXNzRXZlbnRzKFdH
UFVJbnN0YW5jZSBpbnN0YW5jZSkKIHZvaWQgd2dwdUluc3RhbmNlUmVxdWVzdEFkYXB0ZXIoV0dQ
VUluc3RhbmNlIGluc3RhbmNlLCBjb25zdCBXR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zKiBvcHRp
b25zLCBXR1BVUmVxdWVzdEFkYXB0ZXJDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogdXNlcmRhdGEp
CiB7CiAgICAgV2ViR1BVOjpmcm9tQVBJKGluc3RhbmNlKS5yZXF1ZXN0QWRhcHRlcigqb3B0aW9u
cywgW2NhbGxiYWNrLCB1c2VyZGF0YV0oV0dQVVJlcXVlc3RBZGFwdGVyU3RhdHVzIHN0YXR1cywg
UmVmUHRyPFdlYkdQVTo6QWRhcHRlcj4mJiBhZGFwdGVyLCBTdHJpbmcmJiBtZXNzYWdlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrKHN0YXR1cywgYWRhcHRlciA/IG5ldyBXR1BVQWRhcHRlckltcGwgeyBh
ZGFwdGVyLnJlbGVhc2VOb25OdWxsKCkgfSA6IG51bGxwdHIsIG1lc3NhZ2UudXRmOCgpLmRhdGEo
KSwgdXNlcmRhdGEpOworICAgICAgICBjYWxsYmFjayhzdGF0dXMsIFdlYkdQVTo6cmVsZWFzZVRv
QVBJKFdURk1vdmUoYWRhcHRlcikpLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCksIHVzZXJkYXRhKTsK
ICAgICB9KTsKIH0KIAogdm9pZCB3Z3B1SW5zdGFuY2VSZXF1ZXN0QWRhcHRlcldpdGhCbG9jayhX
R1BVSW5zdGFuY2UgaW5zdGFuY2UsIFdHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMgY29uc3QgKiBv
cHRpb25zLCBXR1BVUmVxdWVzdEFkYXB0ZXJCbG9ja0NhbGxiYWNrIGNhbGxiYWNrKQogewogICAg
IFdlYkdQVTo6ZnJvbUFQSShpbnN0YW5jZSkucmVxdWVzdEFkYXB0ZXIoKm9wdGlvbnMsIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShXR1BVUmVxdWVzdEFkYXB0ZXJTdGF0dXMgc3RhdHVz
LCBSZWZQdHI8V2ViR1BVOjpBZGFwdGVyPiYmIGFkYXB0ZXIsIFN0cmluZyYmIG1lc3NhZ2UpIHsK
LSAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBhZGFwdGVyID8gbmV3IFdHUFVBZGFwdGVySW1wbCB7
IGFkYXB0ZXIucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0ciwgbWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgY2FsbGJhY2soc3RhdHVzLCBXZWJHUFU6OnJlbGVhc2VUb0FQSShXVEZN
b3ZlKGFkYXB0ZXIpKSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5oCmluZGV4IDFjODFjNDMwZGVlZTRiNDVlYjBiNzJl
NGYzZTEwNWNlYTJkMWQ2YjYuLjFjNDM4ODAyY2JhNDQzMmIwZDk1ODczMmVhNjlkN2U1YTUwYTA5
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1BpcGVsaW5lTGF5b3V0LmgKKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUGlwZWxpbmVMYXlvdXQuaApAQCAtMzAsMTEgKzMwLDE0
IEBACiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgog
CitzdHJ1Y3QgV0dQVVBpcGVsaW5lTGF5b3V0SW1wbCB7Cit9OworCiBuYW1lc3BhY2UgV2ViR1BV
IHsKIAogY2xhc3MgQmluZEdyb3VwTGF5b3V0OwogCi1jbGFzcyBQaXBlbGluZUxheW91dCA6IHB1
YmxpYyBSZWZDb3VudGVkPFBpcGVsaW5lTGF5b3V0PiB7CitjbGFzcyBQaXBlbGluZUxheW91dCA6
IHB1YmxpYyBXR1BVUGlwZWxpbmVMYXlvdXRJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxQaXBlbGlu
ZUxheW91dD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0
YXRpYyBSZWY8UGlwZWxpbmVMYXlvdXQ+IGNyZWF0ZShWZWN0b3I8UmVmPEJpbmRHcm91cExheW91
dD4+JiYgYmluZEdyb3VwTGF5b3V0cykKQEAgLTU5LDkgKzYyLDMgQEAgcHJpdmF0ZToKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21hIG1hcmsgV0dQVSBXcmFwcGVyCi0KLXN0
cnVjdCBXR1BVUGlwZWxpbmVMYXlvdXRJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpQaXBlbGluZUxh
eW91dD4gcGlwZWxpbmVMYXlvdXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvUGlwZWxpbmVMYXlvdXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91
dC5tbQppbmRleCBjOTM3MGIzNDNmYzI3Y2Q1YmMxMmRkNDdkYmQ1YzdlN2Q1MDRjYmYzLi5lZmEw
ZDZkNTE3YmFjYjY3Y2UyMzZkMDQxYWYxYTVmZjM1ODA5NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9QaXBlbGluZUxheW91dC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9QaXBlbGluZUxheW91dC5tbQpAQCAtNzYsNyArNzYsNyBAQCBib29sIFBpcGVsaW5lTGF5b3V0
OjpvcGVyYXRvciE9KGNvbnN0IFBpcGVsaW5lTGF5b3V0JiBvdGhlcikgY29uc3QKIAogdm9pZCB3
Z3B1UGlwZWxpbmVMYXlvdXRSZWxlYXNlKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91
dCkKIHsKLSAgICBkZWxldGUgcGlwZWxpbmVMYXlvdXQ7CisgICAgV2ViR1BVOjpmcm9tQVBJKHBp
cGVsaW5lTGF5b3V0KS5kZXJlZigpOwogfQogCiB2b2lkIHdncHVQaXBlbGluZUxheW91dFNldExh
YmVsKFdHUFVQaXBlbGluZUxheW91dCBwaXBlbGluZUxheW91dCwgY29uc3QgY2hhciogbGFiZWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvUXVlcnlTZXQuaAppbmRleCBiNjJhNTQ2MDMwZTk2OWVlODAwZTI3MzkyMmE3
ZmU1ZmNkZDNlZjJhLi5hMzFkZjc3NGM0MmUwMGFlYzMwZDZlZmIzNTZjNDI2ZjAyMDYzNjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5oCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1F1ZXJ5U2V0LmgKQEAgLTI5LDkgKzI5LDEyIEBACiAjaW1wb3J0IDx3dGYv
UmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgogCitzdHJ1Y3QgV0dQVVF1ZXJ5U2V0
SW1wbCB7Cit9OworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xhc3MgUXVlcnlTZXQgOiBwdWJs
aWMgUmVmQ291bnRlZDxRdWVyeVNldD4geworY2xhc3MgUXVlcnlTZXQgOiBwdWJsaWMgV0dQVVF1
ZXJ5U2V0SW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8UXVlcnlTZXQ+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFF1ZXJ5U2V0PiBjcmVhdGUo
aWQ8TVRMQ291bnRlclNhbXBsZUJ1ZmZlcj4gY291bnRlclNhbXBsZUJ1ZmZlcikKQEAgLTUzLDkg
KzU2LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21h
IG1hcmsgV0dQVSBXcmFwcGVyCi0KLXN0cnVjdCBXR1BVUXVlcnlTZXRJbXBsIHsKLSAgICBSZWY8
V2ViR1BVOjpRdWVyeVNldD4gcXVlcnlTZXQ7Ci19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUXVlcnlTZXQubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5tbQpp
bmRleCA0MzhmNmQyNTI1ZmZmMmYxYjllY2FkNGJhOTdlZWRmYTYwZGQ2NjZhLi40Y2FmMmY3ZDJm
ZWQxOTRhMTBhYzEwMGMxZDMzN2FlYjI4OGJmZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9RdWVyeVNldC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWVyeVNldC5t
bQpAQCAtNTksNyArNTksNyBAQCB2b2lkIFF1ZXJ5U2V0OjpzZXRMYWJlbChTdHJpbmcmJikKIAog
dm9pZCB3Z3B1UXVlcnlTZXRSZWxlYXNlKFdHUFVRdWVyeVNldCBxdWVyeVNldCkKIHsKLSAgICBk
ZWxldGUgcXVlcnlTZXQ7CisgICAgV2ViR1BVOjpmcm9tQVBJKHF1ZXJ5U2V0KS5kZXJlZigpOwog
fQogCiB2b2lkIHdncHVRdWVyeVNldERlc3Ryb3koV0dQVVF1ZXJ5U2V0IHF1ZXJ5U2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaCBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1F1ZXVlLmgKaW5kZXggN2I5MjhhNzE4NGIxOGJlYjdiODJlMjgyYjg3ODFkN2E2NDRkYzM4
Ny4uMGI3ODZhMDc3ZGJhYzQ5YzdhNjkzZjdjNzk5YzYxZTcyYjhjZTc4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9R
dWV1ZS5oCkBAIC0zMywxMyArMzMsMTYgQEAKICNpbXBvcnQgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgogCitzdHJ1Y3QgV0dQVVF1ZXVlSW1wbCB7
Cit9OworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAogY2xhc3MgQnVmZmVyOwogY2xhc3MgQ29tbWFu
ZEJ1ZmZlcjsKIGNsYXNzIERldmljZTsKIAotY2xhc3MgUXVldWUgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UXVldWU+IHsKK2NsYXNzIFF1ZXVlIDogcHVibGljIFdHUFVRdWV1ZUltcGws
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxRdWV1ZT4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UXVldWU+IGNyZWF0ZShpZDxNVExD
b21tYW5kUXVldWU+IGNvbW1hbmRRdWV1ZSwgRGV2aWNlJiBkZXZpY2UpCkBAIC03NSw5ICs3OCwz
IEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQotI3ByYWdtYSBtYXJr
IFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVVF1ZXVlSW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6
UXVldWU+IHF1ZXVlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVl
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KaW5kZXggMGRjYjUwODg0ZGNjMDlj
NTA1NDU4M2YwMzJhNTljMTljYzYyYjQ2OC4uYmVkNWMzNjMwYzZhZTgyZDc0MTExY2E2NTM0NDdi
YmQwMWFkNzExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lk
IFF1ZXVlOjpzY2hlZHVsZVdvcmsoSW5zdGFuY2U6OldvcmtJdGVtJiYgd29ya0l0ZW0pCiAKIHZv
aWQgd2dwdVF1ZXVlUmVsZWFzZShXR1BVUXVldWUgcXVldWUpCiB7Ci0gICAgZGVsZXRlIHF1ZXVl
OworICAgIFdlYkdQVTo6ZnJvbUFQSShxdWV1ZSkuZGVyZWYoKTsKIH0KIAogdm9pZCB3Z3B1UXVl
dWVPblN1Ym1pdHRlZFdvcmtEb25lKFdHUFVRdWV1ZSBxdWV1ZSwgdWludDY0X3Qgc2lnbmFsVmFs
dWUsIFdHUFVRdWV1ZVdvcmtEb25lQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIHVzZXJkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlLmggYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaAppbmRleCA4OTVlNzgwMGE3MGRjMzgzMjUyZGM3
ODgyY2M1M2IyMjlmOGUwZjAxLi5lM2EzZjUyZTllOWJiYTZkOTJjYjYzN2EyYTUyNDc4ZmI5Zjg2
OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaAorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUuaApAQCAtMjksOSArMjksMTIgQEAK
ICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK3N0cnVj
dCBXR1BVUmVuZGVyQnVuZGxlSW1wbCB7Cit9OworCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotY2xh
c3MgUmVuZGVyQnVuZGxlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyQnVuZGxlPiB7CitjbGFz
cyBSZW5kZXJCdW5kbGUgOiBwdWJsaWMgV0dQVVJlbmRlckJ1bmRsZUltcGwsIHB1YmxpYyBSZWZD
b3VudGVkPFJlbmRlckJ1bmRsZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlPiBjcmVhdGUoaWQ8TVRMSW5kaXJlY3RD
b21tYW5kQnVmZmVyPiBpbmRpcmVjdENvbW1hbmRCdWZmZXIpCkBAIC01Miw5ICs1NSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQotI3ByYWdtYSBtYXJrIFdHUFUg
V3JhcHBlcgotCi1zdHJ1Y3QgV0dQVVJlbmRlckJ1bmRsZUltcGwgewotICAgIFJlZjxXZWJHUFU6
OlJlbmRlckJ1bmRsZT4gcmVuZGVyQnVuZGxlOwotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1JlbmRlckJ1bmRsZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1
bmRsZS5tbQppbmRleCBiYmRhMTM3ZWNjYjQ1MWQwZmQzZmUyNDQzZmI1YzJhNTI3MGU4MmQyLi41
YWZiNTM5YjJjMGUwOTRhMGFmMmQ0NTk4OTYwMDZmMzZkMWVkMDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvUmVuZGVyQnVuZGxlLm1tCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgUmVuZGVyQnVuZGxlOjpz
ZXRMYWJlbChTdHJpbmcmJiBsYWJlbCkKIAogdm9pZCB3Z3B1UmVuZGVyQnVuZGxlUmVsZWFzZShX
R1BVUmVuZGVyQnVuZGxlIHJlbmRlckJ1bmRsZSkKIHsKLSAgICBkZWxldGUgcmVuZGVyQnVuZGxl
OworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGUpLmRlcmVmKCk7CiB9CiAKIHZvaWQg
d2dwdVJlbmRlckJ1bmRsZVNldExhYmVsKFdHUFVSZW5kZXJCdW5kbGUgcmVuZGVyQnVuZGxlLCBj
b25zdCBjaGFyKiBsYWJlbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRl
ckJ1bmRsZUVuY29kZXIuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlckJ1bmRsZUVuY29k
ZXIuaAppbmRleCBhODBkY2NmNGM5NjljNzlhZTI2ZDg4MmU2NDRkM2EzOGU2ZTFiNTVhLi40ODRi
NGEwODMxYzMxNjRiM2FhMGQzNTQ5OWFmMjVmOGE5ZjAzNjAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLmgKKysrIGIvU291cmNlL1dlYkdQVS9X
ZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5oCkBAIC0zMSw2ICszMSw5IEBACiAjaW1wb3J0IDx3
dGYvUmVmQ291bnRlZC5oPgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogCitzdHJ1Y3QgV0dQVVJl
bmRlckJ1bmRsZUVuY29kZXJJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBjbGFz
cyBCaW5kR3JvdXA7CkBAIC0zOCw3ICs0MSw3IEBAIGNsYXNzIEJ1ZmZlcjsKIGNsYXNzIFJlbmRl
ckJ1bmRsZTsKIGNsYXNzIFJlbmRlclBpcGVsaW5lOwogCi1jbGFzcyBSZW5kZXJCdW5kbGVFbmNv
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyQnVuZGxlRW5jb2Rlcj4sIHB1YmxpYyBDb21t
YW5kc01peGluIHsKK2NsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXIgOiBwdWJsaWMgV0dQVVJlbmRl
ckJ1bmRsZUVuY29kZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJCdW5kbGVFbmNvZGVy
PiwgcHVibGljIENvbW1hbmRzTWl4aW4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVyQnVuZGxlRW5jb2Rlcj4gY3JlYXRlKGlkPE1U
TEluZGlyZWN0Q29tbWFuZEJ1ZmZlcj4gaW5kaXJlY3RDb21tYW5kQnVmZmVyKQpAQCAtNzMsOSAr
NzYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEg
bWFyayBXR1BVIFdyYXBwZXIKLQotc3RydWN0IFdHUFVSZW5kZXJCdW5kbGVFbmNvZGVySW1wbCB7
Ci0gICAgUmVmPFdlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4gcmVuZGVyQnVuZGxlRW5jb2Rl
cjsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJCdW5kbGVFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyQnVuZGxlRW5jb2Rlci5tbQppbmRl
eCA2MzkwOTA3ODc2ZTQ0MTJhMTkxNjIwODk4ZTQ4MDhjYTVmMWFmMzhjLi4yZjNlMTEwMWZhNmUx
MDUxOThkMzA4NjZlYjY5ZDA0OTI2NWNjZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9SZW5kZXJCdW5kbGVFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Jl
bmRlckJ1bmRsZUVuY29kZXIubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFJlbmRlckJ1bmRs
ZUVuY29kZXI6OnNldExhYmVsKFN0cmluZyYmIGxhYmVsKQogCiB2b2lkIHdncHVSZW5kZXJCdW5k
bGVFbmNvZGVyUmVsZWFzZShXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNv
ZGVyKQogewotICAgIGRlbGV0ZSByZW5kZXJCdW5kbGVFbmNvZGVyOworICAgIFdlYkdQVTo6ZnJv
bUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5kZXJlZigpOwogfQogCiB2b2lkIHdncHVSZW5kZXJC
dW5kbGVFbmNvZGVyRHJhdyhXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmNv
ZGVyLCB1aW50MzJfdCB2ZXJ0ZXhDb3VudCwgdWludDMyX3QgaW5zdGFuY2VDb3VudCwgdWludDMy
X3QgZmlyc3RWZXJ0ZXgsIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCkBAIC0yMDAsOCArMjAwLDcg
QEAgdm9pZCB3Z3B1UmVuZGVyQnVuZGxlRW5jb2RlckRyYXdJbmRpcmVjdChXR1BVUmVuZGVyQnVu
ZGxlRW5jb2RlciByZW5kZXJCdW5kbGVFbmMKIAogV0dQVVJlbmRlckJ1bmRsZSB3Z3B1UmVuZGVy
QnVuZGxlRW5jb2RlckZpbmlzaChXR1BVUmVuZGVyQnVuZGxlRW5jb2RlciByZW5kZXJCdW5kbGVF
bmNvZGVyLCBjb25zdCBXR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvciogZGVzY3JpcHRvcikKIHsK
LSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJCdW5kbGVFbmNvZGVyKS5m
aW5pc2goKmRlc2NyaXB0b3IpOwotICAgIHJldHVybiByZXN1bHQgPyBuZXcgV0dQVVJlbmRlckJ1
bmRsZUltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0cjsKKyAgICByZXR1
cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKHJlbmRlckJ1bmRsZUVuY29k
ZXIpLmZpbmlzaCgqZGVzY3JpcHRvcikpOwogfQogCiB2b2lkIHdncHVSZW5kZXJCdW5kbGVFbmNv
ZGVySW5zZXJ0RGVidWdNYXJrZXIoV0dQVVJlbmRlckJ1bmRsZUVuY29kZXIgcmVuZGVyQnVuZGxl
RW5jb2RlciwgY29uc3QgY2hhciogbWFya2VyTGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVu
ZGVyUGFzc0VuY29kZXIuaAppbmRleCA0NzkwNTM1OTUxMmJlYmMxNGZkYWY4MmIxMTQzYTY1NzNi
YThkMjUwLi5kNGE2MzExMDMzYWRiOTdmNzAyZWVlZjAzMmRjNjhjNzczZDliY2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLmgKQEAgLTMxLDYgKzMxLDkgQEAKICNp
bXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKK3N0cnVj
dCBXR1BVUmVuZGVyUGFzc0VuY29kZXJJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewog
CiBjbGFzcyBCaW5kR3JvdXA7CkBAIC0zOSw3ICs0Miw3IEBAIGNsYXNzIFF1ZXJ5U2V0OwogY2xh
c3MgUmVuZGVyQnVuZGxlOwogY2xhc3MgUmVuZGVyUGlwZWxpbmU7CiAKLWNsYXNzIFJlbmRlclBh
c3NFbmNvZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UmVuZGVyUGFzc0VuY29kZXI+LCBwdWJsaWMg
Q29tbWFuZHNNaXhpbiB7CitjbGFzcyBSZW5kZXJQYXNzRW5jb2RlciA6IHB1YmxpYyBXR1BVUmVu
ZGVyUGFzc0VuY29kZXJJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxSZW5kZXJQYXNzRW5jb2Rlcj4s
IHB1YmxpYyBDb21tYW5kc01peGluIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbmRlclBhc3NFbmNvZGVyPiBjcmVhdGUoaWQ8TVRMUmVu
ZGVyQ29tbWFuZEVuY29kZXI+IHJlbmRlckNvbW1hbmRFbmNvZGVyKQpAQCAtODMsOSArODYsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEgbWFyayBX
R1BVIFdyYXBwZXIKLQotc3RydWN0IFdHUFVSZW5kZXJQYXNzRW5jb2RlckltcGwgewotICAgIFJl
ZjxXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiByZW5kZXJQYXNzRW5jb2RlcjsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQYXNzRW5jb2Rlci5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1tCmluZGV4IDFhZWRjNDVhMjIzZjZl
MzQ5MmQxMTg5YjIzYWZmZThhMjM2NDVjNzIuLjc0ZjY4NTMwMDEyNTI2MTBlYTY5MjE4ZGI1ODEw
NjJlZTdhMzI0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NF
bmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBhc3NFbmNvZGVyLm1t
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBSZW5kZXJQYXNzRW5jb2Rlcjo6c2V0TGFiZWwoU3Ry
aW5nJiYgbGFiZWwpCiAKIHZvaWQgd2dwdVJlbmRlclBhc3NFbmNvZGVyUmVsZWFzZShXR1BVUmVu
ZGVyUGFzc0VuY29kZXIgcmVuZGVyUGFzc0VuY29kZXIpCiB7Ci0gICAgZGVsZXRlIHJlbmRlclBh
c3NFbmNvZGVyOworICAgIFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQYXNzRW5jb2RlcikuZGVyZWYo
KTsKIH0KIAogdm9pZCB3Z3B1UmVuZGVyUGFzc0VuY29kZXJCZWdpbk9jY2x1c2lvblF1ZXJ5KFdH
UFVSZW5kZXJQYXNzRW5jb2RlciByZW5kZXJQYXNzRW5jb2RlciwgdWludDMyX3QgcXVlcnlJbmRl
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVsaW5lLmggYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5oCmluZGV4IDIxMTVkNTdiYTBkMDVj
NTAxMDhlNDU2ZTI2MTgwYWI5YzBkMzA3YjUuLmUxZDJjMmUwZDkyZjk1NDhjNTgwMDc4MDU2ZmYy
NjlkMDYxZDYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1JlbmRlclBpcGVs
aW5lLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUuaApAQCAtMjks
MTEgKzI5LDE0IEBACiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRl
ZC5oPgogCitzdHJ1Y3QgV0dQVVJlbmRlclBpcGVsaW5lSW1wbCB7Cit9OworCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIAogY2xhc3MgQmluZEdyb3VwTGF5b3V0OwogCi1jbGFzcyBSZW5kZXJQaXBlbGlu
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlbmRlclBpcGVsaW5lPiB7CitjbGFzcyBSZW5kZXJQaXBl
bGluZSA6IHB1YmxpYyBXR1BVUmVuZGVyUGlwZWxpbmVJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxS
ZW5kZXJQaXBlbGluZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UmVuZGVyUGlwZWxpbmU+IGNyZWF0ZShpZDxNVExSZW5kZXJQaXBlbGlu
ZVN0YXRlPiByZW5kZXJQaXBlbGluZVN0YXRlKQpAQCAtNDMsNyArNDYsNyBAQCBwdWJsaWM6CiAK
ICAgICB+UmVuZGVyUGlwZWxpbmUoKTsKIAotICAgIFJlZjxCaW5kR3JvdXBMYXlvdXQ+IGdldEJp
bmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KTsKKyAgICBCaW5kR3JvdXBMYXlvdXQq
IGdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBncm91cEluZGV4KTsKICAgICB2b2lkIHNldExh
YmVsKFN0cmluZyYmKTsKIAogICAgIGlkPE1UTFJlbmRlclBpcGVsaW5lU3RhdGU+IHJlbmRlclBp
cGVsaW5lU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlclBpcGVsaW5lU3RhdGU7IH0KQEAg
LTU1LDkgKzU4LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQotCi0j
cHJhZ21hIG1hcmsgV0dQVSBXcmFwcGVyCi0KLXN0cnVjdCBXR1BVUmVuZGVyUGlwZWxpbmVJbXBs
IHsKLSAgICBSZWY8V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gcmVuZGVyUGlwZWxpbmU7Ci19Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUmVuZGVyUGlwZWxpbmUubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQppbmRleCBlZjNlYWIyYjM1OWUxZWU3
ZmY5MGUyMWI4OWU4Njc2YzlhODVjMThmLi5jN2NmOWYzNmU1ZGY3MzFlNTc1MzdjYTk4M2RiMGEw
NmYyNTBmZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGlu
ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9SZW5kZXJQaXBlbGluZS5tbQpAQCAtNTEs
MTAgKzUxLDEwIEBAIFJlbmRlclBpcGVsaW5lOjpSZW5kZXJQaXBlbGluZShpZDxNVExSZW5kZXJQ
aXBlbGluZVN0YXRlPiByZW5kZXJQaXBlbGluZVN0YXRlKQogCiBSZW5kZXJQaXBlbGluZTo6flJl
bmRlclBpcGVsaW5lKCkgPSBkZWZhdWx0OwogCi1SZWY8QmluZEdyb3VwTGF5b3V0PiBSZW5kZXJQ
aXBlbGluZTo6Z2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGdyb3VwSW5kZXgpCitCaW5kR3Jv
dXBMYXlvdXQqIFJlbmRlclBpcGVsaW5lOjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgZ3Jv
dXBJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0oZ3JvdXBJbmRleCk7Ci0gICAgcmV0dXJuIEJp
bmRHcm91cExheW91dDo6Y3JlYXRlKG5pbCwgbmlsLCBuaWwpOworICAgIHJldHVybiBudWxscHRy
OwogfQogCiB2b2lkIFJlbmRlclBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJikKQEAgLTY4LDEy
ICs2OCwxMiBAQCB2b2lkIFJlbmRlclBpcGVsaW5lOjpzZXRMYWJlbChTdHJpbmcmJikKIAogdm9p
ZCB3Z3B1UmVuZGVyUGlwZWxpbmVSZWxlYXNlKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBl
bGluZSkKIHsKLSAgICBkZWxldGUgcmVuZGVyUGlwZWxpbmU7CisgICAgV2ViR1BVOjpmcm9tQVBJ
KHJlbmRlclBpcGVsaW5lKS5kZXJlZigpOwogfQogCiBXR1BVQmluZEdyb3VwTGF5b3V0IHdncHVS
ZW5kZXJQaXBlbGluZUdldEJpbmRHcm91cExheW91dChXR1BVUmVuZGVyUGlwZWxpbmUgcmVuZGVy
UGlwZWxpbmUsIHVpbnQzMl90IGdyb3VwSW5kZXgpCiB7Ci0gICAgcmV0dXJuIG5ldyBXR1BVQmlu
ZEdyb3VwTGF5b3V0SW1wbCB7IFdlYkdQVTo6ZnJvbUFQSShyZW5kZXJQaXBlbGluZSkuZ2V0Qmlu
ZEdyb3VwTGF5b3V0KGdyb3VwSW5kZXgpIH07CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJvbUFQSShy
ZW5kZXJQaXBlbGluZSkuZ2V0QmluZEdyb3VwTGF5b3V0KGdyb3VwSW5kZXgpOwogfQogCiB2b2lk
IHdncHVSZW5kZXJQaXBlbGluZVNldExhYmVsKFdHUFVSZW5kZXJQaXBlbGluZSByZW5kZXJQaXBl
bGluZSwgY29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9TYW1wbGVyLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLmgKaW5kZXggYzZhODIx
NWZkOTQ5NDgxMjNiZTBiMDVmN2FmZmI5ZTdhZjJiMWNhZi4uYmVhNjA4ZDk5ZmI0OWVkNjA4M2M2
MGZmZWM4NTMwY2NlZTNmN2E0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2Ft
cGxlci5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIuaApAQCAtMjksMTEgKzI5
LDE0IEBACiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZC5oPgog
CitzdHJ1Y3QgV0dQVVNhbXBsZXJJbXBsIHsKK307CisKIG5hbWVzcGFjZSBXZWJHUFUgewogCiBj
bGFzcyBEZXZpY2U7CiAKLWNsYXNzIFNhbXBsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1wbGVy
PiB7CitjbGFzcyBTYW1wbGVyIDogcHVibGljIFdHUFVTYW1wbGVySW1wbCwgcHVibGljIFJlZkNv
dW50ZWQ8U2FtcGxlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U2FtcGxlcj4gY3JlYXRlKGlkPE1UTFNhbXBsZXJTdGF0ZT4gc2FtcGxl
clN0YXRlLCBjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIERldmljZSYg
ZGV2aWNlKQpAQCAtNjUsOSArNjgsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCi0KLSNwcmFnbWEgbWFyayBXR1BVIFdyYXBwZXIKLQotc3RydWN0IFdHUFVTYW1wbGVy
SW1wbCB7Ci0gICAgUmVmPFdlYkdQVTo6U2FtcGxlcj4gc2FtcGxlcjsKLX07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
U2FtcGxlci5tbQppbmRleCBmZWQ4ZTFhMzE0NzM0YmQ3NWVkMTM2YjMxODI4NDYyZGEzMDExNTE1
Li42ZTE3MDVkZTdkY2FiMTcwZTUyMDRiYjYxOGI5Mzk2NmViM2EzZDhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NhbXBsZXIubW0KQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFNhbXBsZXI6OnNldExhYmVsKFN0
cmluZyYmKQogCiB2b2lkIHdncHVTYW1wbGVyUmVsZWFzZShXR1BVU2FtcGxlciBzYW1wbGVyKQog
ewotICAgIGRlbGV0ZSBzYW1wbGVyOworICAgIFdlYkdQVTo6ZnJvbUFQSShzYW1wbGVyKS5kZXJl
ZigpOwogfQogCiB2b2lkIHdncHVTYW1wbGVyU2V0TGFiZWwoV0dQVVNhbXBsZXIgc2FtcGxlciwg
Y29uc3QgY2hhciogbGFiZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFk
ZXJNb2R1bGUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5oCmluZGV4IDNk
ODJjMDU4ZDY2YzQxOWE0ODJhOGJlNTlkYjU2N2JmNjk4MDUxYzIuLjlmM2JjNWU5NzEyZjFkOTdm
YjEzYWQ3ODg5N2FiYzJhZWFmODk3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1NoYWRlck1vZHVsZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5o
CkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitzdHJ1Y3QgV0dQVVNoYWRlck1vZHVsZUlt
cGwgeworfTsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNsYXNzIFBpcGVsaW5lTGF5b3V0Owog
Ci1jbGFzcyBTaGFkZXJNb2R1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkZXJNb2R1bGU+IHsK
K2NsYXNzIFNoYWRlck1vZHVsZSA6IHB1YmxpYyBXR1BVU2hhZGVyTW9kdWxlSW1wbCwgcHVibGlj
IFJlZkNvdW50ZWQ8U2hhZGVyTW9kdWxlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTaGFkZXJNb2R1bGU+IGNyZWF0ZShzdGQ6OnZhcmlh
bnQ8V0dTTDo6U3VjY2Vzc2Z1bENoZWNrLCBXR1NMOjpGYWlsZWRDaGVjaz4mJiBjaGVja1Jlc3Vs
dCwgSGFzaE1hcDxTdHJpbmcsIFJlZjxQaXBlbGluZUxheW91dD4+JiYgcGlwZWxpbmVMYXlvdXRI
aW50cywgSGFzaE1hcDxTdHJpbmcsIFdHU0w6OlJlZmxlY3Rpb246OkVudHJ5UG9pbnRJbmZvcm1h
dGlvbj4mJiBlbnRyeVBvaW50SW5mb3JtYXRpb24sIGlkPE1UTExpYnJhcnk+IGxpYnJhcnkpCkBA
IC02OCw5ICs3MSwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKLQot
I3ByYWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3QgV0dQVVNoYWRlck1vZHVsZUltcGwg
ewotICAgIFJlZjxXZWJHUFU6OlNoYWRlck1vZHVsZT4gc2hhZGVyTW9kdWxlOwotfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1NoYWRlck1vZHVsZS5tbQppbmRleCAzMDNmOTNlNWVhMGM0M2ExNGY0NTQwNTI4
MDUxNGJmNjQyZTI4Njg4Li5mYTRiYTUzM2Q0NDczM2Q4YmRiNzgyZGYwNjMyYjU3MjBlNjYyZjFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TaGFkZXJNb2R1bGUubW0KKysrIGIv
U291cmNlL1dlYkdQVS9XZWJHUFUvU2hhZGVyTW9kdWxlLm1tCkBAIC04OCw4ICs4OCw4IEBAIHN0
YXRpYyBSZWZQdHI8U2hhZGVyTW9kdWxlPiBlYXJseUNvbXBpbGVTaGFkZXJNb2R1bGUoaWQ8TVRM
RGV2aWNlPiBkZXZpY2UsIHN0ZDo6CiAgICAgICAgIGNvbnN0IGF1dG8mIGhpbnQgPSBzdXBwbGll
ZEhpbnRzLmhpbnRzW2ldOwogICAgICAgICBpZiAoaGludC5uZXh0SW5DaGFpbikKICAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgICAgICBoaW50cy5hZGQoaGludC5rZXksIGhpbnQuaGlu
dC5sYXlvdXQtPnBpcGVsaW5lTGF5b3V0KTsKLSAgICAgICAgYXV0byBjb252ZXJ0ZWRQaXBlbGlu
ZUxheW91dCA9IFNoYWRlck1vZHVsZTo6Y29udmVydFBpcGVsaW5lTGF5b3V0KGhpbnQuaGludC5s
YXlvdXQtPnBpcGVsaW5lTGF5b3V0KTsKKyAgICAgICAgaGludHMuYWRkKGhpbnQua2V5LCBXZWJH
UFU6OmZyb21BUEkoaGludC5oaW50LmxheW91dCkpOworICAgICAgICBhdXRvIGNvbnZlcnRlZFBp
cGVsaW5lTGF5b3V0ID0gU2hhZGVyTW9kdWxlOjpjb252ZXJ0UGlwZWxpbmVMYXlvdXQoV2ViR1BV
Ojpmcm9tQVBJKGhpbnQuaGludC5sYXlvdXQpKTsKICAgICAgICAgd2dzbEhpbnRzLmFkZChoaW50
LmtleSwgV1RGTW92ZShjb252ZXJ0ZWRQaXBlbGluZUxheW91dCkpOwogICAgIH0KICAgICBhdXRv
IHByZXBhcmVSZXN1bHQgPSBXR1NMOjpwcmVwYXJlKHN0ZDo6Z2V0PFdHU0w6OlN1Y2Nlc3NmdWxD
aGVjaz4oY2hlY2tSZXN1bHQpLmFzdCwgd2dzbEhpbnRzKTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBj
b25zdCBXR1NMOjpSZWZsZWN0aW9uOjpFbnRyeVBvaW50SW5mb3JtYXRpb24qIFNoYWRlck1vZHVs
ZTo6ZW50cnlQb2ludEluZm9ybWF0aQogCiB2b2lkIHdncHVTaGFkZXJNb2R1bGVSZWxlYXNlKFdH
UFVTaGFkZXJNb2R1bGUgc2hhZGVyTW9kdWxlKQogewotICAgIGRlbGV0ZSBzaGFkZXJNb2R1bGU7
CisgICAgV2ViR1BVOjpmcm9tQVBJKHNoYWRlck1vZHVsZSkuZGVyZWYoKTsKIH0KIAogdm9pZCB3
Z3B1U2hhZGVyTW9kdWxlR2V0Q29tcGlsYXRpb25JbmZvKFdHUFVTaGFkZXJNb2R1bGUgc2hhZGVy
TW9kdWxlLCBXR1BVQ29tcGlsYXRpb25JbmZvQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKiB1c2Vy
ZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaCBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1N1cmZhY2UuaAppbmRleCAxMTZiOTYxNGE3Nzc5MmFkMmFhYmRhMjY0
NjQ4YzAzMDhhYWFiNTkyLi4wZTc3YWFiYWJhZDRiNDQ3NzdhZTIxNDJhNTkzOTAxZjdmNGY4YTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TdXJmYWNlLmgKKysrIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5oCkBAIC0yOSwxMSArMjksMTQgQEAKICNpbXBvcnQgPHd0
Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAKK3N0cnVjdCBXR1BVU3VyZmFj
ZUltcGwgeworfTsKKwogbmFtZXNwYWNlIFdlYkdQVSB7CiAKIGNsYXNzIEFkYXB0ZXI7CiAKLWNs
YXNzIFN1cmZhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxTdXJmYWNlPiB7CitjbGFzcyBTdXJmYWNl
IDogcHVibGljIFdHUFVTdXJmYWNlSW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8U3VyZmFjZT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3Vy
ZmFjZT4gY3JlYXRlKCkKQEAgLTUwLDkgKzUzLDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkdQVQotCi0jcHJhZ21hIG1hcmsgV0dQVSBXcmFwcGVyCi0KLXN0cnVjdCBXR1BV
U3VyZmFjZUltcGwgewotICAgIFJlZjxXZWJHUFU6OlN1cmZhY2U+IHN1cmZhY2U7Ci19OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1N1cmZhY2UubW0KaW5kZXggNGJhZjMxMWExMTRlYjliMTNmYWY0MjA0NDE5MDYxNWYz
NWI3N2IyMi4uNTVjN2I4MDhhMDk4Mzc5MzYxYmEyNTRmZGI3MDMyOTNmNmQ4OTZhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9TdXJmYWNlLm1tCkBAIC00Nyw3ICs0Nyw3IEBAIFdHUFVUZXh0dXJlRm9ybWF0IFN1
cmZhY2U6OmdldFByZWZlcnJlZEZvcm1hdChjb25zdCBBZGFwdGVyJiBhZGFwdGVyKQogCiB2b2lk
IHdncHVTdXJmYWNlUmVsZWFzZShXR1BVU3VyZmFjZSBzdXJmYWNlKQogewotICAgIGRlbGV0ZSBz
dXJmYWNlOworICAgIFdlYkdQVTo6ZnJvbUFQSShzdXJmYWNlKS5kZXJlZigpOwogfQogCiBXR1BV
VGV4dHVyZUZvcm1hdCB3Z3B1U3VyZmFjZUdldFByZWZlcnJlZEZvcm1hdChXR1BVU3VyZmFjZSBz
dXJmYWNlLCBXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvU3dhcENoYWluLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4uaAppbmRl
eCAwNTJkM2U2MTdhMTEwNzFhZGEwNGQ0MzlkMThhOTk4YTNiYjM4NmVmLi4wMjRiNTcyZmZkYzc0
NjZjNWQwZWU5MWEyNGJiNGJkMWJhN2JkZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Td2FwQ2hhaW4uaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4uaApA
QCAtMjksMTEgKzI5LDE0IEBACiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmVm
Q291bnRlZC5oPgogCitzdHJ1Y3QgV0dQVVN3YXBDaGFpbkltcGwgeworfTsKKwogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKIGNsYXNzIFRleHR1cmVWaWV3OwogCi1jbGFzcyBTd2FwQ2hhaW4gOiBwdWJs
aWMgUmVmQ291bnRlZDxTd2FwQ2hhaW4+IHsKK2NsYXNzIFN3YXBDaGFpbiA6IHB1YmxpYyBXR1BV
U3dhcENoYWluSW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8U3dhcENoYWluPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTd2FwQ2hhaW4+IGNy
ZWF0ZSgpCkBAIC00Myw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIH5Td2FwQ2hhaW4oKTsKIAot
ICAgIFJlZjxUZXh0dXJlVmlldz4gZ2V0Q3VycmVudFRleHR1cmVWaWV3KCk7CisgICAgVGV4dHVy
ZVZpZXcqIGdldEN1cnJlbnRUZXh0dXJlVmlldygpOwogICAgIHZvaWQgcHJlc2VudCgpOwogCiBw
cml2YXRlOgpAQCAtNTEsOSArNTQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViR1BVCi0KLSNwcmFnbWEgbWFyayBXR1BVIFdyYXBwZXIKLQotc3RydWN0IFdHUFVTd2FwQ2hh
aW5JbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpTd2FwQ2hhaW4+IHN3YXBDaGFpbjsKLX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Td2FwQ2hhaW4ubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Td2FwQ2hhaW4ubW0KaW5kZXggOTdjY2UyMjE2OWExOTJiOWI2MjA5NzAyOWVjMjc4
ZjQzYTdjZjE4Mi4uODExYTlhNThiYzczMGRjMjNhZTAxYThjMDMwNDIxYWM0ZTY3ZDA4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU3dhcENoYWluLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1N3YXBDaGFpbi5tbQpAQCAtNDMsOSArNDMsOSBAQCBTd2FwQ2hhaW46OlN3
YXBDaGFpbigpID0gZGVmYXVsdDsKIAogU3dhcENoYWluOjp+U3dhcENoYWluKCkgPSBkZWZhdWx0
OwogCi1SZWY8VGV4dHVyZVZpZXc+IFN3YXBDaGFpbjo6Z2V0Q3VycmVudFRleHR1cmVWaWV3KCkK
K1RleHR1cmVWaWV3KiBTd2FwQ2hhaW46OmdldEN1cnJlbnRUZXh0dXJlVmlldygpCiB7Ci0gICAg
cmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGUobmlsKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogdm9pZCBTd2FwQ2hhaW46OnByZXNlbnQoKQpAQCAtNTgsMTIgKzU4LDEyIEBAIHZvaWQgU3dh
cENoYWluOjpwcmVzZW50KCkKIAogdm9pZCB3Z3B1U3dhcENoYWluUmVsZWFzZShXR1BVU3dhcENo
YWluIHN3YXBDaGFpbikKIHsKLSAgICBkZWxldGUgc3dhcENoYWluOworICAgIFdlYkdQVTo6ZnJv
bUFQSShzd2FwQ2hhaW4pLmRlcmVmKCk7CiB9CiAKIFdHUFVUZXh0dXJlVmlldyB3Z3B1U3dhcENo
YWluR2V0Q3VycmVudFRleHR1cmVWaWV3KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQogewotICAg
IHJldHVybiBuZXcgV0dQVVRleHR1cmVWaWV3SW1wbCB7IFdlYkdQVTo6ZnJvbUFQSShzd2FwQ2hh
aW4pLmdldEN1cnJlbnRUZXh0dXJlVmlldygpIH07CisgICAgcmV0dXJuIFdlYkdQVTo6ZnJvbUFQ
SShzd2FwQ2hhaW4pLmdldEN1cnJlbnRUZXh0dXJlVmlldygpOwogfQogCiB2b2lkIHdncHVTd2Fw
Q2hhaW5QcmVzZW50KFdHUFVTd2FwQ2hhaW4gc3dhcENoYWluKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5o
CmluZGV4IDUwYzE0MGVmYzI1NTkxMDMwMDhhZGIyYjQ2ZTFhZWZkNWE2YzA3Y2IuLjk1OWEwZDRk
YzE1ZDJlOTY3ZDc0NDJjN2IzYTk1MTIxZGU2MjViYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgK
QEAgLTMwLDExICszMCwxNCBAQAogI2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbXBvcnQg
PHd0Zi9SZWZQdHIuaD4KIAorc3RydWN0IFdHUFVUZXh0dXJlSW1wbCB7Cit9OworCiBuYW1lc3Bh
Y2UgV2ViR1BVIHsKIAogY2xhc3MgVGV4dHVyZVZpZXc7CiAKLWNsYXNzIFRleHR1cmUgOiBwdWJs
aWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7CitjbGFzcyBUZXh0dXJlIDogcHVibGljIFdHUFVUZXh0
dXJlSW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKGlkPE1U
TFRleHR1cmU+IHRleHR1cmUpCkBAIC01Nyw5ICs2MCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJHUFUKLQotI3ByYWdtYSBtYXJrIFdHUFUgV3JhcHBlcgotCi1zdHJ1Y3Qg
V0dQVVRleHR1cmVJbXBsIHsKLSAgICBSZWY8V2ViR1BVOjpUZXh0dXJlPiB0ZXh0dXJlOwotfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IDY5ZTRmMmJmYjdiMDQ4YjQ4Yjc0OWEzZWFkMGYx
OTRkODE3ZWRmMWUuLjIzZWE0MjM0N2NkMzY2ODNiZDBmOGQyZjhlZTU1YmQzNTgxYzRlMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAtNjYsMTMgKzY2LDEyIEBAIHZvaWQgVGV4dHVyZTo6
c2V0TGFiZWwoU3RyaW5nJiYgbGFiZWwpCiAKIHZvaWQgd2dwdVRleHR1cmVSZWxlYXNlKFdHUFVU
ZXh0dXJlIHRleHR1cmUpCiB7Ci0gICAgZGVsZXRlIHRleHR1cmU7CisgICAgV2ViR1BVOjpmcm9t
QVBJKHRleHR1cmUpLmRlcmVmKCk7CiB9CiAKIFdHUFVUZXh0dXJlVmlldyB3Z3B1VGV4dHVyZUNy
ZWF0ZVZpZXcoV0dQVVRleHR1cmUgdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciogZGVzY3JpcHRvcikKIHsKLSAgICBhdXRvIHJlc3VsdCA9IFdlYkdQVTo6ZnJvbUFQSSh0
ZXh0dXJlKS5jcmVhdGVWaWV3KCpkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gcmVzdWx0ID8gbmV3
IFdHUFVUZXh0dXJlVmlld0ltcGwgeyByZXN1bHQucmVsZWFzZU5vbk51bGwoKSB9IDogbnVsbHB0
cjsKKyAgICByZXR1cm4gV2ViR1BVOjpyZWxlYXNlVG9BUEkoV2ViR1BVOjpmcm9tQVBJKHRleHR1
cmUpLmNyZWF0ZVZpZXcoKmRlc2NyaXB0b3IpKTsKIH0KIAogdm9pZCB3Z3B1VGV4dHVyZURlc3Ry
b3koV0dQVVRleHR1cmUgdGV4dHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1RleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCmluZGV4
IDA0ODVmYzdjMDg5ZjU3NmI5MmE0MzMwNmJiODdjMzRiYTMyNWE4OTguLjcxMTI0MThhOGM5ZDdj
MzVhZDQ2NzA2MTE1YzcxZTliMThkZjJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcu
aApAQCAtMjksOSArMjksMTIgQEAKICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKK3N0cnVjdCBXR1BVVGV4dHVyZVZpZXdJbXBsIHsKK307CisKIG5hbWVz
cGFjZSBXZWJHUFUgewogCi1jbGFzcyBUZXh0dXJlVmlldyA6IHB1YmxpYyBSZWZDb3VudGVkPFRl
eHR1cmVWaWV3PiB7CitjbGFzcyBUZXh0dXJlVmlldyA6IHB1YmxpYyBXR1BVVGV4dHVyZVZpZXdJ
bXBsLCBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlVmlldz4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlKQpAQCAtNTIsOSArNTUsMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViR1BVCi0KLSNwcmFnbWEgbWFyayBXR1BVIFdyYXBwZXIKLQotc3Ry
dWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgewotICAgIFJlZjxXZWJHUFU6OlRleHR1cmVWaWV3PiB0
ZXh0dXJlVmlldzsKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
Vmlldy5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCmluZGV4IGUzZDdm
N2VkYmUwMDgxYjE0ODFmNGNhNGFlYzg0ODg2M2NmYTUyMjAuLmFhN2RjZWQxYmUzNmVlYzc1ZjY5
OTBkNjc2MTVjNjVjZDBjYWI1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCkBA
IC00OCw3ICs0OCw3IEBAIHZvaWQgVGV4dHVyZVZpZXc6OnNldExhYmVsKFN0cmluZyYmIGxhYmVs
KQogCiB2b2lkIHdncHVUZXh0dXJlVmlld1JlbGVhc2UoV0dQVVRleHR1cmVWaWV3IHRleHR1cmVW
aWV3KQogewotICAgIFVOVVNFRF9QQVJBTSh0ZXh0dXJlVmlldyk7CisgICAgV2ViR1BVOjpmcm9t
QVBJKHRleHR1cmVWaWV3KS5kZXJlZigpOwogfQogCiB2b2lkIHdncHVUZXh0dXJlVmlld1NldExh
YmVsKFdHUFVUZXh0dXJlVmlldyB0ZXh0dXJlVmlldywgY29uc3QgY2hhciogbGFiZWwpCg==
</data>
<flag name="commit-queue"
          id="483416"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>