<?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>233396</bug_id>
          
          <creation_ts>2021-11-20 04:00:34 -0800</creation_ts>
          <short_desc>[WebGPU] Send WebGPU messages in the web process</short_desc>
          <delta_ts>2021-11-20 16:05:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817109</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 04:00:34 -0800</bug_when>
    <thetext>[WebGPU] Send WebGPU messages in the web process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817110</commentid>
    <comment_count>1</comment_count>
      <attachid>444894</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 04:04:01 -0800</bug_when>
    <thetext>Created attachment 444894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817138</commentid>
    <comment_count>2</comment_count>
      <attachid>444905</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 13:10:47 -0800</bug_when>
    <thetext>Created attachment 444905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817139</commentid>
    <comment_count>3</comment_count>
      <attachid>444906</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 13:14:33 -0800</bug_when>
    <thetext>Created attachment 444906
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817140</commentid>
    <comment_count>4</comment_count>
      <attachid>444905</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-20 13:19:14 -0800</bug_when>
    <thetext>Comment on attachment 444905
Patch

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

&gt; Source/WebKit/Shared/WebGPU/WebGPUBindGroupEntry.cpp:44
&gt; +    /*
&gt; +    PAL::WebGPU::Index32 binding;
&gt; +    BufferBinding bufferBinding;
&gt; +    WebGPUIdentifier identifier;
&gt; +    BindingResourceType type;
&gt; +    */

Did you mean to leave this here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817141</commentid>
    <comment_count>5</comment_count>
      <attachid>444906</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-20 13:41:56 -0800</bug_when>
    <thetext>Comment on attachment 444906
Patch

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

&gt; Source/WebKit/Shared/WebGPU/WebGPURenderPassDescriptor.cpp:58
&gt; +    auto depthStencilAttachment = ([&amp;] () -&gt; std::optional&lt;RenderPassDepthStencilAttachment&gt; {
&gt; +        if (renderPassDescriptor.depthStencilAttachment)
&gt; +            return convertToBacking(*renderPassDescriptor.depthStencilAttachment);
&gt; +        return std::nullopt;
&gt; +    })();
&gt; +    if (renderPassDescriptor.depthStencilAttachment &amp;&amp; !depthStencilAttachment)
&gt; +        return std::nullopt;

Isn&apos;t it less lines to simply do:

std::optional&lt;RenderPassDepthStencilAttachment&gt; depthStencilAttachment;
if (renderPassDescriptor.depthStencilAttachment) {
  depthStencilAttachment = convertToBacking(*renderPassDescriptor.depthStencilAttachment);
  if (!depthStencilAttachment)
     return std::nullopt;
}

&gt; Source/WebKit/Shared/WebGPU/WebGPURenderPipelineDescriptor.cpp:74
&gt; +    auto fragment = ([&amp;] () -&gt; std::optional&lt;FragmentState&gt; {
&gt; +        if (renderPipelineDescriptor.fragment)
&gt; +            return convertToBacking(*renderPipelineDescriptor.fragment);
&gt; +        return std::nullopt;
&gt; +    })();
&gt; +    if (renderPipelineDescriptor.fragment &amp;&amp; !fragment)
&gt; +        return std::nullopt;

Another one here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817142</commentid>
    <comment_count>6</comment_count>
      <attachid>444906</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 13:45:31 -0800</bug_when>
    <thetext>Comment on attachment 444906
Patch

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

&gt;&gt; Source/WebKit/Shared/WebGPU/WebGPURenderPassDescriptor.cpp:58
&gt;&gt; +        return std::nullopt;
&gt; 
&gt; Isn&apos;t it less lines to simply do:
&gt; 
&gt; std::optional&lt;RenderPassDepthStencilAttachment&gt; depthStencilAttachment;
&gt; if (renderPassDescriptor.depthStencilAttachment) {
&gt;   depthStencilAttachment = convertToBacking(*renderPassDescriptor.depthStencilAttachment);
&gt;   if (!depthStencilAttachment)
&gt;      return std::nullopt;
&gt; }

yessssss will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817143</commentid>
    <comment_count>7</comment_count>
      <attachid>444907</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-11-20 13:56:59 -0800</bug_when>
    <thetext>Created attachment 444907
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817155</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-20 16:04:02 -0800</bug_when>
    <thetext>Committed r286098 (244485@main): &lt;https://commits.webkit.org/244485@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444907.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817156</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-20 16:05:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85638093&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444894</attachid>
            <date>2021-11-20 04:04:01 -0800</date>
            <delta_ts>2021-11-20 13:10:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233396-20211120040400.patch</filename>
            <type>text/plain</type>
            <size>278586</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUwNTJmYmZhYmY1OTYwZDdi
MDIyNDk5NWI0ZDBjZGIzZWE1ZmY2NjQuLmU2NzFlMTIyYjg4OTQ5MDllYjI1MWMzMmEyYzU2ZmQy
NmZhY2FjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMyIEBACisyMDIxLTExLTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU2Vu
ZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBp
cyBubyBiZWhhdmlvciBjaGFuZ2UgeWV0LiBUaGlzIGlzIHRoZSBsYXN0IHVudGVzdGVkIGZvdW5k
YXRpb25hbAorICAgICAgICBwYXRjaCBpbiB0aGUgc2VyaWVzLiBBbGwgc3Vic2VxdWVudCBXZWJH
UFUgcGF0Y2hlcyBzaG91bGQgaGF2ZSB0ZXN0cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6
cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUdQVS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cEVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQ
VS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJp
bmRpbmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1
ZmZlckJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyRGVzY3Jp
cHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29t
bWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3Rh
bXBXcml0ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNj
cmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVF
cnJvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVRXh0
ZW50M0QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4
dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdl
Q29weVRleHR1cmVUYWdnZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
R1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxp
bmVEZXNjcmlwdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdy
aXRlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVk
TGltaXRzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6Cisg
ICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlw
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxp
ZGF0aW9uRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dl
YkdQVVZlcnRleEF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9X
ZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNz
Y2hlbWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFk
YXB0ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQWRhcHRlclBy
b3h5OjpSZW1vdGVBZGFwdGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUFkYXB0ZXJQcm94eTo6cmVxdWVzdERldmljZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OlJlbW90
ZUJpbmRHcm91cExheW91dFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVC
aW5kR3JvdXBMYXlvdXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5kR3JvdXBQcm94eTo6
UmVtb3RlQmluZEdyb3VwUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJp
bmRHcm91cFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZmZXJQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6Om1hcEFzeW5jKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFwcGVkUmFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmRlc3Ryb3kpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVy
bmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVy
bmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
bWFuZEJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmJl
Z2luUmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eTo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9U
ZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cHVzaERl
YnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojp3cml0ZVRpbWVzdGFtcCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cmVzb2x2ZVF1
ZXJ5U2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3Bh
dGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6ZGlzcGF0Y2hJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpl
bmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpwdXNo
RGVidWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVs
SW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OlJlbW90ZUNvbXB1dGVQ
aXBlbGluZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGlw
ZWxpbmVQcm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURl
dmljZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94
eTo6UmVtb3RlRGV2aWNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZURldmljZVByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJpbmRHcm91cExheW91dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVBpcGVs
aW5lTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6
Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQ
cm94eTo6Y3JlYXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxp
bmVBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNy
ZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZURldmljZVByb3h5OjpjcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVRdWVyeVNldCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnB1c2hFcnJvclNj
b3BlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6cG9wRXJy
b3JTY29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnNl
dExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OlJlbW90ZUV4dGVybmFsVGV4dHVy
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQ
cm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHk6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXJ5U2V0
UHJveHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZVF1ZXJ5U2V0UHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZVF1ZXJ5U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5Lmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OnN1Ym1pdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6b25TdWJtaXR0ZWRXb3Jr
RG9uZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6d3JpdGVC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OndyaXRl
VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6Y29w
eUV4dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVF1ZXVlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0SW5k
ZXhCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eTo6c2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJh
d0luZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnB1c2hE
ZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZmluaXNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZVByb3h5OjpSZW1vdGVS
ZW5kZXJCdW5kbGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVy
QnVuZGxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0SW5kZXhC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHk6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRpcmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
ZHJhd0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6cG9wRGVi
dWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTY2lzc29yUmVjdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
c2V0QmxlbmRDb25zdGFudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6YmVnaW5PY2NsdXNpb25RdWVy
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eTo6ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kUGFzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0TGFiZWxJ
bnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNhbXBsZXJQcm94eTo6UmVt
b3RlU2FtcGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVTYW1wbGVy
UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpSZW1vdGVTaGFkZXJNb2R1
bGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHk6OmNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hh
ZGVyTW9kdWxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVy
ZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OmNy
ZWF0ZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlVGV4dHVyZVByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OlJlbW90ZVRleHR1cmVWaWV3UHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OnNldExhYmVs
SW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVUZXh0dXJlVmlld1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OkRvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisKIDIwMjEtMTEtMjAgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlcG9y
dCB0aGUgaW5pdGlhdGluZyB1cmwgaW5zdGVhZCBvZiB0aGUgcmVkaXJlY3RlZCBvbmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BV
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BV
LmNwcAppbmRleCAzODJmOGUzNmRmZjNjODg4MDc5YTZkNGJmYmVmMjUzNGNhMmM1YWZhLi5kNzJl
ZWU5YTg1NzQ2MGZiN2E1YmQ3MTU5MjI0OTljOWU0YjJjODkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCkBAIC01
MCwxMiArNTAsMTIgQEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKICAgICBtX29iamVjdFJlZ2lz
dHJ5LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUdQVTo6cmVx
dWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMs
IFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVk
TGltaXRzJiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNv
bnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBib29s
KT4mJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdFJl
Z2lzdHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVk
T3B0aW9ucyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0gICAgICAgIGNhbGxiYWNr
KFN0cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSk7CisgICAgICAgIGNhbGxiYWNrKFN0
cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViCiAgICAg
ICAgICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCiAgICAgICAgICAgICBs
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKLSAgICAgICAgfSk7CisgICAgICAgIH0s
IGFkYXB0ZXItPmlzRmFsbGJhY2tBZGFwdGVyKCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRl
eCBmMDllOTI1MDQyYjFmMjg3N2RkN2ZhODQyMDk4YWZmOTgxYzVhYjU3Li43NTg1NTQzMzQ1NjBj
MTIzYzNlMWZmYjlhODQxOTc4NGViYWZkMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTY3LDcgKzY3LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1T
ZXJ2ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCBy
ZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdlYkdQ
VUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BV
OjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJik7Cisg
ICAgdm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9u
cyYsIFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcm
JiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYm
LCBib29sKT4mJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nOwogICAg
IFdlYkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BV
Lm1lc3NhZ2VzLmluCmluZGV4IDQ3MDkxMGI5MjM1ZjQxMTUzYTYwZTY0MGM4NzM4NDE0ZDMyYzM5
ZGYuLmU0ZDk1MjY1YWE1ZDAwMzg5NGFjODA2MjkxNDAwMGEyNGNiNTNlMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHUFUgTm90UmVmQ291bnRlZCBTdHJlYW0gewotICAg
IHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9u
cyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKFN0cmlu
ZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVy
ZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzKSBTeW5j
aHJvbm91cworICAgIHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikgLT4gKFN0cmluZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3Vw
cG9ydGVkRmVhdHVyZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVk
TGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3Jv
dXBEZXNjcmlwdG9yLmNwcAppbmRleCBlMjY2YmQxYjczNzliMDRkNTJkYjBjZDFiOTQwNjliZTFh
OTRmZWU5Li5jMmVhYzIyNjMxZmE4Y2EwOTQ0ZTk1ZGNlM2NlYWIyZjcxNGVjMmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERl
c2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBEZXNjcmlwdG9yPiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwRGVzY3JpcHRvciYgYmluZEdyb3VwRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2Ug
PSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3RE
ZXNjcmlwdG9yQmFzZSY+KGJpbmRHcm91cERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252
ZXJ0VG9CYWNraW5nKGJpbmRHcm91cERlc2NyaXB0b3IubGF5b3V0KTsKKyAgICBpZiAoIWlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8QmluZEdy
b3VwRW50cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJp
bmRHcm91cERlc2NyaXB0b3IuZW50cmllcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYg
ZW50cnkgOiBiaW5kR3JvdXBEZXNjcmlwdG9yLmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252
ZXJ0ZWRFbnRyeSA9IGNvbnZlcnRUb0JhY2tpbmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZl
cnRlZEVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50
cmllcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGVudHJp
ZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3Jp
cHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0
IEJpbmRHcm91cERlc2NyaXB0b3ImIGJpbmRHcm91cERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBi
YXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0
b3JCYXNlJj4oYmluZEdyb3VwRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5jcHAKaW5kZXggZDgzMmRkMDU3YjU1
OGE5YjkwMThkMDc2Yzc5MjM0ODYyMjg5N2M0ZC4uMzI1OGNlZDI4OGMxNGIzNjE0ZDFiMmE4OGY5
ODQ5ZDk5NDM3NGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cEVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQmluZEdyb3VwRW50cnkuY3BwCkBAIC0yOSwxMCArMjksNDYgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXBFbnRyeSYgYmluZEdyb3VwRW50cnkpCit7CisgICAgLyoKKyAgICBQQUw6OldlYkdQ
VTo6SW5kZXgzMiBiaW5kaW5nOworICAgIEJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZzsKKyAg
ICBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgQmluZGluZ1Jlc291cmNlVHlwZSB0
eXBlOworICAgICovCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYmluZEdyb3VwRW50cnkucmVz
b3VyY2UsIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4g
c2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRv
IGlkZW50aWZpZXIgPSBjb252ZXJ0VG9CYWNraW5nKHNhbXBsZXIpOworICAgICAgICBpZiAoIWlk
ZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJl
dHVybiB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgeyB9LCBpZGVudGlmaWVyLCBCaW5kaW5n
UmVzb3VyY2VUeXBlOjpTYW1wbGVyIH0gfTsKKyAgICB9LCBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dy
YXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiB0ZXh0dXJlVmlldykgLT4gc3RkOjpvcHRp
b25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252ZXJ0
VG9CYWNraW5nKHRleHR1cmVWaWV3KTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IGJpbmRHcm91
cEVudHJ5LmJpbmRpbmcsIHsgfSwgaWRlbnRpZmllciwgQmluZGluZ1Jlc291cmNlVHlwZTo6VGV4
dHVyZVZpZXcgfSB9OworICAgIH0sIFsmXSAoY29uc3QgYXV0byYgYnVmZmVyQmluZGluZykgLT4g
c3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlckJpbmRpbmcgPSBjb252ZXJ0VG9CYWNraW5nKGJ1ZmZlckJpbmRpbmcpOworICAgICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgV1RGTW92
ZSgqY29udmVydGVkQnVmZmVyQmluZGluZyksIHsgfSwgQmluZGluZ1Jlc291cmNlVHlwZTo6VGV4
dHVyZVZpZXcgfSB9OworICAgIH0sIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBleHRlcm5hbFRleHR1cmUpIC0+IHN0ZDo6b3B0aW9uYWw8
QmluZEdyb3VwRW50cnk+IHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29udmVydFRvQmFj
a2luZyhleHRlcm5hbFRleHR1cmUpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3Vw
RW50cnkuYmluZGluZywgeyB9LCBpZGVudGlmaWVyLCBCaW5kaW5nUmVzb3VyY2VUeXBlOjpFeHRl
cm5hbFRleHR1cmUgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXBFbnRyeT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21C
YWNraW5nKGNvbnN0IEJpbmRHcm91cEVudHJ5JiBiaW5kR3JvdXBFbnRyeSkKIHsKICAgICBzd2l0
Y2ggKGJpbmRHcm91cEVudHJ5LnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcApp
bmRleCA5MDY0ODRlOWQyYzBjYjNkZWQ0MmZhMmQwZjFlZjhlOTU4MDIyOTQ3Li44MWNkOWE4YzRl
NTYwMGIxMzdlOTM4NzRhNzAzNzJhZGI2MmIwMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0
b3IuY3BwCkBAIC0yOSwxMCArMjksMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcikK
K3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBB
TDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGJpbmRHcm91cExheW91dERlc2NyaXB0
b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBWZWN0b3I8QmluZEdyb3VwTGF5b3V0RW50cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuZW50cmllcy5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRFbnRyeSA9IGNvbnZlcnRUb0Jh
Y2tpbmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZlcnRlZEVudHJ5KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoV1RG
TW92ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
KmJhc2UpLCBXVEZNb3ZlKGVudHJpZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGJp
bmRHcm91cExheW91dERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21C
YWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHAKaW5kZXggODc1NzEyNjEzMTll
NTc3ZDdmOTMxMDFlZDhiMGUxYzMzOWJiNzZmYy4uODQ2YzllNTI0YmM1ZDgyZGMyMzlkODZiYjkx
M2UzOGU3YzgzZDBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuY3BwCkBAIC0yOSwxMCArMjksNTEgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVu
dHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Qmlu
ZEdyb3VwTGF5b3V0RW50cnk+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRFbnRyeSYgYmluZEdyb3VwTGF5
b3V0RW50cnkpCit7CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJCaW5kaW5nTGF5b3V0PiBidWZm
ZXI7CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LmJ1ZmZlcikgeworICAgICAgICBidWZm
ZXIgPSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlvdXRFbnRyeS5idWZmZXIpOworICAg
ICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorCisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gc2FtcGxlcjsKKyAg
ICBpZiAoYmluZEdyb3VwTGF5b3V0RW50cnkuc2FtcGxlcikgeworICAgICAgICBzYW1wbGVyID0g
Y29udmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnkuc2FtcGxlcik7CisgICAgICAg
IGlmICghc2FtcGxlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlQmluZGluZ0xheW91dD4gdGV4dHVyZTsKKyAgICBp
ZiAoYmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSkgeworICAgICAgICB0ZXh0dXJlID0gY29u
dmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSk7CisgICAgICAgIGlm
ICghdGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IHN0b3JhZ2VUZXh0
dXJlOworICAgIGlmIChiaW5kR3JvdXBMYXlvdXRFbnRyeS5zdG9yYWdlVGV4dHVyZSkgeworICAg
ICAgICBzdG9yYWdlVGV4dHVyZSA9IGNvbnZlcnRUb0JhY2tpbmcoKmJpbmRHcm91cExheW91dEVu
dHJ5LnN0b3JhZ2VUZXh0dXJlKTsKKyAgICAgICAgaWYgKCFzdG9yYWdlVGV4dHVyZSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxF
eHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0PiBleHRlcm5hbFRleHR1cmU7CisgICAgaWYgKGJp
bmRHcm91cExheW91dEVudHJ5LmV4dGVybmFsVGV4dHVyZSkgeworICAgICAgICBleHRlcm5hbFRl
eHR1cmUgPSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlvdXRFbnRyeS5leHRlcm5hbFRl
eHR1cmUpOworICAgICAgICBpZiAoIWV4dGVybmFsVGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBiaW5kR3JvdXBMYXlvdXRF
bnRyeS5iaW5kaW5nLCBiaW5kR3JvdXBMYXlvdXRFbnRyeS52aXNpYmlsaXR5LCBXVEZNb3ZlKGJ1
ZmZlciksIFdURk1vdmUoc2FtcGxlciksIFdURk1vdmUodGV4dHVyZSksIFdURk1vdmUoc3RvcmFn
ZVRleHR1cmUpLCBXVEZNb3ZlKGV4dGVybmFsVGV4dHVyZSkgfSB9OworfQorCiBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRFbnRyeT4gQ29udmVydEZyb21CYWNraW5n
Q29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cExheW91dEVudHJ5JiBi
aW5kR3JvdXBMYXlvdXRFbnRyeSkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpC
dWZmZXJCaW5kaW5nTGF5b3V0PiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcAppbmRleCBjZTc2YjBiZmQwZTRmZTJj
MzYxYjUyMDVkYTgwZmU5ZmE3YmEzNTZmLi4xNDA4MzFkODM1YmY1ZmJjMzlkMzdlZTA0MDU2YmI0
Nzc1MWE4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
QmxlbmRDb21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVCbGVuZENvbXBvbmVudC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCbGVuZENvbXBvbmVudD4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJsZW5k
Q29tcG9uZW50JiBibGVuZENvbXBvbmVudCkKK3sKKyAgICByZXR1cm4geyB7IGJsZW5kQ29tcG9u
ZW50Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3JjRmFjdG9yLCBibGVuZENvbXBvbmVudC5k
c3RGYWN0b3IgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCbGVuZENvbXBv
bmVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0
IEJsZW5kQ29tcG9uZW50JiBibGVuZENvbXBvbmVudCkKIHsKICAgICByZXR1cm4geyB7IGJsZW5k
Q29tcG9uZW50Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3JjRmFjdG9yLCBibGVuZENvbXBv
bmVudC5kc3RGYWN0b3IgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUJsZW5kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUJsZW5kU3RhdGUuY3BwCmluZGV4IGJiNGQyZTc5YTQ4ZTI4N2E2ODc0MmUyMzE5MGFkNzZh
NjcyMzkxN2MuLjlmZWExNzczNjc3M2ZlMmUwYmE0ZmRkODk1YTlhYTgxYjI3YTNjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0ZS5jcHAKQEAg
LTI5LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
QmxlbmRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlv
bmFsPEJsZW5kU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpCbGVuZFN0YXRlJiBibGVuZFN0YXRlKQoreworICAgIGF1dG8g
Y29sb3IgPSBjb252ZXJ0VG9CYWNraW5nKGJsZW5kU3RhdGUuY29sb3IpOworICAgIGlmICghY29s
b3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGFscGhhID0gY29u
dmVydFRvQmFja2luZyhibGVuZFN0YXRlLmFscGhhKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpjb2xvciks
IFdURk1vdmUoKmFscGhhKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJs
ZW5kU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBCbGVuZFN0YXRlJiBibGVuZFN0YXRlKQogewogICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0
RnJvbUJhY2tpbmcoYmxlbmRTdGF0ZS5jb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKaW5kZXggZWZiYzlkOTRhOGJiZTEz
ODEyN2E2ZWM2ZTU5ZDUzYWE3ZGEwNWFmZC4uMzE4NmU1ZWFmOTE2YWQ0ZWRiZTBmZTdlMzAzZWVi
ZDk5YTdjNTNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJ1ZmZlckJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVCdWZmZXJCaW5kaW5nLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZz4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckJp
bmRpbmcmIGJ1ZmZlckJpbmRpbmcpCit7CisgICAgYXV0byBidWZmZXIgPSBjb252ZXJ0VG9CYWNr
aW5nKGJ1ZmZlckJpbmRpbmcuYnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgYnVmZmVyLCBidWZmZXJCaW5kaW5n
Lm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6QnVmZmVyQmluZGluZz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IEJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRpbmcpCiB7CiAgICAg
YXV0byogYnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlckJpbmRpbmcuYnVm
ZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZm
ZXJCaW5kaW5nTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVC
dWZmZXJCaW5kaW5nTGF5b3V0LmNwcAppbmRleCA4NjhjMzQ3YTZhOTk0MTAxNmY4MTVjNjgwNjZi
YTkwZjQ4YWFlM2ZiLi42NDY5ODZhNzc5NWRhNjFhMDk3NDc4NDFlYTIyMmVmOGExYjc1MzA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGlu
Z0xheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZl
ckJpbmRpbmdMYXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCdWZmZXJCaW5kaW5nTGF5b3V0PiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6QnVmZmVyQmluZGluZ0xheW91dCYgYnVmZmVyQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1
cm4geyB7IGJ1ZmZlckJpbmRpbmdMYXlvdXQudHlwZSwgYnVmZmVyQmluZGluZ0xheW91dC5oYXNE
eW5hbWljT2Zmc2V0LCBidWZmZXJCaW5kaW5nTGF5b3V0Lm1pbkJpbmRpbmdTaXplIH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZ0xheW91dD4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJ1ZmZlckJpbmRp
bmdMYXlvdXQmIGJ1ZmZlckJpbmRpbmdMYXlvdXQpCiB7CiAgICAgcmV0dXJuIHsgeyBidWZmZXJC
aW5kaW5nTGF5b3V0LnR5cGUsIGJ1ZmZlckJpbmRpbmdMYXlvdXQuaGFzRHluYW1pY09mZnNldCwg
YnVmZmVyQmluZGluZ0xheW91dC5taW5CaW5kaW5nU2l6ZSB9IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKaW5kZXgg
NzQ1NjY2YWE5ODlkNjNiYjE5OGNmYWIxMTlhODFiOGJhMjhiODJlOS4uMDBmNmM3ZDc2YWU3ZTg1
OTJhNTQ3NTYyY2Y0MTgxMGE5NzcyZmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIw
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZy
b21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlw
dG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVm
ZmVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGJ1ZmZlckRlc2NyaXB0b3IpCit7
CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6
OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihidWZmZXJEZXNjcmlwdG9yKSk7CisgICAg
aWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKCpiYXNlKSwgYnVmZmVyRGVzY3JpcHRvci5zaXplLCBidWZmZXJEZXNjcmlwdG9y
LnVzYWdlLCBidWZmZXJEZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24gfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQnVmZmVyRGVzY3JpcHRvciYgYnVm
ZmVyRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3Rh
dGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihidWZmZXJEZXNjcmlwdG9yKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFz
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggZTY2NjdkYWM0NTZkZjcyZmViZDAyY2RlYmMwMTMzMTFi
NmZhMWFlNS4uNDgxMzI1MjI2ZGY2OGM5M2E5MTgyN2MyMjNmZTA4ZmZjNGI4NTI4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25m
aWd1cmF0aW9uLmNwcApAQCAtMjksMTAgKzI5LDI3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q2FudmFzQ29uZmlndXJhdGlvbj4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNh
bnZhc0NvbmZpZ3VyYXRpb24mIGNhbnZhc0NvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBkZXZp
Y2UgPSBjb252ZXJ0VG9CYWNraW5nKGNhbnZhc0NvbmZpZ3VyYXRpb24uZGV2aWNlKTsKKyAgICBp
ZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0
aW9uYWw8RXh0ZW50M0Q+IHNpemU7CisgICAgaWYgKGNhbnZhc0NvbmZpZ3VyYXRpb24uc2l6ZSkg
eworICAgICAgICBzaXplID0gY29udmVydFRvQmFja2luZygqY2FudmFzQ29uZmlndXJhdGlvbi5z
aXplKTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IGRldmljZSwgY2FudmFzQ29uZmlndXJhdGlvbi5m
b3JtYXQsIGNhbnZhc0NvbmZpZ3VyYXRpb24udXNhZ2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29s
b3JTcGFjZSwgY2FudmFzQ29uZmlndXJhdGlvbi5jb21wb3NpdGluZ0FscGhhTW9kZSwgV1RGTW92
ZShzaXplKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNhbnZhc0NvbmZp
Z3VyYXRpb24+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBDYW52YXNDb25maWd1cmF0aW9uJiBjYW52YXNDb25maWd1cmF0aW9uKQogewogICAgIGF1
dG8qIGRldmljZSA9IGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhjYW52YXNDb25maWd1cmF0aW9u
LmRldmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29sb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcApp
bmRleCBiMWE3MTE5NzhhY2ZlMzUxYmRiYzI4NDFkM2U4M2VmMDNiNzNmZjlhLi4yNzRkNzgyYzg0
MDhkYzA1NTE5ZGM5NjUwMWU2NjU4ZmRmNWFkZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVDb2xvci5jcHAKQEAgLTI5LDEwICsyOSwyOCBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29sb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb2xvckRpY3Q+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmIGNvbG9y
RGljdCkKK3sKKyAgICByZXR1cm4geyB7IGNvbG9yRGljdC5yLCBjb2xvckRpY3QuZywgY29sb3JE
aWN0LmIsIGNvbG9yRGljdC5hIH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxDb2xvcj4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNv
bG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvciwgW10gKGNvbnN0
IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHsKKyAgICAg
ICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJH
UFU6OkNvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbG9yPiB7CisgICAg
ICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9CYWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlm
ICghY29sb3IpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4geyB7IFdURk1vdmUoKmNvbG9yKSB9IH07CisgICAgfSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0KQogewogICAgIHJldHVybiB7
IHsgY29sb3JEaWN0LnIsIGNvbG9yRGljdC5nLCBjb2xvckRpY3QuYiwgY29sb3JEaWN0LmEgfSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFy
Z2V0U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFy
Z2V0U3RhdGUuY3BwCmluZGV4IGYzOWNmYmMxZGIwOGVmNzcwZDg0Y2U1MmJlYWMxYTAyM2RhM2Zm
NWIuLjNlZTE4MTNkMTE5NjUwYjg3NjExOThkYzg3ZDgyMWFiMzk4NjVhYzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5j
cHAKQEAgLTI5LDEwICsyOSwyMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xvclRhcmdldFN0YXRlJiBj
b2xvclRhcmdldFN0YXRlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRTdGF0ZT4gYmxlbmQ7
CisgICAgaWYgKGNvbG9yVGFyZ2V0U3RhdGUuYmxlbmQpIHsKKyAgICAgICAgYmxlbmQgPSBjb252
ZXJ0VG9CYWNraW5nKCpjb2xvclRhcmdldFN0YXRlLmJsZW5kKTsKKyAgICAgICAgaWYgKCFibGVu
ZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJu
IHsgeyBjb2xvclRhcmdldFN0YXRlLmZvcm1hdCwgV1RGTW92ZShibGVuZCksIGNvbG9yVGFyZ2V0
U3RhdGUud3JpdGVNYXNrIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29s
b3JUYXJnZXRTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNr
aW5nKGNvbnN0IENvbG9yVGFyZ2V0U3RhdGUmIGNvbG9yVGFyZ2V0U3RhdGUpCiB7CiAgICAgc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZT4gYmxlbmQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yLmNwcAppbmRleCA0MmI5OThlZGRlM2U0YWJjYzk4YTBlNzIxNGVkMmNkZTAxZWM4YjRm
Li5hYjg5ZjVhNjZkMGJmMjViZTY0MThkYjAxMjUwMTkyMGFkOTQwNDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVy
RGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21tYW5kQnVmZmVyRGVzY3JpcHRv
cj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBjb21tYW5kQnVmZmVyRGVzY3JpcHRvcikK
K3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBB
TDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
KSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGNvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2lu
ZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCmluZGV4IDA5MjRkNDE3YTUy
MTFkMjk4MGFlZTI3NTA5YmU2YjVmNTJjODQyNDcuLjIyMTg3NjkzOTgwZjE3YThiMWE2YTdlOTRm
YmM0OGRmNWM1ZDFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCAr
MjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6
Om9wdGlvbmFsPENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvciYgY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNv
bnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2Ny
aXB0b3JCYXNlJj4oY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5n
KGNvbnN0IENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgY29tbWFuZEVuY29kZXJEZXNjcmlwdG9y
KQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25z
dCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uTWVz
c2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25N
ZXNzYWdlLmNwcAppbmRleCBjODRkODhlOTFjNDg2OTM4ZGRkZDRkZTg1YWY4YTE0YzRiYjU2MDU5
Li44YjA3YWI5ZDgwZWNhNDljZDFjMTcxNWE1NjVjOGI4MzljMjRiOGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdl
LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxDb21waWxhdGlvbk1lc3NhZ2U+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1l
c3NhZ2UmIGNvbXBpbGF0aW9uTWVzc2FnZSkKK3sKKyAgICByZXR1cm4geyB7IGNvbXBpbGF0aW9u
TWVzc2FnZS5tZXNzYWdlKCksIGNvbXBpbGF0aW9uTWVzc2FnZS50eXBlKCksIGNvbXBpbGF0aW9u
TWVzc2FnZS5saW5lTnVtKCksIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lUG9zKCksIGNvbXBpbGF0
aW9uTWVzc2FnZS5vZmZzZXQoKSwgY29tcGlsYXRpb25NZXNzYWdlLmxlbmd0aCgpIH0gfTsKK30K
KwogUmVmUHRyPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+IENvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBDb21waWxhdGlvbk1lc3NhZ2Um
IGNvbXBpbGF0aW9uTWVzc2FnZSkKIHsKICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkNvbXBpbGF0
aW9uTWVzc2FnZTo6Y3JlYXRlKGNvbXBpbGF0aW9uTWVzc2FnZS5tZXNzYWdlLCBjb21waWxhdGlv
bk1lc3NhZ2UudHlwZSwgY29tcGlsYXRpb25NZXNzYWdlLmxpbmVOdW0sIGNvbXBpbGF0aW9uTWVz
c2FnZS5saW5lUG9zLCBjb21waWxhdGlvbk1lc3NhZ2Uub2Zmc2V0LCBjb21waWxhdGlvbk1lc3Nh
Z2UubGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggMTkyOWRiNWY0NDE3ODFiMGM4
ZTI3OWY4ZDI5OTU1MTFmYjgzMjkzMC4uNDI2ZjdkMTcwYzAyYzRlYzdhOGExNjQ4N2MzNWVhNjlm
OTZlOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyNCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0
ZVBhc3NEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBjb21wdXRlUGFzc0Rl
c2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2Fz
dDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihjb21wdXRlUGFzc0Rl
c2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBhdXRvIHRpbWVzdGFtcFdyaXRlcyA9IGNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBh
c3NEZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYgKCF0aW1lc3RhbXBXcml0ZXMp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
KmJhc2UpLCBXVEZNb3ZlKCp0aW1lc3RhbXBXcml0ZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBj
b21wdXRlUGFzc0Rlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBhc3NE
ZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAppbmRleCBhNmY5Mjk1
ODJkZTNkOGVkMmMyYzg5YzkzYzY2MjRlZjE2M2RmMzkxLi5lYTc5MTIwOWY1ZjBiOTFkOWI5YjNk
ZjI2Yzg0ZjllODc4NzM4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5jcHAKQEAg
LTI5LDEwICsyOSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlPiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0
ZVBhc3NUaW1lc3RhbXBXcml0ZSYgY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSkKK3sKKyAgICBh
dXRvIHF1ZXJ5U2V0ID0gY29udmVydFRvQmFja2luZyhjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRl
LnF1ZXJ5U2V0KTsKKyAgICBpZiAoIXF1ZXJ5U2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHsgeyBxdWVyeVNldCwgY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0
ZS5xdWVyeUluZGV4LCBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLmxvY2F0aW9uIH0gfTsKK30K
Kworc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcz4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQ
YXNzVGltZXN0YW1wV3JpdGVzJiBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcykKK3sKKyAgICBW
ZWN0b3I8Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0YW1wV3JpdGVzOworICAgIHRp
bWVzdGFtcFdyaXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbXB1dGVQYXNzVGltZXN0YW1w
V3JpdGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0aW1lc3RhbXBXcml0ZSA6IGNv
bXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkVGltZXN0
YW1wV3JpdGUgPSBjb252ZXJ0VG9CYWNraW5nKHRpbWVzdGFtcFdyaXRlKTsKKyAgICAgICAgaWYg
KCFjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIHRpbWVzdGFtcFdyaXRlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29u
dmVydGVkVGltZXN0YW1wV3JpdGUpKTsKKyAgICB9CisgICAgcmV0dXJuIHRpbWVzdGFtcFdyaXRl
czsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0
IENvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUmIGNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUpCiB7
CiAgICAgYXV0byogcXVlcnlTZXQgPSBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhjb21wdXRl
UGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNw
cAppbmRleCBjNWRlYWUyNWI1YWZiNTIwZDQwYjA4M2IyZjMwZmE4MmIwNDBiNmM0Li5kZDk5ODgz
ZTA2N2U2YWY3MzllYWVhZDQwMzc3ZjA4MmZkY2I5NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRv
cikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IFBBTDo6V2ViR1BVOjpQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGF1dG8gY29tcHV0ZSA9IGNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lRGVz
Y3JpcHRvci5jb21wdXRlKTsKKyAgICBpZiAoIWNvbXB1dGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpjb21w
dXRlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyhjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlw
dG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxj
b25zdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikp
OwpAQCAtNDMsNyArNTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0OgogICAgIGlmICghY29t
cHV0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZSgqYmFzZSksIFdURk1v
dmUoKmNvbXB1dGUpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3Zl
KCpjb21wdXRlKSB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaAppbmRleCAzNmJlNjk5ZjM4YmYwNmE2ZmIxYjBhY2Q5ZWE4NmMwYTlmMmQyZGY3Li5h
NTMzODc2NzhjYjlkNzVhMjc2ZTQ2Mzc1NDFkMzE2MDY5YjA3ZDljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaApAQCAtMjcsNDEgKzI3LDI0MiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiV2ViR1BVQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlcy5oIgorI2luY2x1ZGUgIldlYkdQVUVycm9yLmgiCisjaW5jbHVkZSAiV2Vi
R1BVRXh0ZW50M0QuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
V2ViR1BVT3JpZ2luMkQuaCIKKyNpbmNsdWRlICJXZWJHUFVPcmlnaW4zRC5oIgorI2luY2x1ZGUg
IldlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUNvbG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVRXJyb3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUV4dGVudDNELmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPcmln
aW4yRC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT3JpZ2luM0QuaD4K
KyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBX
cml0ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgUEFMOjpX
ZWJHUFUgewogCiBjbGFzcyBBZGFwdGVyOwogY2xhc3MgQmluZEdyb3VwOworc3RydWN0IEJpbmRH
cm91cERlc2NyaXB0b3I7CitzdHJ1Y3QgQmluZEdyb3VwRW50cnk7CiBjbGFzcyBCaW5kR3JvdXBM
YXlvdXQ7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBCaW5kR3Jv
dXBMYXlvdXRFbnRyeTsKK3N0cnVjdCBCbGVuZENvbXBvbmVudDsKK3N0cnVjdCBCbGVuZFN0YXRl
OwogY2xhc3MgQnVmZmVyOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7CitzdHJ1Y3QgQnVmZmVyQmlu
ZGluZ0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOworc3RydWN0IENhbnZhc0NvbmZp
Z3VyYXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKIGNsYXNzIENvbW1hbmRCdWZmZXI7
CitzdHJ1Y3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I7CiBjbGFzcyBDb21tYW5kRW5jb2RlcjsK
K3N0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CitjbGFzcyBDb21waWxhdGlvbk1lc3Nh
Z2U7CitzdHJ1Y3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yOwogY2xhc3MgQ29tcHV0ZVBhc3NFbmNv
ZGVyOwogY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOworc3RydWN0IENvbXB1dGVQaXBlbGluZURlc2Ny
aXB0b3I7CitzdHJ1Y3QgRGVwdGhTdGVuY2lsU3RhdGU7CiBjbGFzcyBEZXZpY2U7CitzdHJ1Y3Qg
RGV2aWNlRGVzY3JpcHRvcjsKK2NsYXNzIEV4dGVybmFsVGV4dHVyZTsKK3N0cnVjdCBFeHRlcm5h
bFRleHR1cmVCaW5kaW5nTGF5b3V0Oworc3RydWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7
CitzdHJ1Y3QgRnJhZ21lbnRTdGF0ZTsKIGNsYXNzIEdQVTsKK3N0cnVjdCBJZGVudGlmaWVyOwor
c3RydWN0IEltYWdlQ29weUJ1ZmZlcjsKK3N0cnVjdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlOwor
c3RydWN0IEltYWdlQ29weVRleHR1cmU7CitzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZDsK
K3N0cnVjdCBJbWFnZURhdGFMYXlvdXQ7CitzdHJ1Y3QgTXVsdGlzYW1wbGVTdGF0ZTsKK3N0cnVj
dCBPYmplY3REZXNjcmlwdG9yQmFzZTsKK2NsYXNzIE91dE9mTWVtb3J5RXJyb3I7CitzdHJ1Y3Qg
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZTsKIGNsYXNzIFBpcGVsaW5lTGF5b3V0Oworc3RydWN0IFBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmltaXRpdmVTdGF0ZTsKK3N0cnVjdCBQ
cm9ncmFtbWFibGVTdGFnZTsKIGNsYXNzIFF1ZXJ5U2V0Oworc3RydWN0IFF1ZXJ5U2V0RGVzY3Jp
cHRvcjsKIGNsYXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKIGNsYXNzIFJl
bmRlckJ1bmRsZTsKK3N0cnVjdCBSZW5kZXJCdW5kbGVEZXNjcmlwdG9yOworY2xhc3MgUmVuZGVy
QnVuZGxlRW5jb2RlcjsKK3N0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKK3N0
cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yOwogY2xhc3MgUmVu
ZGVyUGFzc0VuY29kZXI7CitzdHJ1Y3QgUmVuZGVyUGFzc0xheW91dDsKIGNsYXNzIFJlbmRlclBp
cGVsaW5lOworc3RydWN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK3N0cnVjdCBSZXF1ZXN0
QWRhcHRlck9wdGlvbnM7CiBjbGFzcyBTYW1wbGVyOworc3RydWN0IFNhbXBsZXJCaW5kaW5nTGF5
b3V0Oworc3RydWN0IFNhbXBsZXJEZXNjcmlwdG9yOwogY2xhc3MgU2hhZGVyTW9kdWxlOworc3Ry
dWN0IFNoYWRlck1vZHVsZURlc2NyaXB0b3I7CitzdHJ1Y3QgU3RlbmNpbEZhY2VTdGF0ZTsKK3N0
cnVjdCBTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ7CitjbGFzcyBTdXBwb3J0ZWRGZWF0dXJl
czsKK2NsYXNzIFN1cHBvcnRlZExpbWl0czsKIGNsYXNzIFRleHR1cmU7CitzdHJ1Y3QgVGV4dHVy
ZUJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CiBjbGFzcyBUZXh0dXJl
VmlldzsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CitjbGFzcyBWYWxpZGF0aW9uRXJy
b3I7CitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZlcnRleEJ1ZmZlckxheW91dDsK
K3N0cnVjdCBWZXJ0ZXhTdGF0ZTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKIAogbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RydWN0IEJpbmRHcm91cERlc2NyaXB0b3I7Citz
dHJ1Y3QgQmluZEdyb3VwRW50cnk7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsK
K3N0cnVjdCBCaW5kR3JvdXBMYXlvdXRFbnRyeTsKK3N0cnVjdCBCbGVuZENvbXBvbmVudDsKK3N0
cnVjdCBCbGVuZFN0YXRlOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7CitzdHJ1Y3QgQnVmZmVyQmlu
ZGluZ0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOworc3RydWN0IENhbnZhc0NvbmZp
Z3VyYXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKK3N0cnVjdCBDb21tYW5kQnVmZmVy
RGVzY3JpcHRvcjsKK3N0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CitzdHJ1Y3QgQ29t
cGlsYXRpb25NZXNzYWdlOworc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKK3N0cnVjdCBD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOworc3RydWN0IERlcHRoU3RlbmNpbFN0YXRlOworc3Ry
dWN0IERldmljZURlc2NyaXB0b3I7CitzdHJ1Y3QgRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91
dDsKK3N0cnVjdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yOworc3RydWN0IEZyYWdtZW50U3Rh
dGU7CitzdHJ1Y3QgSWRlbnRpZmllcjsKK3N0cnVjdCBJbWFnZUNvcHlCdWZmZXI7CitzdHJ1Y3Qg
SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZTsKK3N0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOworc3RydWN0
IEltYWdlQ29weVRleHR1cmVUYWdnZWQ7CitzdHJ1Y3QgSW1hZ2VEYXRhTGF5b3V0Oworc3RydWN0
IE11bHRpc2FtcGxlU3RhdGU7CitzdHJ1Y3QgT2JqZWN0RGVzY3JpcHRvckJhc2U7CitzdHJ1Y3Qg
T3V0T2ZNZW1vcnlFcnJvcjsKK3N0cnVjdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlOworc3RydWN0
IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmltaXRpdmVTdGF0ZTsKK3N0cnVj
dCBQcm9ncmFtbWFibGVTdGFnZTsKK3N0cnVjdCBRdWVyeVNldERlc2NyaXB0b3I7CitzdHJ1Y3Qg
UmVuZGVyQnVuZGxlRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3Jp
cHRvcjsKK3N0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBh
c3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yOwor
c3RydWN0IFJlbmRlclBhc3NMYXlvdXQ7CitzdHJ1Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Oworc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKK3N0cnVjdCBTYW1wbGVyQmluZGluZ0xh
eW91dDsKK3N0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKK3N0cnVjdCBTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yOworc3RydWN0IFN0ZW5jaWxGYWNlU3RhdGU7CitzdHJ1Y3QgU3RvcmFnZVRleHR1cmVC
aW5kaW5nTGF5b3V0Oworc3RydWN0IFN1cHBvcnRlZEZlYXR1cmVzOworc3RydWN0IFN1cHBvcnRl
ZExpbWl0czsKK3N0cnVjdCBUZXh0dXJlQmluZGluZ0xheW91dDsKK3N0cnVjdCBUZXh0dXJlRGVz
Y3JpcHRvcjsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CitzdHJ1Y3QgVmFsaWRhdGlv
bkVycm9yOworc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKK3N0cnVjdCBWZXJ0ZXhCdWZmZXJMYXlv
dXQ7CitzdHJ1Y3QgVmVydGV4U3RhdGU7CisKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIAorICAg
IHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8
QmluZEdyb3VwRW50cnk+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRH
cm91cEVudHJ5Jik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXREZXNj
cmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXRFbnRyeT4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RW50cnkmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEJsZW5kQ29tcG9uZW50PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpCbGVuZENvbXBvbmVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRTdGF0
ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZSYpOworICAg
IHN0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6QnVmZmVyQmluZGluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGlu
Z0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyQmluZGlu
Z0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGVzY3JpcHRvcj4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q2FudmFzQ29uZmlndXJhdGlvbj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6Q2FudmFzQ29uZmlndXJhdGlvbiYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9yJik7CisgICAgc3RkOjpv
cHRpb25hbDxDb2xvckRpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNv
bG9yRGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29sb3JUYXJnZXRTdGF0ZSYpOworICAgIHN0ZDo6
b3B0aW9uYWw8Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25h
bDxDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29t
cGlsYXRpb25NZXNzYWdlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21w
aWxhdGlvbk1lc3NhZ2UmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVQYXNzRGVzY3JpcHRv
cj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlPiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRl
Jik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcz4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMm
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPERlcHRoU3RlbmNpbFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8
RGV2aWNlRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGV2
aWNlRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OkVycm9yJik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlbnQz
RD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEV4dGVudDNERGljdD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6RXh0ZW50M0REaWN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1cmVC
aW5kaW5nTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5h
bFRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1
cmVEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5h
bFRleHR1cmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxGcmFnbWVudFN0YXRlPiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpGcmFnbWVudFN0YXRlJik7CisgICAg
c3RkOjpvcHRpb25hbDxJZGVudGlmaWVyPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpJZGVudGlmaWVyJik7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUNvcHlCdWZmZXI+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYpOworICAg
IHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZT4gY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSYpOworICAgIHN0ZDo6b3B0
aW9uYWw8SW1hZ2VDb3B5VGV4dHVyZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5VGV4dHVy
ZVRhZ2dlZD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4
dHVyZVRhZ2dlZCYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhTGF5b3V0PiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlvdXQmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6Ok11bHRpc2FtcGxlU3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9iamVjdERlc2Ny
aXB0b3JCYXNlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNj
cmlwdG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjJEJik7CisgICAgc3RkOjpvcHRpb25hbDxPcmln
aW4yRERpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjJERGlj
dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6Ok9yaWdpbjNEJik7CisgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4zRERpY3Q+
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdCYpOworICAg
IHN0ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGlwZWxp
bmVEZXNjcmlwdG9yQmFzZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxh
eW91dERlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByaW1pdGl2ZVN0YXRlPiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQcmltaXRpdmVTdGF0ZSYpOworICAgIHN0
ZDo6b3B0aW9uYWw8UHJvZ3JhbW1hYmxlU3RhZ2U+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlByb2dyYW1tYWJsZVN0YWdlJik7CisgICAgc3RkOjpvcHRpb25hbDxRdWVyeVNl
dERlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
RGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRGVzY3JpcHRvcj4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVzY3JpcHRv
ciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50PiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50Jik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXNjcmlwdG9y
PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRv
ciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0xheW91dD4gY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
bmRlclBhc3NUaW1lc3RhbXBXcml0ZXM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0QWRh
cHRlck9wdGlvbnM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RB
ZGFwdGVyT3B0aW9ucyYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2FtcGxlckJpbmRpbmdMYXlvdXQ+
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJCaW5kaW5nTGF5b3V0
Jik7CisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFNoYWRlck1vZHVsZURlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZW5j
aWxGYWNlU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN0ZW5jaWxG
YWNlU3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91
dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5k
aW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTdXBwb3J0ZWRGZWF0dXJlcz4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN1cHBvcnRlZExpbWl0cz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJik7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlQmlu
ZGluZ0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZUJp
bmRpbmdMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvciYpOworICAg
IHN0ZDo6b3B0aW9uYWw8VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZhbGlkYXRpb25FcnJvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
VmFsaWRhdGlvbkVycm9yJik7CisgICAgc3RkOjpvcHRpb25hbDxWZXJ0ZXhBdHRyaWJ1dGU+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleEF0dHJpYnV0ZSYpOworICAg
IHN0ZDo6b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZl
cnRleFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWZXJ0ZXhTdGF0
ZSYpOworCiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkFkYXB0ZXImKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlm
aWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYpID0gMDsK
ICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JikgPSAwOwpAQCAtNzEsNiArMjcyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJ
ZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNlJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRl
bnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1
cmUmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkdQVSYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZp
ZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmKSA9
IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKaW5kZXggMmJjYmIwNmVh
MjQwNzQ1YzA5YjRjNjJiYzAwOGVhYjg5ZDQzYzRlMy4uOTBkMThmYzE4NjIyYzQ4YWFlODk1NDMx
MTE5NGZlZjc5MjlkODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RGVwdGhTdGVu
Y2lsU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3RhdGUpCit7Cisg
ICAgYXV0byBzdGVuY2lsRnJvbnQgPSBjb252ZXJ0VG9CYWNraW5nKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxGcm9udCk7CisgICAgaWYgKCFzdGVuY2lsRnJvbnQpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0ZW5jaWxCYWNrID0gY29udmVydFRvQmFja2luZyhk
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFjayk7CisgICAgaWYgKCFzdGVuY2lsQmFjaykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgZGVwdGhTdGVuY2ls
U3RhdGUuZm9ybWF0LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFdyaXRlRW5hYmxlZCwgZGVwdGhT
dGVuY2lsU3RhdGUuZGVwdGhDb21wYXJlLCBXVEZNb3ZlKCpzdGVuY2lsRnJvbnQpLCBXVEZNb3Zl
KCpzdGVuY2lsQmFjayksIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxSZWFkTWFzaywgZGVwdGhT
dGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlTWFzaywgZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhCaWFz
LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEJpYXNTbG9wZVNjYWxlLCBkZXB0aFN0ZW5jaWxTdGF0
ZS5kZXB0aEJpYXNDbGFtcCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkRl
cHRoU3RlbmNpbFN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJh
Y2tpbmcoY29uc3QgRGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3RlbmNpbFN0YXRlKQogewogICAg
IGF1dG8gc3RlbmNpbEZyb250ID0gY29udmVydEZyb21CYWNraW5nKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxGcm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHAKaW5kZXggYzBhNGQ2ZDg2ZWFhZmVmNzM4MThhODE1
ZTRjOTUyZGI0NGFlMGUwMy4uNTgwYWEwNmJiZTQ1MDk3MmE3MmViYzNjN2RkZWM0YjE5Y2E1Yjc1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURl
c2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZp
Y2VEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlRGVzY3JpcHRvcj4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRldmlj
ZURlc2NyaXB0b3ImIGRldmljZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVy
dFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRv
ckJhc2UmPihkZXZpY2VEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgZGV2aWNl
RGVzY3JpcHRvci5yZXF1aXJlZEZlYXR1cmVzIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKGNvbnN0IERldmljZURlc2NyaXB0b3ImIGRldmljZURlc2NyaXB0b3Ip
CiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oZGV2aWNlRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUVycm9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJvci5jcHAKaW5kZXggZThmN2RiN2RmZjZkZjYyNmE3
NTA1OWRlOGJjMTYzN2M2M2FjODgzNy4uMDZkMzFjNWQzMDkwZTRhOTJmYTA2MTJjOTg5NzZlNjQy
NGIzNGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUVy
cm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXJyb3IuY3Bw
CkBAIC0yOSwxMCArMjksMjYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8RXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
ZXJyb3IsIFt0aGlzXSAoY29uc3QgUmVmPFBBTDo6V2ViR1BVOjpPdXRPZk1lbW9yeUVycm9yPiYg
b3V0T2ZNZW1vcnlFcnJvcikgLT4gc3RkOjpvcHRpb25hbDxFcnJvcj4geworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNvbnZlcnRUb0JhY2tpbmcob3V0T2ZNZW1vcnlFcnJvci5nZXQoKSk7CisgICAg
ICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHsgeyAqcmVzdWx0IH0gfTsKKyAgICB9LCBbdGhpc10gKGNvbnN0IFJlZjxQQUw6
OldlYkdQVTo6VmFsaWRhdGlvbkVycm9yPiYgdmFsaWRhdGlvbkVycm9yKSAtPiBzdGQ6Om9wdGlv
bmFsPEVycm9yPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29udmVydFRvQmFja2luZyh2YWxp
ZGF0aW9uRXJyb3IuZ2V0KCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgKnJlc3VsdCB9IH07CisgICAg
fSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9yPiBDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgRXJyb3ImIGVycm9yKQogewog
ICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGVycm9yLCBbdGhpc10gKGNvbnN0IE91dE9mTWVtb3J5
RXJyb3ImIG91dE9mTWVtb3J5RXJyb3IpIC0+IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVy
cm9yPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0
ZW50M0QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNELmNw
cAppbmRleCA4MDM0ODIwNDE5NTM5NDM5M2VmN2Y0MDlhNTNkNjhkODUwNzkzMTdhLi4wNTE4ODQy
ZWZlMjVlNTIzNTM2NmNmMGIwYTY5MjIyZjFlZTgxYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlbnQzRC5jcHAKQEAgLTI5LDEwICsyOSwyOCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxFeHRlbnQzRERpY3Q+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpF
eHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkKK3sKKyAgICByZXR1cm4geyB7IGV4dGVudDNERGlj
dC53aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdodCwgZXh0ZW50M0REaWN0LmRlcHRoT3JBcnJheUxh
eWVycyB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXh0ZW50M0Q+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgZXh0
ZW50M0QpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZXh0ZW50M0QsIFtdIChjb25zdCBW
ZWN0b3I8UEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlPiYgdmVjdG9yKSAtPiBzdGQ6Om9w
dGlvbmFsPEV4dGVudDNEPiB7CisgICAgICAgIHJldHVybiB7IHsgdmVjdG9yIH0gfTsKKyAgICB9
LCBbdGhpc10gKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkg
LT4gc3RkOjpvcHRpb25hbDxFeHRlbnQzRD4geworICAgICAgICBhdXRvIGV4dGVudDNEID0gY29u
dmVydFRvQmFja2luZyhleHRlbnQzRERpY3QpOworICAgICAgICBpZiAoIWV4dGVudDNEKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpleHRlbnQzRCkgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpFeHRlbnQzRERpY3Q+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFj
a2luZyhjb25zdCBFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkKIHsKICAgICByZXR1cm4geyB7
IGV4dGVudDNERGljdC53aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdodCwgZXh0ZW50M0REaWN0LmRl
cHRoT3JBcnJheUxheWVycyB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5jcHAK
aW5kZXggY2M1YjkxYTVhYTZjYzk1ZDc0ZjI3ZWQ5Y2YxMzcxMzZlMmU5ZGI5YS4uNTY2NmEzYjcw
YTJkYzhlODVlNWNiN2UyNDM3N2UwODI3NDZkMDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5k
aW5nTGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RXh0ZXJuYWxUZXh0dXJlQmlu
ZGluZ0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQmIGV4dGVybmFsVGV4
dHVyZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyB9IH07Cit9CisKIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IENvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBFeHRlcm5hbFRleHR1
cmVCaW5kaW5nTGF5b3V0JiBleHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0KQogewogICAgIHJl
dHVybiB7IHsgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwCmluZGV4IDYzZTFjNmJk
ZDUzMzQ5MjFjODgxYmU4ZjNhOGZmOTdmNDI1ZTE0NzIuLjQ3NmNiZWI3OGEzNDNlOTdiNGYxM2E2
Mzc5NzM1YjNlZmVmMmM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5jcHAKQEAgLTI5
LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0
ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yKQoreworICAgIGF1dG8g
YmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9i
amVjdERlc2NyaXB0b3JCYXNlJj4oZXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvcikpOworICAgIGlm
ICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqYmFzZSksIGV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY29sb3JTcGFjZSB9IH07
Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBF
eHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yKQogewog
ICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmpl
Y3REZXNjcmlwdG9yQmFzZSY+KGV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcAppbmRl
eCA0ODA2YjQxMjIyNzA0ZGQwYzFhNDA5ZDJlMTFmZjE3ZGY3N2FhNGRjLi41ZjA3MDEzMzNkY2Rk
MmJkMjc4YmZkZWI4NzNlMDU4YzBjMDU1MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjkgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaD4K
IAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxGcmFnbWVudFN0
YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6RnJhZ21lbnRTdGF0ZSYgZnJhZ21lbnRTdGF0ZSkKK3sKKyAgICBhdXRvIGJhc2Ug
PSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFt
bWFibGVTdGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8Q29sb3JUYXJnZXRTdGF0ZT4gdGFyZ2V0
czsKKyAgICB0YXJnZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhZ21lbnRTdGF0ZS50YXJn
ZXRzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0YXJnZXQgOiBmcmFnbWVudFN0YXRl
LnRhcmdldHMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUYXJnZXQgPSBjb252ZXJ0VG9CYWNr
aW5nKHRhcmdldCk7CisgICAgICAgIGlmICghY29udmVydGVkVGFyZ2V0KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RG
TW92ZSgqY29udmVydGVkVGFyZ2V0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYXNlKSwgV1RGTW92ZSh0YXJnZXRzKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OkZyYWdtZW50U3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBGcmFnbWVudFN0YXRlJiBmcmFnbWVudFN0YXRlKQogewogICAgIGF1
dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQcm9ncmFtbWFi
bGVTdGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKaW5kZXggZmQ0NzAwNTUxOGE4MzQ0
MTRhOTg1MDIyOWMxMjFhZmQxZGUxMmU1NS4uZTRiNzBhNmVjZjlhZmQ0YmI1M2NiNGYyOTc2MTQw
YmU0MWUxMTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUltYWdlQ29weUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKQEAgLTI5LDE3ICsyOSwzMSBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5QnVmZmVyPiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VDb3B5QnVmZmVyJiBpbWFnZUNvcHlCdWZmZXIpCit7CisgICAgYXV0byBiYXNlID0gY29u
dmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5
b3V0Jj4oaW1hZ2VDb3B5QnVmZmVyKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBidWZmZXIgPSBjb252ZXJ0VG9CYWNraW5nKGltYWdl
Q29weUJ1ZmZlci5idWZmZXIpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgYnVmZmVyIH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyPiBDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5QnVm
ZmVyJiBpbWFnZUNvcHlCdWZmZXIpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IEltYWdlRGF0YUxheW91dCY+KGltYWdlQ29weUJ1ZmZlcikp
OwogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1
dG8gYnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGltYWdlQ29weUJ1ZmZlci5idWZm
ZXIpOworICAgIGF1dG8qIGJ1ZmZlciA9IGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbWFnZUNv
cHlCdWZmZXIuYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCmluZGV4IGMwY2EzYmYzNTljOWViNjA5
MTI4ZWZhZWYyMjZjNjM2ZThkZTdlNDAuLjg2ODY4M2QxZDQ5OGI1ZmMxMTcyNDkzNzFjNTNiNDE4
ZDNjYTMxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAKQEAgLTI5LDEwICsyOSwyMyBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJ
bWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPElt
YWdlQ29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNv
cHlFeHRlcm5hbEltYWdlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IG9yaWdpbjsK
KyAgICBpZiAoaW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4pIHsKKyAgICAgICAgYXV0byBj
b252ZXJ0ZWRPcmlnaW4gPSBjb252ZXJ0VG9CYWNraW5nKCppbWFnZUNvcHlFeHRlcm5hbEltYWdl
Lm9yaWdpbik7CisgICAgICAgIGlmICghY29udmVydGVkT3JpZ2luKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUob3JpZ2lu
KSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkltYWdlQ29weUV4dGVybmFs
SW1hZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlFeHRlcm5hbEltYWdlKQogewogICAg
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJEPiBvcmlnaW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAK
aW5kZXggNmNkZGQ5ODlhYTA0ZWQxNTcxMmVmMDUxZDMxMzBjNjlhMjUxMWFmMi4uNjA5MDgxOTU3
NTMyZmQzZjI3YmEyMjE5MTZhYjdhNzA2NzMzZGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcApAQCAtMjksMTMg
KzI5LDMwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNv
cHlUZXh0dXJlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8SW1hZ2VDb3B5VGV4dHVyZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmIGltYWdlQ29weVRleHR1
cmUpCit7CisgICAgYXV0byB0ZXh0dXJlID0gY29udmVydFRvQmFja2luZyhpbWFnZUNvcHlUZXh0
dXJlLnRleHR1cmUpOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IG9yaWdpbjsKKyAgICBpZiAoaW1h
Z2VDb3B5VGV4dHVyZS5vcmlnaW4pIHsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBjb252ZXJ0VG9C
YWNraW5nKCppbWFnZUNvcHlUZXh0dXJlLm9yaWdpbik7CisgICAgICAgIGlmICghb3JpZ2luKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7
IHRleHR1cmUsIGltYWdlQ29weVRleHR1cmUubWlwTGV2ZWwsIFdURk1vdmUob3JpZ2luKSwgaW1h
Z2VDb3B5VGV4dHVyZS5hc3BlY3QgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpJbWFnZUNvcHlUZXh0dXJlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZSYgaW1hZ2VDb3B5VGV4dHVyZSkKIHsKLSAg
ICBhdXRvIHRleHR1cmUgPSBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKGltYWdlQ29weVRleHR1
cmUudGV4dHVyZSk7CisgICAgYXV0byogdGV4dHVyZSA9IGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tp
bmcoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNwcAppbmRleCA2ZTdl
M2ZjY2I0MzI1ZTAzNTMzMjRiYzM4NTIxZTMxN2VlYThkZjM2Li42NGIzZTI1YTRhODZkMGRiNjI1
ZmU5MDI2ZGU2MTgxZjU3ODc0YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmVUYWdnZWQuY3BwCkBAIC0yOSwx
MCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdl
Q29weVRleHR1cmVUYWdnZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3Rk
OjpvcHRpb25hbDxJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRh
Z2dlZCYgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0
VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
Jj4oaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIGltYWdl
Q29weVRleHR1cmVUYWdnZWQuY29sb3JTcGFjZSwgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5wcmVt
dWx0aXBsaWVkQWxwaGEgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFn
ZUNvcHlUZXh0dXJlVGFnZ2VkPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgaW1hZ2VDb3B5VGV4dHVyZVRh
Z2dlZCkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8
Y29uc3QgSW1hZ2VDb3B5VGV4dHVyZSY+KGltYWdlQ29weVRleHR1cmVUYWdnZWQpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5j
cHAKaW5kZXggMmIyMTBiOWIxYjM3NDdjMmI0NTAzZDMxNTI4MzFmNmY3NTQzYmU1NC4uODE2NjYx
NTk5YzBiYmRjYmNhYThlMTJhN2UwYzk0OGE1YzkyMGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHAKQEAgLTI5LDEw
ICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VE
YXRhTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8SW1hZ2VEYXRhTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0JiBpbWFnZURhdGFMYXlvdXQp
Cit7CisgICAgcmV0dXJuIHsgeyBpbWFnZURhdGFMYXlvdXQub2Zmc2V0LCBpbWFnZURhdGFMYXlv
dXQuYnl0ZXNQZXJSb3csIGltYWdlRGF0YUxheW91dC5yb3dzUGVySW1hZ2UgfSB9OworfQorCiBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlvdXQ+IENvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBJbWFnZURhdGFMYXlvdXQmIGlt
YWdlRGF0YUxheW91dCkKIHsKICAgICByZXR1cm4geyB7IGltYWdlRGF0YUxheW91dC5vZmZzZXQs
IGltYWdlRGF0YUxheW91dC5ieXRlc1BlclJvdywgaW1hZ2VEYXRhTGF5b3V0LnJvd3NQZXJJbWFn
ZSB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVs
dGlzYW1wbGVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVs
dGlzYW1wbGVTdGF0ZS5jcHAKaW5kZXggMDQ2ZTc5MGY4OWJkYzM5ZWExNTNmMDZiMTgyYzQ3MWY5
OGE2MWJjZi4uODljZmI0YzVkYWE5ZTBlYTlhZjQxMmM2ZjJjYWIwOWYzZTYwNTBhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU11bHRpc2FtcGxlU3RhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVNdWx0aXNhbXBsZVN0
YXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVNdWx0aXNhbXBsZVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8TXVsdGlzYW1wbGVTdGF0ZT4gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok11bHRpc2FtcGxlU3Rh
dGUmIG11bHRpc2FtcGxlU3RhdGUpCit7CisgICAgcmV0dXJuIHsgeyBtdWx0aXNhbXBsZVN0YXRl
LmNvdW50LCBtdWx0aXNhbXBsZVN0YXRlLm1hc2ssIG11bHRpc2FtcGxlU3RhdGUuYWxwaGFUb0Nv
dmVyYWdlRW5hYmxlZCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok11bHRp
c2FtcGxlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyhjb25zdCBNdWx0aXNhbXBsZVN0YXRlJiBtdWx0aXNhbXBsZVN0YXRlKQogewogICAgIHJldHVy
biB7IHsgbXVsdGlzYW1wbGVTdGF0ZS5jb3VudCwgbXVsdGlzYW1wbGVTdGF0ZS5tYXNrLCBtdWx0
aXNhbXBsZVN0YXRlLmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQgfSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5j
cHAKaW5kZXggZDExNTRlYmQ4NmNkNzMyNThmYTFjNThmZDBiMDhiNjIwNjJiNzY0ZC4uZjAxOTlm
MDg5YzMxOTJiYzliZTM0YjQ2NGNjN2I4Njk1MjhiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3Bw
CkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8T2JqZWN0RGVzY3JpcHRvckJhc2U+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlw
dG9yQmFzZSYgb2JqZWN0RGVzY3JpcHRvckJhc2UpCit7CisgICAgcmV0dXJuIHsgeyBvYmplY3RE
ZXNjcmlwdG9yQmFzZS5sYWJlbCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
Ok9iamVjdERlc2NyaXB0b3JCYXNlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmIG9iamVjdERlc2NyaXB0b3JC
YXNlKQogewogICAgIHJldHVybiB7IHsgb2JqZWN0RGVzY3JpcHRvckJhc2UubGFiZWwgfSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5jcHAKaW5kZXgg
MjgwODhlMzJiY2M4YzAwMDFhYmNjMjI1M2NlNGIxMzZjNjRlNmVmNS4uZDJmYzI0N2ZlODU0ODQw
YzExMTFmYzhhMGM1MDQ3ZjU2ZGQzYjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVT3JpZ2luMkQuY3BwCkBAIC0yOSwxMCArMjksMjggQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3JpZ2luMkREaWN0PiBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luMkRE
aWN0JiBvcmlnaW4yRERpY3QpCit7CisgICAgcmV0dXJuIHsgeyBvcmlnaW4yRERpY3QueCwgb3Jp
Z2luMkREaWN0LnkgfSB9OworfQorCitzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2lu
MkQmIG9yaWdpbjJEKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG9yaWdpbjJELCBbXSAo
Y29uc3QgVmVjdG9yPFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZT4mIHZlY3RvcikgLT4g
c3RkOjpvcHRpb25hbDxPcmlnaW4yRD4geworICAgICAgICByZXR1cm4geyB7IHZlY3RvciB9IH07
CisgICAgfSwgW3RoaXNdIChjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luMkREaWN0JiBvcmlnaW4y
RERpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IHsKKyAgICAgICAgYXV0byBvcmlnaW4y
RCA9IGNvbnZlcnRUb0JhY2tpbmcob3JpZ2luMkREaWN0KTsKKyAgICAgICAgaWYgKCFvcmlnaW4y
RCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqb3JpZ2luMkQpIH0gfTsKKyAgICB9KTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6T3JpZ2luMkREaWN0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgT3JpZ2luMkREaWN0JiBvcmlnaW4yRERpY3QpCiB7CiAgICAgcmV0
dXJuIHsgeyBvcmlnaW4yRERpY3QueCwgb3JpZ2luMkREaWN0LnkgfSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHAKaW5kZXggNzdiYTFiNjViYjIx
ZmY0OGM1NGJhNjMxMmYyZGE5MzgzYzU0Mzk4OS4uM2Q4YzkzN2RlOGExM2JjMjI5N2YwY2M1ZWFi
NjFkMWQzNGI4MzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVU9yaWdpbjNELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
T3JpZ2luM0QuY3BwCkBAIC0yOSwxMCArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8T3JpZ2luM0REaWN0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luM0REaWN0JiBvcmlnaW4z
RERpY3QpCit7CisgICAgcmV0dXJuIHsgeyBvcmlnaW4zRERpY3QueCwgb3JpZ2luM0REaWN0Lnks
IG9yaWdpbjNERGljdC56IH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxPcmlnaW4zRD4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9y
aWdpbjNEJiBvcmlnaW4zRCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihvcmlnaW4zRCwg
W10gKGNvbnN0IFZlY3RvcjxQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGU+JiB2ZWN0b3Ip
IC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IHsKKyAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3Ig
fSB9OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdCYgb3Jp
Z2luM0REaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiB7CisgICAgICAgIGF1dG8gb3Jp
Z2luM0QgPSBjb252ZXJ0VG9CYWNraW5nKG9yaWdpbjNERGljdCk7CisgICAgICAgIGlmICghb3Jp
Z2luM0QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
eyB7IFdURk1vdmUoKm9yaWdpbjNEKSB9IH07CisgICAgfSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKGNvbnN0IE9yaWdpbjNERGljdCYgb3JpZ2luM0REaWN0KQogewogICAg
IHJldHVybiB7IHsgb3JpZ2luM0REaWN0LngsIG9yaWdpbjNERGljdC55LCBvcmlnaW4zRERpY3Qu
eiB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3V0
T2ZNZW1vcnlFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3V0
T2ZNZW1vcnlFcnJvci5jcHAKaW5kZXggYTNjNDk1ZjhjODQzNTczMDI5N2EyZGNkNWI2YzE3YmM0
ZjVhZWI2ZS4uMDhkNGYxODE0NjdlZjkwZTEwMWU1Yzc3YjA3YWJkMDllYzA5OTU3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPdXRPZk1lbW9yeUVy
cm9yLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVPdXRPZk1lbW9yeUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJy
b3ImIG91dE9mTWVtb3J5RXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9IH07Cit9CisKIFJlZlB0
cjxQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE91dE9mTWVtb3J5RXJyb3ImIG91dE9mTWVtb3J5
RXJyb3IpCiB7CiAgICAgcmV0dXJuIHsgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3I6OmNy
ZWF0ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
UGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKaW5kZXggYWJiOGE4Yzk0NmZiYzAzZGE0
MTFkMjQ5M2YwY2M5NDJhNzBjMGMyNi4uZWVhYzgzM2NlZWU1YzkxODYzZDg5MmU1MmM2ZjExMWU1
ODA4ZTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBp
cGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcApAQCAtMjksMTAgKzI5LDI3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JC
YXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIHBpcGVsaW5l
RGVzY3JpcHRvckJhc2UpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihwaXBlbGlu
ZURlc2NyaXB0b3JCYXNlKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgV2ViR1BVSWRlbnRpZmllciBsYXlvdXQ7CisgICAgaWYgKHBpcGVsaW5l
RGVzY3JpcHRvckJhc2UubGF5b3V0KSB7CisgICAgICAgIGxheW91dCA9IGNvbnZlcnRUb0JhY2tp
bmcoKnBpcGVsaW5lRGVzY3JpcHRvckJhc2UubGF5b3V0KTsKKyAgICAgICAgaWYgKCFsYXlvdXQp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqYmFzZSksIGxheW91dCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlJiBwaXBlbGlu
ZURlc2NyaXB0b3JCYXNlKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhz
dGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHBpcGVsaW5lRGVzY3JpcHRv
ckJhc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQ
aXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKaW5kZXggZDdhMjgyMTBmODE0OTFm
ODQxYTVmMDIwMGYwYjZkNTJjZjMyNzY1MC4uODI5MmUzMDg0MjY2ZDQ0NTA3ZWUzY2EwZWMyYTIy
YzY1Yjk3OTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwy
OSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlv
dXREZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0
aW9uYWw8UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlw
dG9yJiBwaXBlbGluZUxheW91dERlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVy
dFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRv
ckJhc2UmPihwaXBlbGluZUxheW91dERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4g
YmluZEdyb3VwTGF5b3V0czsKKyAgICBiaW5kR3JvdXBMYXlvdXRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8gYmFja2luZ0JpbmRHcm91cExheW91dCA6IHBpcGVsaW5lTGF5b3V0RGVz
Y3JpcHRvci5iaW5kR3JvdXBMYXlvdXRzKSB7CisgICAgICAgIGF1dG8gZW50cnkgPSBjb252ZXJ0
VG9CYWNraW5nKGJhY2tpbmdCaW5kR3JvdXBMYXlvdXQpOworICAgICAgICBpZiAoIWVudHJ5KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYmluZEdyb3VwTGF5b3V0
cy51bmNoZWNrZWRBcHBlbmQoZW50cnkpOworICAgIH0KKworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqYmFzZSksIFdURk1vdmUoYmluZEdyb3VwTGF5b3V0cykgfSB9OworfQorCiBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImIHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252
ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihw
aXBlbGluZUxheW91dERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwCmluZGV4IGRiNWE5M2RiMTdjZDkxZmMy
Y2Q0MzU5MDM1MzFiOTBmMzAwMWJmYTguLjA2ZTk1YWZiZGRhODBhZGVhNjBiNjYzNDNmMDgwYzVm
NTBjMTFjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQ
cmltaXRpdmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVByaW1pdGl2ZVN0YXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFByaW1pdGl2ZVN0YXRlPiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UHJpbWl0
aXZlU3RhdGUmIHByaW1pdGl2ZVN0YXRlKQoreworICAgIHJldHVybiB7IHsgcHJpbWl0aXZlU3Rh
dGUudG9wb2xvZ3ksIHByaW1pdGl2ZVN0YXRlLnN0cmlwSW5kZXhGb3JtYXQsIHByaW1pdGl2ZVN0
YXRlLmZyb250RmFjZSwgcHJpbWl0aXZlU3RhdGUuY3VsbE1vZGUsIHByaW1pdGl2ZVN0YXRlLnVu
Y2xpcHBlZERlcHRoIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UHJpbWl0
aXZlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBQcmltaXRpdmVTdGF0ZSYgcHJpbWl0aXZlU3RhdGUpCiB7CiAgICAgcmV0dXJuIHsgeyBw
cmltaXRpdmVTdGF0ZS50b3BvbG9neSwgcHJpbWl0aXZlU3RhdGUuc3RyaXBJbmRleEZvcm1hdCwg
cHJpbWl0aXZlU3RhdGUuZnJvbnRGYWNlLCBwcmltaXRpdmVTdGF0ZS5jdWxsTW9kZSwgcHJpbWl0
aXZlU3RhdGUudW5jbGlwcGVkRGVwdGggfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5jcHAKaW5kZXggNmJjMzM1ZmYx
ZDg0MjE2ZWUwNzE0M2E4ZTVkNWU3YTIyNDAyMWZmMC4uODlkMzhmNmU4ZmYwMDA1MTIwNTEyMDE5
NzU2M2QxNTRkMjMwOTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwCkBAIC0yOSwxMyArMjksMjMgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UHJvZ3JhbW1h
YmxlU3RhZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSYgcHJvZ3JhbW1hYmxlU3RhZ2UpCit7Cisg
ICAgYXV0byBtb2R1bGUgPSBjb252ZXJ0VG9CYWNraW5nKHByb2dyYW1tYWJsZVN0YWdlLm1vZHVs
ZSk7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7IG1vZHVsZSwgcHJvZ3JhbW1hYmxlU3RhZ2UuZW50cnlQb2ludCwgcHJvZ3Jh
bW1hYmxlU3RhZ2UuY29uc3RhbnRzIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6UHJvZ3JhbW1hYmxlU3RhZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBQcm9ncmFtbWFibGVTdGFnZSYgcHJvZ3JhbW1hYmxlU3RhZ2UpCiB7
Ci0gICAgYXV0byBtb2R1bGUgPSBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcocHJvZ3Jh
bW1hYmxlU3RhZ2UubW9kdWxlKTsKKyAgICBhdXRvKiBtb2R1bGUgPSBjb252ZXJ0U2hhZGVyTW9k
dWxlRnJvbUJhY2tpbmcocHJvZ3JhbW1hYmxlU3RhZ2UubW9kdWxlKTsKICAgICBpZiAoIW1vZHVs
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcAppbmRleCAz
YThlMzcxYzU1ZjY4ZTcyYjU1YWQ1ZDM2YjdjMGVjYzdjMmIzNmZiLi5hMDc2MTgyMzEzOWUyOTJm
MDUwNmQ3ZGZlNmJhNjdjNWI5MDkxNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5
LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldERl
c2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25h
bDxRdWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3ImIHF1ZXJ5U2V0RGVz
Y3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0
PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHF1ZXJ5U2V0RGVzY3Jp
cHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHF1ZXJ5U2V0RGVzY3JpcHRvci50eXBlLCBx
dWVyeVNldERlc2NyaXB0b3IuY291bnQsIHF1ZXJ5U2V0RGVzY3JpcHRvci5waXBlbGluZVN0YXRp
c3RpY3MgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2Ny
aXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBRdWVyeVNldERlc2NyaXB0b3ImIHF1ZXJ5U2V0RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJh
c2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRv
ckJhc2UmPihxdWVyeVNldERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcAppbmRl
eCAwN2RlOTJlYzE2ZTQxMDI3ZWVhM2QxYjZiNjQ2OTczZWVmNGI4YTZjLi5jOWExNzliMjUxM2Y2
NWZkNTczMGJjMjYxNWU1YTBkYmVmOTU3N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuY3BwCkBA
IC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAorc3RkOjpvcHRpb25hbDxSZW5kZXJCdW5kbGVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
RGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBj
b252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNj
cmlwdG9yQmFzZSY+KHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJh
c2UpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVz
Y3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpCiB7CiAg
ICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVj
dERlc2NyaXB0b3JCYXNlJj4ocmVuZGVyQnVuZGxlRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5k
bGVFbmNvZGVyRGVzY3JpcHRvci5jcHAKaW5kZXggMjY3NDFlMmIxZmYzYmJiMzM3M2M0OTdlMDg1
ZWExYzIyMzUwYzhhYi4uYTgzZWI5MjdiMzNiNWQ1ODZlYjgwZjRlNjZkYzE4NmUxYTk4ZDE4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRs
ZUVuY29kZXJEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVu
Y29kZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6
b3B0aW9uYWw8UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVF
bmNvZGVyRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IpCit7CisgICAg
YXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0xheW91dCY+KHJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKSk7Cisg
ICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpiYXNlKSwgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuZGVwdGhS
ZWFkT25seSwgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3Iuc3RlbmNpbFJlYWRPbmx5IH0g
fTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRl
c2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRW5jb2RlckRl
c2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19j
YXN0PGNvbnN0IFJlbmRlclBhc3NMYXlvdXQmPihyZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY3BwCmluZGV4IDM4ODczOGI1MDlhYTRiNzE3
NTcwODg3ZDA5NTI5OGNiNmRmNDI5YjIuLmM0NzUwYmY3ZjVlNjBkZjY5ZjY0NjYyNzQ5ZTg0NzUz
ZWEwYWMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5jcHAKQEAgLTI5LDEzICsyOSw0
MyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50JiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KQoreworICAgIGF1dG8gdmlldyA9IGNv
bnZlcnRUb0JhY2tpbmcocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC52aWV3KTsKKyAgICBpZiAo
IXZpZXcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJHUFVJZGVudGlm
aWVyIHJlc29sdmVUYXJnZXQ7CisgICAgaWYgKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQucmVz
b2x2ZVRhcmdldCkgeworICAgICAgICByZXNvbHZlVGFyZ2V0ID0gY29udmVydFRvQmFja2luZygq
cmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5yZXNvbHZlVGFyZ2V0KTsKKyAgICAgICAgaWYgKCFy
ZXNvbHZlVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBhdXRvIGxvYWRWYWx1ZSA9IFdURjo6c3dpdGNoT24ocmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudC5sb2FkVmFsdWUsIFtdIChQQUw6OldlYkdQVTo6TG9hZE9wIGxvYWRPcCkgLT4gc3RkOjpv
cHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJsZT4s
IENvbG9yRGljdD4+IHsKKyAgICAgICAgcmV0dXJuIHsgeyBsb2FkT3AgfSB9OworICAgIH0sIFtd
IChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFy
aWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgQ29sb3JEaWN0Pj4gewor
ICAgICAgICByZXR1cm4geyB7IHZlY3RvciB9IH07CisgICAgfSwgW3RoaXNdIChjb25zdCBQQUw6
OldlYkdQVTo6Q29sb3JEaWN0JiBjb2xvckRpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJp
YW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+PiB7Cisg
ICAgICAgIGF1dG8gYmFja2luZ0NvbG9yRGljdCA9IGNvbnZlcnRUb0JhY2tpbmcoY29sb3JEaWN0
KTsKKyAgICAgICAgaWYgKCFiYWNraW5nQ29sb3JEaWN0KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYWNraW5nQ29sb3JEaWN0
KSB9IH07CisgICAgfSk7CisgICAgaWYgKCFsb2FkVmFsdWUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlc29sdmVUYXJnZXQsIFdURk1vdmUo
KmxvYWRWYWx1ZSksIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuc3RvcmVPcCB9IH07Cit9CisK
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IENv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQ
YXNzQ29sb3JBdHRhY2htZW50JiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KQogewotICAgIGF1
dG8gdmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKHJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnQudmlldyk7CisgICAgYXV0byogdmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21C
YWNraW5nKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQudmlldyk7CiAgICAgaWYgKCF2aWV3KQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC01MCwxMSArODAsMTEgQEAgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDoKICAgICAgICAgcmV0dXJuIHsgeyBsb2FkT3AgfSB9OwogICAgIH0s
IFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6
OkNvbG9yRGljdD4+IHsKICAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9OwotICAgIH0sIFt0
aGlzXSAoY29uc3QgQ29sb3JEaWN0JiBvcmlnaW5Db2xvckRpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8
c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBQQUw6Oldl
YkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICBhdXRvIGNvbG9yRGljdCA9IGNvbnZlcnRGcm9t
QmFja2luZyhvcmlnaW5Db2xvckRpY3QpOwotICAgICAgICBpZiAoIWNvbG9yRGljdCkKKyAgICB9
LCBbdGhpc10gKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPHN0
ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJH
UFU6OkNvbG9yRGljdD4+IHsKKyAgICAgICAgYXV0byBiYWNraW5nQ29sb3JEaWN0ID0gY29udmVy
dEZyb21CYWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlmICghYmFja2luZ0NvbG9yRGljdCkK
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqY29sb3JEaWN0KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFja2lu
Z0NvbG9yRGljdCkgfSB9OwogICAgIH0pOwogICAgIGlmICghbG9hZFZhbHVlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5jcHAKaW5kZXggMzhjYTQyZjJkMzc2MjI4NWYyMmZmNjIwMWNiYWM0NGY4OWUxMDM5OC4uMzY2
NDFjZDY3NzY4MGM4ZmVjZjMxYmZlNjkzZjE5NTAzODEyYWFiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuY3BwCkBAIC0yOSwxMyArMjksMjMgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudCYgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCit7CisgICAg
YXV0byB2aWV3ID0gY29udmVydFRvQmFja2luZyhyZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNo
bWVudC52aWV3KTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmRlcHRoTG9hZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aFN0
b3JlT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoUmVhZE9ubHksIHJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxMb2FkVmFsdWUsIHJlbmRlclBh
c3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudC5zdGVuY2lsUmVhZE9ubHkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50JiByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCkKIHsK
LSAgICBhdXRvIHZpZXcgPSBjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhyZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudC52aWV3KTsKKyAgICBhdXRvKiB2aWV3ID0gY29udmVydFRl
eHR1cmVWaWV3RnJvbUJhY2tpbmcocmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQudmll
dyk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NE
ZXNjcmlwdG9yLmNwcAppbmRleCAwNGJkZmNhMDU3ODM5YzVhZTM5OWNiM2IwOWNiNTc2YmI5YmI2
ODBlLi42MTc2M2Y5OGJiNGZkNjk1ZWY0ZTJiMjI1ZTkxODkxNGYyOWFiOGQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVz
Y3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSw0OCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVzY3JpcHRvcj4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJl
bmRlclBhc3NEZXNjcmlwdG9yJiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJh
c2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmpl
Y3REZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPFJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CisgICAgY29sb3JBdHRhY2htZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVu
dHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IHJlbmRl
clBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMpIHsKKyAgICAgICAgYXV0byBiYWNraW5n
Q29sb3JBdHRhY2htZW50ID0gY29udmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQpOworICAg
ICAgICBpZiAoIWJhY2tpbmdDb2xvckF0dGFjaG1lbnQpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICBjb2xvckF0dGFjaG1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZN
b3ZlKCpiYWNraW5nQ29sb3JBdHRhY2htZW50KSk7CisgICAgfQorCisgICAgYXV0byBkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50PiB7CisgICAgICAgIGlmIChyZW5kZXJQYXNzRGVzY3JpcHRvci5k
ZXB0aFN0ZW5jaWxBdHRhY2htZW50KQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0JhY2tp
bmcoKnJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpOworICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAgaWYgKHJlbmRlclBhc3NEZXNj
cmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgJiYgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG9j
Y2x1c2lvblF1ZXJ5U2V0OworICAgIGlmIChyZW5kZXJQYXNzRGVzY3JpcHRvci5vY2NsdXNpb25R
dWVyeVNldCkgeworICAgICAgICBvY2NsdXNpb25RdWVyeVNldCA9IGNvbnZlcnRUb0JhY2tpbmco
KnJlbmRlclBhc3NEZXNjcmlwdG9yLm9jY2x1c2lvblF1ZXJ5U2V0KTsKKyAgICAgICAgaWYgKCFv
Y2NsdXNpb25RdWVyeVNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorCisgICAgYXV0byB0aW1lc3RhbXBXcml0ZXMgPSBjb252ZXJ0VG9CYWNraW5nKHJlbmRlclBh
c3NEZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYgKCF0aW1lc3RhbXBXcml0ZXMp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUo
KmJhc2UpLCBXVEZNb3ZlKGNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQpLCBvY2NsdXNpb25RdWVyeVNldCwgV1RGTW92ZSgqdGltZXN0YW1wV3JpdGVzKSB9
IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9y
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVu
ZGVyUGFzc0Rlc2NyaXB0b3ImIHJlbmRlclBhc3NEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFz
ZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9y
QmFzZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHAKaW5kZXggZGI0ODcxZjBi
NTk4OTRhMGU4ZTY2N2FlOGI5NDZiYzczNzkyNjE2Ny4uYzBlOGI3MmUyZmQxNDg4Yjc2NjFmZGUy
M2FmMjNhZjQ2YmZjZjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0xh
eW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQmIHJlbmRlclBhc3NMYXlvdXQpCit7CisgICAgYXV0
byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6
T2JqZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJQYXNzTGF5b3V0KSk7CisgICAgaWYgKCFiYXNl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYXNlKSwgcmVuZGVyUGFzc0xheW91dC5jb2xvckZvcm1hdHMsIHJlbmRlclBhc3NMYXlvdXQu
ZGVwdGhTdGVuY2lsRm9ybWF0LCByZW5kZXJQYXNzTGF5b3V0LnNhbXBsZUNvdW50IH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NMYXlv
dXQmIHJlbmRlclBhc3NMYXlvdXQpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4ocmVuZGVyUGFzc0xh
eW91dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCmluZGV4IDE2ODQ3ZDE1MzM5YzQy
NjBmNGE4NWM2ZWI1YmYwOGJjOGE0OGFmODYuLjJiNjFjYjNkMTVhMzg4NzYzZDljMmUwMzhjNzZm
MmQwY2ZiNDY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5jcHAKQEAgLTI5LDEwICsy
OSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c1RpbWVzdGFtcFdyaXRlcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6
Om9wdGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NUaW1lc3Rh
bXBXcml0ZSYgcmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlKQoreworICAgIGF1dG8gcXVlcnlTZXQg
PSBjb252ZXJ0VG9CYWNraW5nKHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNldCk7Cisg
ICAgaWYgKCFxdWVyeVNldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJl
dHVybiB7IHsgcXVlcnlTZXQsIHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeUluZGV4LCBy
ZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUubG9jYXRpb24gfSB9OworfQorCitzdGQ6Om9wdGlvbmFs
PFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXM+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVz
JiByZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzKQoreworICAgIFZlY3RvcjxSZW5kZXJQYXNzVGlt
ZXN0YW1wV3JpdGU+IHRpbWVzdGFtcFdyaXRlczsKKyAgICB0aW1lc3RhbXBXcml0ZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShyZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLnNpemUoKSk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiB0aW1lc3RhbXBXcml0ZSA6IHJlbmRlclBhc3NUaW1lc3RhbXBXcml0
ZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSA9IGNvbnZlcnRUb0Jh
Y2tpbmcodGltZXN0YW1wV3JpdGUpOworICAgICAgICBpZiAoIWNvbnZlcnRlZFRpbWVzdGFtcFdy
aXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdGltZXN0YW1w
V3JpdGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSkp
OworICAgIH0KKyAgICByZXR1cm4gdGltZXN0YW1wV3JpdGVzOworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGU+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQYXNzVGltZXN0YW1wV3Jp
dGUmIHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZSkKIHsKICAgICBhdXRvKiBxdWVyeVNldCA9IGNv
bnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNl
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCmluZGV4IGYzMWM0NmYwNWZhMTg2YjcyZGNk
YzcwNWI4MTY4MjY0MGY5NzJmNDguLjAxZDkwYzhhMTc5ZjAzMGI5OTEyZDNlZmJmOTYyMzkzMGQz
MjgxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksNTMgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFs
PFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYg
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0Jh
Y2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJh
c2UmPihyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHZlcnRleCA9IGNvbnZlcnRUb0JhY2tp
bmcocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleCk7CisgICAgaWYgKCF2ZXJ0ZXgpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFByaW1pdGl2
ZVN0YXRlPiBwcmltaXRpdmU7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5wcmlt
aXRpdmUpIHsKKyAgICAgICAgcHJpbWl0aXZlID0gY29udmVydFRvQmFja2luZygqcmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLnByaW1pdGl2ZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFs
PERlcHRoU3RlbmNpbFN0YXRlPiBkZXB0aFN0ZW5jaWw7CisgICAgaWYgKHJlbmRlclBpcGVsaW5l
RGVzY3JpcHRvci5kZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udmVy
dFRvQmFja2luZygqcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbCk7CisgICAg
ICAgIGlmICghZGVwdGhTdGVuY2lsKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IG11bHRpc2FtcGxl
OworICAgIGlmIChyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubXVsdGlzYW1wbGUpIHsKKyAgICAg
ICAgbXVsdGlzYW1wbGUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0
b3IubXVsdGlzYW1wbGUpOworICAgICAgICBpZiAoIW11bHRpc2FtcGxlKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGZyYWdtZW50ID0gKFsmXSAo
KSAtPiBzdGQ6Om9wdGlvbmFsPEZyYWdtZW50U3RhdGU+IHsKKyAgICAgICAgaWYgKHJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9C
YWNraW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZnJhZ21lbnQpOworICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5mcmFnbWVudCAmJiAhZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCp2ZXJ0ZXgpLCBXVEZN
b3ZlKHByaW1pdGl2ZSksIFdURk1vdmUoZGVwdGhTdGVuY2lsKSwgV1RGTW92ZShtdWx0aXNhbXBs
ZSksIFdURk1vdmUoZnJhZ21lbnQpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IFBpcGVsaW5lRGVzY3JpcHRvckJhc2UmPihyZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKaW5kZXggZmYxNGU3OTgyYzQ0M2Ix
YzQwZTJlMGMwOTc4YjcxYWQ3NDE3ZTc2Ni4uYjIyYjFiZmY1ZTRkZmVjNDZhZGNlZTNjNzFmNDlj
MDliNmJjYzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRp
b25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVx
dWVzdEFkYXB0ZXJPcHRpb25zPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiByZXF1ZXN0QWRh
cHRlck9wdGlvbnMpCit7CisgICAgcmV0dXJuIHsgeyByZXF1ZXN0QWRhcHRlck9wdGlvbnMucG93
ZXJQcmVmZXJlbmNlLCByZXF1ZXN0QWRhcHRlck9wdGlvbnMuZm9yY2VGYWxsYmFja0FkYXB0ZXIg
fSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlv
bnM+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBS
ZXF1ZXN0QWRhcHRlck9wdGlvbnMmIHJlcXVlc3RBZGFwdGVyT3B0aW9ucykKIHsKICAgICByZXR1
cm4geyB7IHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5wb3dlclByZWZlcmVuY2UsIHJlcXVlc3RBZGFw
dGVyT3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlciB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcApp
bmRleCAzOTg0Mjc0OTRiNDU1ODgxYjM0NWI3NDAzNjEwZDg3MDJmMjdjZjQ4Li45ZjFlYWZkZmVj
NDY3ZDM3OGE4ZDkwMjMxMzlkNzk0NzY5OGRlOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5jcHAKQEAg
LTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
U2FtcGxlckJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAor
c3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJCaW5kaW5nTGF5
b3V0JiBzYW1wbGVyQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1cm4geyB7IHNhbXBsZXJCaW5k
aW5nTGF5b3V0LnR5cGUgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTYW1w
bGVyQmluZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21C
YWNraW5nKGNvbnN0IFNhbXBsZXJCaW5kaW5nTGF5b3V0JiBzYW1wbGVyQmluZGluZ0xheW91dCkK
IHsKICAgICByZXR1cm4geyB7IHNhbXBsZXJCaW5kaW5nTGF5b3V0LnR5cGUgfSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRv
ci5jcHAKaW5kZXggY2Y2NGFhZDBmZjNjYjFlMDI1MGM3MWY0NDIyYmM3MGE2MmI1NmEzNC4uZjI3
MWZiZTZlZjhhNzZjYzNiNDJhM2I0YmU3YmZmZTkxMzgyOWFhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCkBA
IC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVNhbXBsZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0
ZDo6b3B0aW9uYWw8U2FtcGxlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTYW1wbGVyRGVzY3JpcHRvciYgc2Ft
cGxlckRlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihzYW1wbGVy
RGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHNhbXBsZXJEZXNjcmlwdG9yLmFk
ZHJlc3NNb2RlVSwgc2FtcGxlckRlc2NyaXB0b3IuYWRkcmVzc01vZGVWLCBzYW1wbGVyRGVzY3Jp
cHRvci5hZGRyZXNzTW9kZVcsIHNhbXBsZXJEZXNjcmlwdG9yLm1hZ0ZpbHRlciwgc2FtcGxlckRl
c2NyaXB0b3IubWluRmlsdGVyLCBzYW1wbGVyRGVzY3JpcHRvci5taXBtYXBGaWx0ZXIsIHNhbXBs
ZXJEZXNjcmlwdG9yLmxvZE1pbkNsYW1wLCBzYW1wbGVyRGVzY3JpcHRvci5sb2RNYXhDbGFtcCwg
c2FtcGxlckRlc2NyaXB0b3IuY29tcGFyZSwgc2FtcGxlckRlc2NyaXB0b3IubWF4QW5pc290cm9w
eSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9y
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2Ft
cGxlckRlc2NyaXB0b3ImIHNhbXBsZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNv
bnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+
KHNhbXBsZXJEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKaW5kZXggZjU0YWM3
ZGQ0ZmNiZWFlMTUwOGJhODc0YWMyZmM5OWQxZWNjNjdhMi4uMjZkYmQ2NzhlZWQ2OWVjN2E1MDM1
NGQ1ODdjZGRlYzZmYWNlZGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAg
KzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6
b3B0aW9uYWw8U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0
b3ImIHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRv
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJh
c2UmPihzaGFkZXJNb2R1bGVEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgc2hh
ZGVyTW9kdWxlRGVzY3JpcHRvci5jb2RlIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFNoYWRlck1vZHVsZURlc2NyaXB0b3ImIHNoYWRlck1v
ZHVsZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0
YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oc2hhZGVyTW9kdWxlRGVzY3Jp
cHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0
ZW5jaWxGYWNlU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0
ZW5jaWxGYWNlU3RhdGUuY3BwCmluZGV4IDE3YmQ4NTdjNjhlY2UwMTA0YjlhNmMyMmVlNWYyNzVh
YmJkNTQ1OWQuLjgxMTQ4OTFiMjBlYjE0YzcwMjg2MzJhYzhlMDU4ZDM0MzU4Y2FmNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VT
dGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCitzdGQ6Om9wdGlvbmFsPFN0ZW5jaWxGYWNlU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0
YXRlJiBzdGVuY2lsRmFjZVN0YXRlKQoreworICAgIHJldHVybiB7IHsgc3RlbmNpbEZhY2VTdGF0
ZS5jb21wYXJlLCBzdGVuY2lsRmFjZVN0YXRlLmZhaWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5kZXB0
aEZhaWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5wYXNzT3AgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU3RlbmNpbEZhY2VTdGF0ZSYgc3RlbmNpbEZhY2VT
dGF0ZSkKIHsKICAgICByZXR1cm4geyB7IHN0ZW5jaWxGYWNlU3RhdGUuY29tcGFyZSwgc3RlbmNp
bEZhY2VTdGF0ZS5mYWlsT3AsIHN0ZW5jaWxGYWNlU3RhdGUuZGVwdGhGYWlsT3AsIHN0ZW5jaWxG
YWNlU3RhdGUucGFzc09wIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKaW5k
ZXggYjNhNmYwMjljYjgzNTYzOGY1YTEyZmU0OTcxN2JjMjY3NzA5NjY2NC4uMmRjZThiZWUzZThi
OWY1ZjBhMzE4MTQ4MmIzNzlkNjk2MzY2YWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xh
eW91dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5
b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0JiBzdG9yYWdlVGV4dHVyZUJpbmRp
bmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQu
YWNjZXNzLCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuZm9ybWF0LCBzdG9yYWdlVGV4dHVy
ZUJpbmRpbmdMYXlvdXQudmlld0RpbWVuc2lvbiB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5n
Q29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xh
eW91dCYgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0KQogewogICAgIHJldHVybiB7IHsgc3Rv
cmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmFjY2Vzcywgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5
b3V0LmZvcm1hdCwgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LnZpZXdEaW1lbnNpb24gfSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRl
ZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0
ZWRGZWF0dXJlcy5jcHAKaW5kZXggZDBkNmRjMmMzYTZmNmI1NDg2YWE1OWRjN2JkNmM2NDQ1NTJj
Yjk0MS4uMjUxOGJmNDNhZDBlMDkwMjRjNjRjZWI1NjE2MDNlNGY3MjBjNzAwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVy
ZXMuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkRmVhdHVyZXM+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0
dXJlcyYgc3VwcG9ydGVkRmVhdHVyZXMpCit7CisgICAgcmV0dXJuIHsgeyBzdXBwb3J0ZWRGZWF0
dXJlcy5mZWF0dXJlcygpIH0gfTsKK30KKwogUmVmUHRyPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRG
ZWF0dXJlcz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFN1cHBvcnRlZEZlYXR1cmVzJiBzdXBwb3J0ZWRGZWF0dXJlcykKIHsKICAgICByZXR1cm4g
eyBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0ZShzdXBwb3J0ZWRGZWF0dXJl
cy5mZWF0dXJlcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVTdXBwb3J0ZWRMaW1pdHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVN1cHBvcnRlZExpbWl0cy5jcHAKaW5kZXggOGUyYzA0MWY5YzA2M2IxM2UwOWEzNzVlMDY1
ZmU5ZmYxYjYwODY1Yi4uNjA4NzQzMDJlOTNhNzc4ZDY0ZjE1NTQ1ZmNmZTUxY2RlYzY4YmNlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExp
bWl0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRl
ZExpbWl0cy5jcHAKQEAgLTI5LDEwICsyOSw0MyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkTGltaXRzPiBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiBzdXBwb3J0ZWRMaW1pdHMpCit7CisgICAgcmV0dXJuIHsgeworICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFEKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRl
eHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFy
cmF5TGF5ZXJzKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhCaW5kR3JvdXBzKCksCisg
ICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGlu
ZUxheW91dCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZm
ZXJzUGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBs
ZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhT
YW1wbGVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9y
YWdlQnVmZmVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhT
dG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFZlcnRleEJ1ZmZlcnMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZl
cnRleEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZl
ckFycmF5U3RyaWRlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhJbnRlclN0YWdlU2hh
ZGVyQ29tcG9uZW50cygpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtn
cm91cFN0b3JhZ2VTaXplKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52
b2NhdGlvbnNQZXJXb3JrZ3JvdXAoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1
dGVXb3JrZ3JvdXBTaXplWCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdv
cmtncm91cFNpemVZKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVooKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBz
UGVyRGltZW5zaW9uKCksCisgICAgfSB9OworfQorCiBSZWZQdHI8UEFMOjpXZWJHUFU6OlN1cHBv
cnRlZExpbWl0cz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5n
KGNvbnN0IFN1cHBvcnRlZExpbWl0cyYgc3VwcG9ydGVkTGltaXRzKQogewogICAgIHJldHVybiB7
IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM6OmNyZWF0ZSgKQEAgLTYxLDcgKzk0LDggQEAg
UmVmUHRyPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+IENvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRGcm9tQmFja2kKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1
dGVXb3JrZ3JvdXBTaXplWCwKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3Jr
Z3JvdXBTaXplWSwKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWiwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGlt
ZW5zaW9uKSB9OworICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQ
ZXJEaW1lbnNpb24KKyAgICApIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5
b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlQmluZGlu
Z0xheW91dC5jcHAKaW5kZXggNTVkNDUxMzBmNTM1ZDFkNGVhOTAwN2IyZGMxNjFiYWE3MzdiMDk1
Ni4uOTk1NGJiNzdiMmVkNzVjNGE3MGMyNDQxZjc0MjQ4MmMzZWZmNGNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdM
YXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8VGV4dHVyZUJpbmRpbmdMYXlvdXQ+IENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0
dXJlQmluZGluZ0xheW91dCYgdGV4dHVyZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsg
eyB0ZXh0dXJlQmluZGluZ0xheW91dC5zYW1wbGVUeXBlLCB0ZXh0dXJlQmluZGluZ0xheW91dC52
aWV3RGltZW5zaW9uLCB0ZXh0dXJlQmluZGluZ0xheW91dC5tdWx0aXNhbXBsZWQgfSB9OworfQor
CiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFRleHR1cmVCaW5k
aW5nTGF5b3V0JiB0ZXh0dXJlQmluZGluZ0xheW91dCkKIHsKICAgICByZXR1cm4geyB7IHRleHR1
cmVCaW5kaW5nTGF5b3V0LnNhbXBsZVR5cGUsIHRleHR1cmVCaW5kaW5nTGF5b3V0LnZpZXdEaW1l
bnNpb24sIHRleHR1cmVCaW5kaW5nTGF5b3V0Lm11bHRpc2FtcGxlZCB9IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNw
cAppbmRleCA1ZGYzMTY3YjlhNmQyMmIyMmRhNmE4NGQ4ZjRkYzM0NDkxNDliMGE5Li5iZjZiNGQz
NTYyZTcwNzhhMWE0ZTU0YWNkZWRjMDVkOTBkNWYxZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKQEAgLTI5
LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpv
cHRpb25hbDxUZXh0dXJlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVEZXNjcmlwdG9yJiB0ZXh0dXJl
RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19j
YXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVEZXNj
cmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgYXV0byBzaXplID0gY29udmVydFRvQmFja2luZyh0ZXh0dXJlRGVzY3JpcHRvci5zaXpl
KTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4dHVyZURlc2NyaXB0
b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291bnQsIHRleHR1cmVE
ZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0LCB0ZXh0dXJlRGVz
Y3JpcHRvci51c2FnZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1
cmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgVGV4dHVyZURlc2NyaXB0b3ImIHRleHR1cmVEZXNjcmlwdG9yKQogewogICAgIGF1
dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNj
cmlwdG9yQmFzZSY+KHRleHR1cmVEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCmlu
ZGV4IGQxY2M1NTFjYjc3MDUxNjk2ZmU3OWRiMDRlYjQ5YTQ5NDg0YjQ2MDcuLjc2YWM2YTU4MWE3
ZmY2NGRmYzMwYjk4M2NiYjc0NDg3MDg0NjU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCkBA
IC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPFRleHR1cmVWaWV3RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVz
Y3JpcHRvciYgdGV4dHVyZVZpZXdEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZl
cnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0
b3JCYXNlJj4odGV4dHVyZVZpZXdEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwg
dGV4dHVyZVZpZXdEZXNjcmlwdG9yLmZvcm1hdCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmRpbWVu
c2lvbiwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmFzcGVjdCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmJhc2VNaXBMZXZlbCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLm1pcExldmVsQ291bnQsIHRleHR1
cmVWaWV3RGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmFy
cmF5TGF5ZXJDb3VudCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1
cmVWaWV3RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21C
YWNraW5nKGNvbnN0IFRleHR1cmVWaWV3RGVzY3JpcHRvciYgdGV4dHVyZVZpZXdEZXNjcmlwdG9y
KQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25z
dCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVWaWV3RGVzY3JpcHRvcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZhbGlkYXRpb25FcnJvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNw
cAppbmRleCAyYjFiY2ZhZDA0MzgyN2U5NDViMjVkNGVhMDI1MjdjNjQwYjk2OGE0Li4wNjIyNmU1
ZjQ5YzQ2MTVlYTVhNGU3ZWUzMmZhYmNiOGFmMzE0NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcApAQCAtMjksMTAg
KzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVWYWxpZGF0
aW9uRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25h
bDxWYWxpZGF0aW9uRXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3ImIHZhbGlkYXRpb25FcnJvcikK
K3sKKyAgICByZXR1cm4geyB7IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlKCkgfSB9OworfQorCiBS
ZWZQdHI8UEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcj4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFZhbGlkYXRpb25FcnJvciYgdmFsaWRhdGlv
bkVycm9yKQogewogICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3I6OmNy
ZWF0ZSh2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKaW5kZXggMTVlZDVkYjY5
M2UwMzVkZWMwMDA3MDhhNTg0OGQwNTNjMDZmMzlmZS4uYzcxOGJlMTU0MWU5N2EyZWNlZDNjMjE0
N2ZiM2E3MDA4ZTAxNWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVmVydGV4QXR0cmlidXRlLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8VmVydGV4QXR0cmlidXRl
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6VmVydGV4QXR0cmlidXRlJiB2ZXJ0ZXhBdHRyaWJ1dGUpCit7CisgICAgcmV0dXJuIHsg
eyB2ZXJ0ZXhBdHRyaWJ1dGUuZm9ybWF0LCB2ZXJ0ZXhBdHRyaWJ1dGUub2Zmc2V0LCB2ZXJ0ZXhB
dHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24gfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpWZXJ0ZXhBdHRyaWJ1dGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIHZlcnRleEF0dHJpYnV0ZSkKIHsKICAg
ICByZXR1cm4geyB7IHZlcnRleEF0dHJpYnV0ZS5mb3JtYXQsIHZlcnRleEF0dHJpYnV0ZS5vZmZz
ZXQsIHZlcnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiB9IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCmlu
ZGV4IDg1NDgyZDA2NWFlYTVmOGI2NzJlNzQ2MTc4ZjZkOGNkZjIxYzcwNzEuLjU2YWY1YmUxYjEx
MmNmMWQ0NWE2ZDYwZmY4YzEwYmQyNzkzODBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCkBAIC0yOSwx
MCArMjksMjUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVZlcnRl
eEJ1ZmZlckxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPFZlcnRleEJ1ZmZlckxheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleEJ1ZmZlckxheW91dCYgdmVydGV4
QnVmZmVyTGF5b3V0KQoreworICAgIFZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CisgICAgYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZlcnRleEJ1ZmZlckxheW91
dC5hdHRyaWJ1dGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiB2
ZXJ0ZXhCdWZmZXJMYXlvdXQuYXR0cmlidXRlcykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZEF0
dHJpYnV0ZSA9IGNvbnZlcnRUb0JhY2tpbmcoYXR0cmlidXRlKTsKKyAgICAgICAgaWYgKCFjb252
ZXJ0ZWRBdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBhdHRyaWJ1dGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRBdHRyaWJ1dGUp
KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IHZlcnRleEJ1ZmZlckxheW91dC5hcnJheVN0cmlk
ZSwgdmVydGV4QnVmZmVyTGF5b3V0LnN0ZXBNb2RlLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpIH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VmVydGV4QnVmZmVyTGF5b3V0PiBDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVmVydGV4QnVm
ZmVyTGF5b3V0JiB2ZXJ0ZXhCdWZmZXJMYXlvdXQpCiB7CiAgICAgVmVjdG9yPFBBTDo6V2ViR1BV
OjpWZXJ0ZXhBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVZlcnRleFN0YXRlLmNwcAppbmRleCAzYjI0MjgxNzI5ZWZjYWZjODky
NzlhNjVhNDAzN2M5OTUyMDAyOGY2Li5iN2VlZWRjOGNmNzE5NDE0ODIzYWY3MGZiY2FkMjliNDY5
OTI1Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVy
dGV4U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0
ZXhTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwzMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxWZXJ0ZXhTdGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleFN0YXRlJiB2ZXJ0ZXhT
dGF0ZSkKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNv
bnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSY+KHZlcnRleFN0YXRlKSk7CisgICAg
aWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPHN0
ZDo6b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0Pj4gYnVmZmVyczsKKyAgICBidWZmZXJzLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkodmVydGV4U3RhdGUuYnVmZmVycy5zaXplKCkpOworICAgIGZv
ciAoY29uc3QgYXV0byYgYnVmZmVyIDogdmVydGV4U3RhdGUuYnVmZmVycykgeworICAgICAgICBp
ZiAoYnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IGNvbnZlcnRU
b0JhY2tpbmcoKmJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYnVmZmVycy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShjb252ZXJ0ZWRCdWZmZXIpKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBidWZmZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om51bGxvcHQpOworICAg
IH0KKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUoYnVmZmVycykgfSB9
OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpWZXJ0ZXhTdGF0ZT4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFZlcnRleFN0YXRlJiB2
ZXJ0ZXhTdGF0ZSkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3QgUHJvZ3JhbW1hYmxlU3RhZ2UmPih2ZXJ0ZXhTdGF0ZSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRh
cHRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5jcHAKaW5kZXggZGE0YmQxMTBiYzM3ZmEwYWIyMjU5Zjc3
ODFmMGFjMzlmN2ZkNDE3Mi4uNTkwOGU4YmZmNGRlNzc0Y2IwOWY0OTA3MjRlYjY4YjEyM2I1NWQ3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQWRhcHRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuY3BwCkBAIC0yOCwxMyArMjgs
MTcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUFkYXB0
ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIAotUmVtb3RlQWRhcHRlclByb3h5OjpSZW1vdGVBZGFwdGVyUHJveHkoU3RyaW5nJiYg
bmFtZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBmZWF0dXJlcywgUEFMOjpXZWJH
UFU6OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVBZGFw
dGVyUHJveHk6OlJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6
U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRz
JiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJlbW90ZUdQVVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogQWRhcHRlcihXVEZNb3ZlKG5hbWUpLCBmZWF0
dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlcikKKyAgICAsIG1fYmFja2luZyhpZGVudGlm
aWVyKQogICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsOCArNDgsNDggQEAg
UmVtb3RlQWRhcHRlclByb3h5Ojp+UmVtb3RlQWRhcHRlclByb3h5KCkKIAogdm9pZCBSZW1vdGVB
ZGFwdGVyUHJveHk6OnJlcXVlc3REZXZpY2UoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkRl
dmljZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwot
ICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9y
KTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJH
UFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRl
ZEZlYXR1cmVzOworICAgIFN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHM7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUFkYXB0ZXI6OlJlcXVlc3RE
ZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpLCB7IHN1cHBvcnRlZEZlYXR1
cmVzLCBzdXBwb3J0ZWRMaW1pdHMgfSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6
OlN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0
dXJlcykpOworICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1
cHBvcnRlZExpbWl0czo6Y3JlYXRlKAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjFELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lv
bjJELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAorICAg
ICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzLAorICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4QmluZEdyb3VwcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5
bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCisgICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VmVydGV4QXR0cmlidXRlcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1
ZmZlckFycmF5U3RyaWRlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNo
YWRlckNvbXBvbmVudHMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dy
b3VwU3RvcmFnZVNpemUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2Nh
dGlvbnNQZXJXb3JrZ3JvdXAsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29y
a2dyb3VwU2l6ZVgsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U2l6ZVksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVos
CisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lv
bgorICAgICk7CisgICAgY2FsbGJhY2soUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3Zl
KHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMp
LCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJv
eHkuaAppbmRleCA4MzNiYjNlZTM1OWQxYmI4ODRiZjc5OWU5NTlhZmVhNTk0Nzc4NjM0Li45YzNk
OTU3MTVmZjQxM2RiOWM1Mzk0MjVjN2I1OTZlZmUzNjY3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVBZGFwdGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiUmVtb3RlR1BVUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNCwyMCArMzUsMjQgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworY2xhc3Mg
UmVtb3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXJQcm94eSBmaW5hbCA6IHB1Ymxp
YyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVB
ZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMs
IGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXJQcm94eT4gY3Jl
YXRlKFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYgZmVhdHVy
ZXMsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmIGxpbWl0cywgYm9vbCBpc0ZhbGxiYWNr
QWRhcHRlciwgUmVtb3RlR1BVUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVyUHJveHkoV1RG
TW92ZShuYW1lKSwgZmVhdHVyZXMsIGxpbWl0cywgaXNGYWxsYmFja0FkYXB0ZXIsIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFk
YXB0ZXJQcm94eShXVEZNb3ZlKG5hbWUpLCBmZWF0dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRh
cHRlciwgcGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgpOwogCisgICAgUmVtb3RlR1BV
UHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkm
IHJvb3QoKSB7IHJldHVybiBtX3BhcmVudDsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQWRhcHRlclBy
b3h5KFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYsIFBBTDo6
V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1l
LCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVk
TGltaXRzJiwgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlciwgUmVtb3RlR1BVUHJveHkmLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQWRhcHRl
clByb3h5KGNvbnN0IFJlbW90ZUFkYXB0ZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUFk
YXB0ZXJQcm94eShSZW1vdGVBZGFwdGVyUHJveHkmJikgPSBkZWxldGU7CkBAIC01NSwxMyArNjAs
MjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBZGFwdGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVB
ZGFwdGVyUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmco
KSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQ
Qzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVh
bUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQg
cmVxdWVzdERldmljZShjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRvciYsIFdURjo6
RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJik+JiYpIGZpbmFsOwogCiAg
ICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPik+PiBt
X2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwog
ICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKKyAgICBSZWY8UmVtb3RlR1BVUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5LmNwcAppbmRleCAzZWIxN2FmODU4M2RmN2JiZGFmYTQ2YzQ1ZTk3N2Q2MDkwNzMy
NjNhLi5lOGIwMmYxOGEzYmRlNThlZWJmZTI2YjcxYTM2MWNmYmZlY2FhYmY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwCkBAIC0yOCwxMiAr
MjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUJp
bmRHcm91cExheW91dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQmluZEdy
b3VwTGF5b3V0UHJveHk6OlJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVCaW5kR3JvdXBMYXlv
dXRQcm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikK
KyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQp
CisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHk6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpCiAKIHZv
aWQgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUJpbmRHcm91cExheW91dDo6U2V0TGFiZWwobGFi
ZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkuaAppbmRleCBhYWY5NTcwY2IwMWU1ZTE4ZDczYzk2NWE1NWNkN2M2NWFhZWIzMDdi
Li5kNDdkN2VjNzBiOGE2ZDFmOWJhMTUwNzE4NTFiYmVjN2MyZDY5YmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eT4gY3JlYXRl
KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBz
dGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNl
UHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVy
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoKTsK
IAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQor
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBh
cmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KFJlbW90
ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KGNvbnN0IFJlbW90ZUJpbmRHcm91
cExheW91dFByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHko
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQg
QEAgcHJpdmF0ZToKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSYgb3BlcmF0b3I9KFJl
bW90ZUJpbmRHcm91cExheW91dFByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRp
ZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50
Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9
CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAg
ICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRv
QmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90
ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAKaW5kZXggNzc4NDgx
ZTBmZDU4ODc2ODkzYzQyYzM1NTAwN2I3MWJmYjIwYjJlNS4uZmEwMzdiMGExYTNlY2M4YTZjOTI4
YmYyZjQ0NWY2NDQxYzk4YjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFBy
b3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
LVJlbW90ZUJpbmRHcm91cFByb3h5OjpSZW1vdGVCaW5kR3JvdXBQcm94eShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQmluZEdyb3VwUHJv
eHk6OlJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9w
YXJlbnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZUJpbmRHcm91cFBy
b3h5Ojp+UmVtb3RlQmluZEdyb3VwUHJveHkoKQogCiB2b2lkIFJlbW90ZUJpbmRHcm91cFByb3h5
OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVC
aW5kR3JvdXA6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3Vw
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUJpbmRHcm91cFByb3h5LmgKaW5kZXggNGRiZDM4MGQ4NmRhMjhkNjhlZWM0MDI5MTNiMmE4
NmFmMzE0MTMyOS4uOGRjYTEyYjhjNzE2YzIxODhlNmE4Y2U0MGE2ODM0ZmRmZjkwZjEyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQmluZEdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cFByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlQmluZEdyb3VwUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBQ
cm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3Vw
UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQmluZEdyb3VwUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cFBy
b3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJl
bnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJl
bnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQmluZEdyb3VwUHJveHkoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVCaW5kR3JvdXBQcm94eShSZW1vdGVEZXZp
Y2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVCaW5kR3JvdXBQcm94eShjb25zdCBSZW1vdGVCaW5kR3JvdXBQcm94eSYpID0g
ZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZUJpbmRHcm91cFByb3h5JiYp
ID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQmluZEdy
b3VwUHJveHkmIG9wZXJhdG9yPShSZW1vdGVCaW5kR3JvdXBQcm94eSYmKSA9IGRlbGV0ZTsKIAog
ICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsg
fQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRU
aW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9v
dCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tp
bmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7
CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmlu
ZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAg
ICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwCmlu
ZGV4IDdhMzBlYjQ2NDI1ZjU2MWYxMzc3MjhhOGU2ZmEwZWQ5Y2FhZWMyYTYuLmQ3YjFlNTBhNjll
NjhjNzIwZWExYzZlZWE0MjI3MjA4OTM2N2FiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZm
ZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlQnVmZmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
Ci1SZW1vdGVCdWZmZXJQcm94eTo6UmVtb3RlQnVmZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUJ1ZmZlclByb3h5OjpSZW1v
dGVCdWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVu
dCkKIHsKIH0KIApAQCAtNDMsNiArNDYsNyBAQCBSZW1vdGVCdWZmZXJQcm94eTo6flJlbW90ZUJ1
ZmZlclByb3h5KCkKIAogdm9pZCBSZW1vdGVCdWZmZXJQcm94eTo6bWFwQXN5bmMoUEFMOjpXZWJH
UFU6Ok1hcE1vZGVGbGFncyBtYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogeworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KICAgICBVTlVTRURfUEFSQU0obWFwTW9kZUZsYWdzKTsKICAgICBVTlVTRURf
UEFSQU0ob2Zmc2V0KTsKICAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwpAQCAtNTAsNiArNTQs
NyBAQCB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9k
ZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcAogCiBhdXRvIFJlbW90ZUJ1ZmZlclByb3h5Ojpn
ZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKSAtPiBNYXBwZWRSYW5nZQog
eworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KICAgICBVTlVTRURfUEFSQU0ob2Zmc2V0
KTsKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTU3LDE1ICs2
MiwxOSBAQCBhdXRvIFJlbW90ZUJ1ZmZlclByb3h5OjpnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldAogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5
Ojp1bm1hcCgpCiB7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgogfQogCiB2b2lkIFJl
bW90ZUJ1ZmZlclByb3h5OjpkZXN0cm95KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6OkRlc3Ryb3koKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6OlNldExhYmVs
KGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKaW5k
ZXggMjg2MmVlY2JkMjdjMmUwY2ExZThhODJlZDU5NzEwN2E2NmQwYmQ5Yy4uMWY4NTMzY2YwNjk2
NzlmMmYwNjhkOWM1ODhhMDE4NDZiMGY1YmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQ
cm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMzcsMTcgKzM4LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVCdWZmZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6
OldlYkdQVTo6QnVmZmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlclBy
b3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlclByb3h5KHBh
cmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXJQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkm
IHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3Qo
KSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJl
bW90ZUJ1ZmZlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlQnVm
ZmVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQnVmZmVyUHJveHkoY29uc3QgUmVtb3RlQnVm
ZmVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCdWZmZXJQcm94eShSZW1vdGVCdWZmZXJQ
cm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU1LDYgKzU5LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3Rl
QnVmZmVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVCdWZmZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAog
ICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsg
fQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRU
aW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9v
dCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tp
bmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7
CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBtYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9k
ZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplRm9yTWFwLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJikgZmluYWw7CiAgICAgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlNpemU2ND4pIGZpbmFsOwpAQCAtNjYsOCArODIsOSBAQCBwcml2YXRlOgogCiAgICAgRGVx
dWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4
dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+
IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuY3BwCmluZGV4IDhiYjhkNzVkYTZk
N2JjNmU5YzMzNDU5ZjQ2ZDk2ODU5YjI3Y2ViMjYuLmYzM2ZjNjMzNGI2ZDQ5MThmOWFmMWVmZTcw
MTU3ODgwZWVmZTExYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZl
clByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kQnVmZmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCi1SZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAg
OiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVt
b3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmco
aWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2
LDggQEAgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5Ojp+UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5
KCkKIAogdm9pZCBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29u
c3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRCdWZmZXI6OlNldExhYmVs
KGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkuaAppbmRleCAyNDkzYzg0NzU1ODZjOTY2OTY1YTBkYTlhYWI4YmUyN2FiMzEwMDRk
Li4zM2FjNTM0M2QwNmI4OTkzNDViMjZiYWIwMWVhMTBiZmZmMjgxNjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5k
QnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5
IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShwYXJl
bnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0g
ICAgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7Cisg
ICAgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eShjb25zdCBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5JiYpID0g
ZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ29tbWFuZEJ1
ZmZlclByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5JiYpID0gZGVsZXRl
OwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
aW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0
U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwg
YmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5j
UmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3Qg
U3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2lu
ZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHkuY3BwCmluZGV4IDA5OWM2M2Q3YzExMjZlMDFhOTRjOWQxMDdmNDMzZWUy
MjE3M2NjNDQuLmZlYTI5ZDk5MjgxNjdlMmIyYTRkZjQ1NWQ5Zjg3YWYxZjhiZjZiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwCkBAIC0yOSwx
NCArMjksMTcgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVD
b21tYW5kQnVmZmVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2Rlck1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCIKICNpbmNs
dWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAot
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQ29t
bWFuZEVuY29kZXJQcm94eTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVu
dGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDYsMTIgKzQ5LDM1
IEBAIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6On5SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
KCkKIAogUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4gUmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eTo6YmVnaW5SZW5kZXJQYXNzKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNz
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICByZXR1cm4gUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8g
Y29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVy
biBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkJl
Z2luUmVuZGVyUGFzcygqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4gUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eTo6YmVnaW5Db21wdXRlUGFzcyhjb25zdCBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+JiBkZXNjcmlwdG9yKQogewot
ICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6Y3JlYXRlKG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQpOworICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJHUFU6OkNv
bXB1dGVQYXNzRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAgICBpZiAoZGVzY3Jp
cHRvcikgeworICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvcik7CisgICAgICAgIGlmICghY29u
dmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJv
ciBoYW5kbGluZy4KKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gaWRlbnRp
ZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkJlZ2luQ29tcHV0ZVBhc3Mo
Y29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6
Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9CdWZmZXIoCkBA
IC02MSwxMSArODcsMTUgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVm
ZmVyVG9CdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwK
ICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJj
ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29u
dmVydGVkU291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNT
RVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAh
Y29udmVydGVkRGVzdGluYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpDb3B5QnVmZmVyVG9C
dWZmZXIoY29udmVydGVkU291cmNlLCBzb3VyY2VPZmZzZXQsIGNvbnZlcnRlZERlc3RpbmF0aW9u
LCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9U
ZXh0dXJlKApAQCAtNzMsOSArMTAzLDE3IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eTo6Y29weUJ1ZmZlclRvVGV4dHVyZSgKICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5
VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBj
b3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRTb3VyY2UgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0
ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAg
YXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7Cisg
ICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252
ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkNvcHlCdWZmZXJUb1RleHR1cmUo
KmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNp
emUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eTo6Y29weVRleHR1cmVUb0J1ZmZlcigKQEAgLTgzLDkgKzEyMSwx
NyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9CdWZmZXIo
CiAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYgZGVzdGluYXRpb24sCiAg
ICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURf
UEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNv
bnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFT
U0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoY29weVNpemUpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2Ug
fHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29t
bWFuZEVuY29kZXI6OkNvcHlUZXh0dXJlVG9CdWZmZXIoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZl
cnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29w
eVRleHR1cmVUb1RleHR1cmUoCkBAIC05Myw5ICsxMzksMTcgQEAgdm9pZCBSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKICAgICBjb25zdCBQQUw6OldlYkdQ
VTo6SW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sCiAgICAgY29uc3QgUEFMOjpXZWJHUFU6
OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBV
TlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7Cisg
ICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAg
YXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNv
bnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5h
dGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRD
b3B5U2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0
aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkNvcHlUZXh0
dXJlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgKmNv
bnZlcnRlZENvcHlTaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbGxCdWZmZXIoCkBAIC0xMDMsMjkg
KzE1Nyw0MiBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbGxCdWZmZXIoCiAg
ICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCwKICAgICBQQUw6OldlYkdQ
VTo6U2l6ZTY0IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBV
TlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERl
c3RpbmF0aW9uKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc3RpbmF0aW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5k
RW5jb2Rlcjo6RmlsbEJ1ZmZlcihjb252ZXJ0ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZz
ZXQsIHNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBM
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZ3JvdXBMYWJlbCk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlB1c2hEZWJ1Z0dyb3Vw
KFdURk1vdmUoZ3JvdXBMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cG9wRGVidWdHcm91cCgpCiB7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29k
ZXI6OlBvcERlYnVnR3JvdXAoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0
cmluZyYmIG1hcmtlckxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
Okluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6
OndyaXRlVGltZXN0YW1wKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFBB
TDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlT
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1
ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhxdWVy
eVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBpZiAoIWNvbnZlcnRl
ZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6V3JpdGVUaW1lc3RhbXAoY29udmVydGVk
UXVlcnlTZXQsIHF1ZXJ5SW5kZXgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cmVzb2x2ZVF1ZXJ5U2V0KApA
QCAtMTM1LDIxICsyMDIsMzYgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpyZXNv
bHZlUXVlcnlTZXQoCiAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgZGVzdGluYXRpb24s
CiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkZXN0aW5hdGlvbk9mZnNldCkKIHsKLSAgICBVTlVT
RURfUEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFF1ZXJ5KTsKLSAgICBV
TlVTRURfUEFSQU0ocXVlcnlDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsK
LSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb25PZmZzZXQpOworICAgIGF1dG8gY29udmVydGVk
UXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHF1
ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGF1dG8gY29udmVy
dGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAg
IGlmICghY29udmVydGVkUXVlcnlTZXQgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6UmVzb2x2ZVF1ZXJ5U2V0KGNvbnZlcnRlZFF1ZXJ5U2V0LCBmaXJzdFF1
ZXJ5LCBxdWVyeUNvdW50LCBjb252ZXJ0ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZzZXQp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIFJlZjxQQUw6OldlYkdQ
VTo6Q29tbWFuZEJ1ZmZlcj4gUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmluaXNoKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAg
ICByZXR1cm4gUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBo
YW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6Y3JlYXRl
KG1fcGFyZW50LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUNvbW1hbmRFbmNvZGVyOjpGaW5pc2goKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZp
ZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVt
b3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaAppbmRleCBlZDk3OGU3NjMzZGMw
YzUwZjE4Y2EwNzgyMWQxYzdjMjQ2OTNiZjg0Li44M2I1ZDBiZjA5MmZhMzYwY2I3ZTQxMDVlN2Jj
OTZlMzdiNWIyYTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQ
cm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyLmg+
CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAog
Y2xhc3MgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6Q29tbWFuZEVuY29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk+
IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0
dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBX
ZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoY29uc3Qg
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRF
bmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0
LDYgKzU4LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgb3Bl
cmF0b3I9KFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJH
UFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAK
KyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9
IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJl
YW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAg
ICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgIH0KIAogICAgIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+IGJlZ2lu
UmVuZGVyUGFzcyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Rlc2NyaXB0b3ImKSBmaW5h
bDsKICAgICBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5jb2Rlcj4gYmVnaW5Db21wdXRl
UGFzcyhjb25zdCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Rlc2NyaXB0
b3I+JikgZmluYWw7CkBAIC0xMDIsOCArMTE4LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0
TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1f
cGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcAppbmRleCAzZTJl
NWI2Yjk4ODIzZmEwYzZkOWU2NWU3Nzg3ZDU2MGEwNjgyZjUzLi43MWY2Nzk1NWFiN2Q1Njk3YWEz
YzZjMThiMDY2MzNkMDI5MmFiOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlck1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHk6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlm
aWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNDIgKzQ2LDY1IEBA
IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojp+UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
UHJveHkoKQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGlu
ZShjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJiBjb21wdXRlUGlwZWxpbmUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGNvbXB1dGVQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRD
b21wdXRlUGlwZWxpbmUgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGNvbXB1dGVQaXBlbGluZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvbXB1dGVQaXBlbGlu
ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNz
RW5jb2Rlcjo6U2V0UGlwZWxpbmUoY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5OjpkaXNwYXRjaChQQUw6OldlYkdQVTo6U2l6ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemUzMj4geSwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMy
PiB6KQogewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAg
VU5VU0VEX1BBUkFNKHopOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6RGlzcGF0Y2goeCwgeSwgeikpOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eTo6ZGlzcGF0Y2hJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVj
dEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVT
RURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNl
dCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpEaXNwYXRjaEluZGlyZWN0KGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6YmVnaW5Q
aXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5
U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0byBjb252
ZXJ0ZWRRdWVyeVNldCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcocXVlcnlTZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAgaWYgKCFj
b252ZXJ0ZWRRdWVyeVNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpCZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KGNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpFbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MoKQogewor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlcjo6RW5kUGFzcygpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAK
IHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6Oldl
YkdQVTo6SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdy
b3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWlj
T2Zmc2V0Pj4mJiBvZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldHMpOworICAgIGF1
dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOwor
ICAgIGlmICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlNl
dEJpbmRHcm91cChpbmRleCwgY29udmVydGVkQmluZEdyb3VwLCBXVEZNb3ZlKG9mZnNldHMpKSk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5k
ZXgsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKQEAgLTg3LDMxICsx
MTMsMzcgQEAgdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3Vw
KFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBjb24KICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0
IGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHluYW1p
Y09mZnNldHNEYXRhTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJy
YXlCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVu
Z3RoKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3RhcnQpOwotICAgIFVO
VVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOworICAgIGF1dG8gY29udmVydGVk
QmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhi
aW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlmICghY29u
dmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlNldEJpbmRHcm91cChp
bmRleCwgY29udmVydGVkQmluZEdyb3VwLCBWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFt
aWNPZmZzZXQ+KGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXIgKyBkeW5hbWljT2Zmc2V0c0RhdGFT
dGFydCwgZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6cHVz
aERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZ3Jv
dXBMYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyOjpQdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlBvcERlYnVnR3JvdXAo
KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNv
bXB1dGVQYXNzRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJM
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6SW5zZXJ0RGVi
dWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldExh
YmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFi
ZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJl
c3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaAppbmRleCBiYWQ0MTUzMGVj
Njg1NGFjZjcxMjUyOWZmNDUwYWI3OTcyNTQyODgyLi5kNjk4MGI4NzI0Y2NiYjY2NTU1YmUxNTJm
ZDE0ODQyYmRmNjI4NWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVDb21wdXRlUGFzc0VuY29kZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5PiBjcmVhdGUo
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHko
Y29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5KCk7CiAKKyAgICBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJl
bnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyBy
ZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAg
ICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYp
OworICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoY29uc3QgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eShSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDYgKzU4
LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmIG9wZXJh
dG9yPShSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdl
YkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAg
IAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0
ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0
cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lJikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaChQQUw6OldlYkdQVTo6U2l6
ZTMyIHgsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4geSwgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6U2l6ZTMyPikgZmluYWw7CkBAIC03OSw4ICs5NSw5IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAg
ICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRv
QmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVBy
b3h5LmNwcAppbmRleCAwZjExYmM3NDdiZjQ3YzEwODEyZTdiYTM1NjViOTllYzYzMGZiOGM3Li42
OGRjNzNkODc0N2I3NjYyYjNlMTYyODljZjE4MmEzOTYyMDUwYzk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlw
ZWxpbmVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3BwCkBAIC0yOSwxMiArMjksMTUg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OlJlbW90ZUNv
bXB1dGVQaXBlbGluZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCitSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6UmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQp
CiB7CiB9CiAKQEAgLTQ0LDEzICs0NywxNyBAQCBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6
flJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KCkKIAogUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3Jv
dXBMYXlvdXQ+IFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpnZXRCaW5kR3JvdXBMYXlvdXQo
dWludDMyX3QgaW5kZXgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICByZXR1cm4g
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQaXBl
bGluZTo6R2V0QmluZEdyb3VwTGF5b3V0KGluZGV4LCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91
dFByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50
aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGlwZWxp
bmU6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5l
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKaW5kZXggMzA5MGVhYzYwNWJlMjcwMzM2MWZmMjQy
ZDhlMWQ2ZWU2ODYzYmNkNy4uNmI3M2I5ZDYwNGQ1ODEyMmI1ZTg3Nzc4ZGNmMzk0MGJiZTlkZjQ2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZS5oPgogCkBAIC0z
NiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21w
dXRlUGlwZWxpbmUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eT4gY3Jl
YXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJv
eHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbXB1dGVQ
aXBlbGluZVByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1
cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFy
ZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVDb21wdXRlUGlw
ZWxpbmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jiwg
V2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShjb25z
dCBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5KFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5JiYpID0gZGVsZXRlOwpA
QCAtNTQsMTMgKzU4LDI2IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJv
eHkmIG9wZXJhdG9yPShSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSYmKSA9IGRlbGV0ZTsKIAog
ICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsg
fQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRU
aW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9v
dCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tp
bmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3Vs
dCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7
CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5j
KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgfQogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+
IGdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCkgZmluYWw7CiAKICAgICB2b2lkIHNl
dExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlm
aWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJH
UFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBt
X3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZp
Y2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVEZXZpY2VQcm94eS5jcHAKaW5kZXggODI5Zjg1NTU0NGYyOGY4NDBmZmMxZjAwYjFm
OTVmMTNiMDRhNmNkOS4uMmI0NGIzZTc3ZTk0ZjkxNWFlYTYyOGQ2YmU0MDM5YTE0Nzg4YmNhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlRGV2aWNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIlJlbW90ZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgiCisj
aW5jbHVkZSAiUmVtb3RlRGV2aWNlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVFeHRlcm5h
bFRleHR1cmVQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaCIK
ICNpbmNsdWRlICJSZW1vdGVRdWVyeVNldFByb3h5LmgiCkBAIC00Niw5ICs0NywxMSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVEZXZpY2VQcm94eTo6UmVtb3RlRGV2
aWNlUHJveHkoUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJlcywg
UmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVEZXZpY2VQcm94eTo6
UmVtb3RlRGV2aWNlUHJveHkoUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiBm
ZWF0dXJlcywgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBSZW1v
dGVBZGFwdGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBEZXZp
Y2UoV1RGTW92ZShmZWF0dXJlcyksIFdURk1vdmUobGltaXRzKSkKKyAgICAsIG1fYmFja2luZyhp
ZGVudGlmaWVyKQogICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNjIsMTA3ICs2
NSwyNjAgQEAgdm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6ZGVzdHJveSgpCiAKIFJlZjxQQUw6Oldl
YkdQVTo6QnVmZmVyPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQnVmZmVyKGNvbnN0IFBBTDo6
V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJB
TShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlQnVmZmVyUHJveHk6OmNyZWF0ZShtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlQnVmZmVyUHJveHk6OmNy
ZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVEZXZpY2U6OkNyZWF0ZUJ1ZmZlcigqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmll
cikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1v
dGVCdWZmZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlPiBSZW1vdGVEZXZpY2VQ
cm94eTo6Y3JlYXRlVGV4dHVyZShjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3Jp
cHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAg
ICAgICByZXR1cm4gUmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVUZXh0
dXJlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVRleHR1cmVQcm94eTo6Y3JlYXRl
KCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVm
PFBBTDo6V2ViR1BVOjpTYW1wbGVyPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcihj
b25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVTYW1wbGVyUHJveHk6
OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRl
c2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlU2Ft
cGxlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9
IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVTYW1wbGVyKCpjb252ZXJ0ZWREZXNjcmlw
dG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisg
ICAgcmV0dXJuIFJlbW90ZVNhbXBsZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpFeHRlcm5h
bFRleHR1cmU+IFJlbW90ZURldmljZVByb3h5OjppbXBvcnRFeHRlcm5hbFRleHR1cmUoY29uc3Qg
UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVFeHRlcm5hbFRl
eHR1cmVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8g
Y29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVy
biBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6SW1wb3J0RXh0ZXJu
YWxUZXh0dXJlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4gUmVtb3RlRGV2aWNl
UHJveHk6OmNyZWF0ZUJpbmRHcm91cExheW91dChjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5OjpjcmVhdGUobV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91
dFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVCaW5kR3JvdXBMYXlvdXQoKmNvbnZlcnRlZERl
c2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CisKKyAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZSgqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6Oldl
YkdQVTo6UGlwZWxpbmVMYXlvdXQ+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVQaXBlbGluZUxh
eW91dChjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3Rl
UGlwZWxpbmVMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOwor
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlw
dG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAg
ICAgIHJldHVybiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAg
IH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVh
dGVQaXBlbGluZUxheW91dCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVQaXBlbGlu
ZUxheW91dFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cD4gUmVtb3RlRGV2aWNl
UHJveHk6OmNyZWF0ZUJpbmRHcm91cChjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAg
cmV0dXJuIFJlbW90ZUJpbmRHcm91cFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRl
ZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGlu
Zy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cFByb3h5OjpjcmVhdGUoKnRoaXMsIG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOwor
ICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpD
cmVhdGVCaW5kR3JvdXAoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQmluZEdyb3Vw
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmll
cik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlPiBSZW1vdGVEZXZpY2VQcm94
eTo6Y3JlYXRlU2hhZGVyTW9kdWxlKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAg
ICByZXR1cm4gUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29u
dmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OmNyZWF0ZSgq
dGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVE
ZXZpY2U6OkNyZWF0ZVNoYWRlck1vZHVsZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmll
cikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1v
dGVTaGFkZXJNb2R1bGVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+
IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxpbmUoY29uc3QgUEFMOjpXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94
eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVD
b21wdXRlUGlwZWxpbmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlQ29tcHV0ZVBpcGVsaW5l
KCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5Ojpj
cmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQog
CiBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3Jl
YXRlUmVuZGVyUGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAg
cmV0dXJuIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29u
dmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6Y3JlYXRl
KCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZURldmljZTo6Q3JlYXRlUmVuZGVyUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50
aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4g
UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6Y3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBjb252
ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAg
aWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUNvbXB1dGVQaXBl
bGluZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSwgeyB9KTsKKyAgICBp
ZiAoIXNlbmRSZXN1bHQpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxiYWNrKFJlbW90ZUNv
bXB1dGVQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIGlkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVu
ZGVyUGlwZWxpbmVBc3luYyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFBBTDo6V2ViR1BVOjpSZW5k
ZXJQaXBlbGluZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0
b3IpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNj
cmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNj
cmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMo
KmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpLCB7IH0pOworICAgIGlmICghc2VuZFJl
c3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2soUmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlm
aWVyKSk7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXI+IFJlbW90ZURldmlj
ZVByb3h5OjpjcmVhdGVDb21tYW5kRW5jb2Rlcihjb25zdCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+JiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIHN0ZDo6b3B0aW9uYWw8
Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChk
ZXNjcmlwdG9yKSB7CisgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgaWYg
KCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGlkZW50
aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlQ29tbWFuZEVuY29kZXIoV1RG
TW92ZShjb252ZXJ0ZWREZXNjcmlwdG9yKSwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwog
fQogCiBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXI+IFJlbW90ZURldmljZVBy
b3h5OjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJC
dW5kbGVFbmNvZGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6
Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVz
Y3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVz
Y3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVJlbmRlckJ1bmRsZUVu
Y29kZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
clByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlF1ZXJ5U2V0PiBSZW1vdGVEZXZpY2VQcm94eTo6
Y3JlYXRlUXVlcnlTZXQoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJl
bW90ZVF1ZXJ5U2V0UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRv
cikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAg
ICByZXR1cm4gUmVtb3RlUXVlcnlTZXRQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlUXVlcnlT
ZXQoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlUXVlcnlTZXRQcm94eTo6Y3JlYXRl
KCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBSZW1vdGVEZXZpY2VQcm94eTo6cHVzaEVycm9yU2NvcGUoUEFMOjpXZWJHUFU6OkVycm9yRmls
dGVyIGVycm9yRmlsdGVyKQogewotICAgIFVOVVNFRF9QQVJBTShlcnJvckZpbHRlcik7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpQdXNoRXJyb3JT
Y29wZShlcnJvckZpbHRlcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVEZXZpY2VQcm94eTo6cG9wRXJyb3JTY29wZShXVEY6OkZ1bmN0aW9uPHZv
aWQoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6RXJyb3I+JiYpPiYmIGNhbGxiYWNrKQogewot
ICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgc3RkOjpvcHRpb25hbDxFcnJvcj4gZXJy
b3I7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZURldmlj
ZTo6UG9wRXJyb3JTY29wZSgpLCB7IGVycm9yIH0pOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKKworICAgIGlmICghZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFdURjo6c3dpdGNoT24oV1RGTW92
ZSgqZXJyb3IpLCBbJl0gKE91dE9mTWVtb3J5RXJyb3ImJiBvdXRPZk1lbW9yeUVycm9yKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHsgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3I6OmNyZWF0ZSgp
IH0pOworICAgIH0sIFsmXSAoVmFsaWRhdGlvbkVycm9yJiYgdmFsaWRhdGlvbkVycm9yKSB7Cisg
ICAgICAgIGNhbGxiYWNrKHsgUEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKFdU
Rk1vdmUodmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UpKSB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBS
ZW1vdGVEZXZpY2VQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZURldmljZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCmluZGV4IDY2MjY5NGEzMDk4YzAxYTM2ZWNjY2U1
OTdkMmI3NTFhYjk3M2RhYmIuLjhlYmUzNWM1ZDkwOWI0ZTU2YTFlY2IyYTI5MzU0NzlkMWVlMjY3
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmg+CiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2UuaD4KQEAgLTM4LDE3ICszOSwyMCBAQCBjbGFz
cyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlRGV2aWNlUHJveHkgZmlu
YWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkRldmljZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVEZXZpY2VQcm94eT4gY3JlYXRlKFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVh
dHVyZXM+JiYgZmVhdHVyZXMsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmIGxp
bWl0cywgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0ZShSZWY8UEFMOjpXZWJHUFU6
OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRl
ZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURl
dmljZVByb3h5KFdURk1vdmUoZmVhdHVyZXMpLCBXVEZNb3ZlKGxpbWl0cyksIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZURldmlj
ZVByb3h5KFdURk1vdmUoZmVhdHVyZXMpLCBXVEZNb3ZlKGxpbWl0cyksIHBhcmVudCwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKLSAgICB+UmVtb3RlRGV2
aWNlUHJveHkoKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVEZXZpY2VQcm94eSgpOworCisgICAgUmVt
b3RlQWRhcHRlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90
ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpOyB9CiAKIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
LSAgICBSZW1vdGVEZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
PiYmLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiwgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmKTsKKyAgICBSZW1vdGVEZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBv
cnRlZEZlYXR1cmVzPiYmLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiwgUmVt
b3RlQWRhcHRlclByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlm
aWVyKTsKIAogICAgIFJlbW90ZURldmljZVByb3h5KGNvbnN0IFJlbW90ZURldmljZVByb3h5Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlRGV2aWNlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmJikgPSBk
ZWxldGU7CkBAIC01Niw2ICs2MCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZURldmljZVByb3h5
JiBvcGVyYXRvcj0oUmVtb3RlRGV2aWNlUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJ
ZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAg
ICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMw
X3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1D
bGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICBy
ZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgIH0KIAogICAgIHZvaWQgZGVzdHJveSgpIGZpbmFsOwogCkBAIC04OCw4ICsxMDQsOSBAQCBw
cml2YXRlOgogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OlJl
bmRlclBpcGVsaW5lPiYmKT4+IG1fY3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luY0NhbGxiYWNrczsK
ICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
RXJyb3I+JiYpPj4gbV9wb3BFcnJvclNjb3BlQ2FsbGJhY2tzOwogCi0gICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVBZGFwdGVyUHJveHk+
IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4
dGVybmFsVGV4dHVyZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmNwcAppbmRleCBlODhlNGQ5
ZWE2NzE4NjZhOWZlNGMzMDViMGU5YWE4MDM5OWZjMmNkLi5hYjg3MmYxNjRlNzMyOGZiZTEyMGFi
YmUxNzQ5Y2UzYjk1NGMyMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJu
YWxUZXh0dXJlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVyZU1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAotUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OlJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCitSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6UmVtb3RlRXh0ZXJuYWxUZXh0
dXJlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7
CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6On5SZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eSgpCiAKIHZvaWQgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUV4dGVybmFsVGV4dHVyZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVF
eHRlcm5hbFRleHR1cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaAppbmRleCBjMzhmNGM2YWM5
MDU4OTg4NGQ5YzA4OTBkMzU0MjExZGQyNTQ0NjU3Li5mZTRiOGMzOWM2Zjc2MDYxMjYwOTk1ZTlm
MTJkMTgwMzFjZjVkYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0
dXJlLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKIAogY2xhc3MgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFM
OjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRl
cm5hbFRleHR1cmVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eShwYXJlbnQsIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJl
bW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5KGNvbnN0IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5JikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkm
JikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVFeHRl
cm5hbFRleHR1cmVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5JiYp
ID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25k
cyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246
OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0
aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2lu
ZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVy
IG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94
eS5jcHAKaW5kZXggOWUzOGQ3ZmYzZTg4YTViYmQ5NGU2ZTdjYzEyZTQxNGE2ZWQxZDJjOS4uNjQ5
MjI4MzhkOWM2YWVjM2UxYjhiZGUxMzYyNzcxZjhhZDU3MjZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVVByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDIxIEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbW90
ZUFkYXB0ZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUdQVU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAotUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitzdGF0aWMgY29uc3RleHByIHNp
emVfdCBkZWZhdWx0U3RyZWFtU2l6ZSA9IDEgPDwgMjE7CisKK1JlbW90ZUdQVVByb3h5OjpSZW1v
dGVHUFVQcm94eShHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwg
bV9zdHJlYW1Db25uZWN0aW9uKGdwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKSwgZGVm
YXVsdFN0cmVhbVNpemUpCiB7CiB9CiAKQEAgLTQzLDggKzUyLDUwIEBAIFJlbW90ZUdQVVByb3h5
Ojp+UmVtb3RlR1BVUHJveHkoKQogCiB2b2lkIFJlbW90ZUdQVVByb3h5OjpyZXF1ZXN0QWRhcHRl
cihjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4mJiBjYWxsYmFj
aykKIHsKLSAgICBVTlVTRURfUEFSQU0ob3B0aW9ucyk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxi
YWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LT5jb252ZXJ0VG9CYWNraW5nKG9wdGlvbnMpOworICAgIEFTU0VSVChjb252ZXJ0ZWRPcHRp
b25zKTsKKyAgICBpZiAoIWNvbnZlcnRlZE9wdGlvbnMpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgU3Ry
aW5nIG5hbWU7CisgICAgU3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVyZXM7CisgICAg
U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0czsKKyAgICBib29sIGlzRmFsbGJhY2tBZGFw
dGVyOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVHUFU6
OlJlcXVlc3RBZGFwdGVyKCpjb252ZXJ0ZWRPcHRpb25zLCBpZGVudGlmaWVyKSwgeyBuYW1lLCBz
dXBwb3J0ZWRGZWF0dXJlcywgc3VwcG9ydGVkTGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlciB9KTsK
KyAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVzdWx0
U3VwcG9ydGVkRmVhdHVyZXMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0
ZShXVEZNb3ZlKHN1cHBvcnRlZEZlYXR1cmVzLmZlYXR1cmVzKSk7CisgICAgYXV0byByZXN1bHRT
dXBwb3J0ZWRMaW1pdHMgPSBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzOjpjcmVhdGUoCisg
ICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQsCisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhU
ZXh0dXJlQXJyYXlMYXllcnMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhCaW5kR3JvdXBz
LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1VuaWZvcm1CdWZmZXJzUGVyUGlw
ZWxpbmVMYXlvdXQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljU3RvcmFnZUJ1
ZmZlcnNQZXJQaXBlbGluZUxheW91dCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBs
ZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U2Ft
cGxlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFN0b3JhZ2VC
dWZmZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdl
VGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFVuaWZv
cm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhVbmlm
b3JtQnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdl
QnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5taW5Vbmlmb3JtQnVm
ZmVyT2Zmc2V0QWxpZ25tZW50LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWluU3RvcmFnZUJ1
ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1
ZmZlcnMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzLAorICAg
ICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QnVmZmVyQXJyYXlTdHJpZGUsCisgICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cywKKyAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTdG9yYWdlU2l6ZSwKKyAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9uc1Blcldvcmtncm91cCwKKyAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSwKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCisgICAgKTsKKyAgICBjYWxsYmFjayhS
ZW1vdGVBZGFwdGVyUHJveHk6OmNyZWF0ZShXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJlc3VsdFN1
cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCBpc0ZhbGxi
YWNrQWRhcHRlciwgKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQ
cm94eS5oCmluZGV4IDVhOTRiMzA5YTNkZGI4YTA1YWU2MWJhOWZiZWNiZWFjYmI5MDNiMTUuLjBm
ZmVhMzhjZjhjNmZiYTc4OGFhOTBlY2JhYmRhM2YyMDU2MDQ4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
R1BVUHJveHkuaApAQCAtMjcsMjcgKzI3LDM2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJTdHJlYW1DbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViR1BV
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgR1BVUHJv
Y2Vzc0Nvbm5lY3Rpb247Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVHUFVQcm94eSBmaW5hbCA6
IHB1YmxpYyBQQUw6OldlYkdQVTo6R1BVIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZUdQVVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+IGNyZWF0ZShHUFVQcm9j
ZXNzQ29ubmVjdGlvbiYgZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlR1BVUHJveHkoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlR1BVUHJveHkoZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24sIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlR1BVUHJveHkoKTsK
IAorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gKnRoaXM7IH0KKworICAgIElQ
Qzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiYgc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpIHsgcmV0
dXJuIG1fc3RyZWFtQ29ubmVjdGlvbjsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlR1BVUHJveHkoQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVHUFVQcm94eShHUFVQcm9jZXNzQ29u
bmVjdGlvbiYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVHUFVQcm94eShjb25zdCBSZW1vdGVHUFVQcm94eSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZUdQVVByb3h5KFJlbW90ZUdQVVByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTUsMTMgKzY0
LDI2IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlR1BVUHJveHkmIG9wZXJhdG9yPShSZW1vdGVHUFVQ
cm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdU
Rk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50
Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBi
YWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCByZXF1ZXN0
QWRhcHRlcihjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4mJik+JiYpIGZpbmFsOwog
CiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRl
cj4mJik+PiBtX2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsg
V2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9i
YWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24gbV9zdHJlYW1Db25u
ZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVs
aW5lTGF5b3V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5jcHAKaW5kZXggMTE3MDdhMTk5MWRj
NDRjODVkNGJhOGI1NzhiOWM5Nzc2ZWQ0MzI2NS4uNzQyMWE5ZTA5MWYyODE1ZWQzZDFiM2Q3YWEz
MWIzYWM0NGM4NDJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlUGlwZWxpbmVMYXlvdXRNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiAKLVJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OlJlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQot
ICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
K1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2Jh
Y2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQz
LDcgKzQ2LDggQEAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6flJlbW90ZVBpcGVsaW5lTGF5
b3V0UHJveHkoKQogCiB2b2lkIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OnNldExhYmVsSW50
ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVBpcGVsaW5lTGF5b3V0
OjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVBpcGVsaW5lTGF5b3V0UHJveHkuaAppbmRleCA0ZDZlY2NhOTI4MDNiOTAxYTRlOTg1ZTIwMWYz
NWVjYWM0NTUyODIzLi4wYzlkMzQ3ZTgxYjYyODZjM2Q3NzRhY2JiMzYzZTIxNzcxYmJiYmU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVE
ZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0Lmg+CiAKQEAgLTM2LDE3ICsz
NywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUGlw
ZWxpbmVMYXlvdXRQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlv
dXQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eT4g
Y3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk+IGNyZWF0ZShSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoY29udmVydFRv
QmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlw
ZWxpbmVMYXlvdXRQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSgp
OwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5KFJlbW90
ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVy
KTsKIAogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoY29uc3QgUmVtb3RlUGlwZWxpbmVM
YXlvdXRQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoUmVt
b3RlUGlwZWxpbmVMYXlvdXRQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBw
cml2YXRlOgogICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkmIG9wZXJhdG9yPShSZW1vdGVQ
aXBlbGluZUxheW91dFByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBi
YWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlu
bGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYg
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVj
dGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3Qo
KS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAg
ICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJH
UFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsK
KyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmlj
ZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWVyeVNldFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwCmluZGV4IGQwM2UzNzFlOTc3NDNm
MDEwZDg0NmRmMzlhYmJlMGFiNTBjNjVhOGQuLjJmZDE0OGFjN2FjYjEwYmU3YWFhMTY1OTJhNzQ2
NGI0MGJiN2RlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwCkBA
IC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZVF1ZXJ5U2V0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVRdWVy
eVNldFByb3h5OjpSZW1vdGVRdWVyeVNldFByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVRdWVyeVNldFByb3h5OjpSZW1vdGVRdWVy
eVNldFByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQog
ewogfQogCkBAIC00MywxMSArNDYsMTQgQEAgUmVtb3RlUXVlcnlTZXRQcm94eTo6flJlbW90ZVF1
ZXJ5U2V0UHJveHkoKQogCiB2b2lkIFJlbW90ZVF1ZXJ5U2V0UHJveHk6OmRlc3Ryb3koKQogewor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0OjpEZXN0
cm95KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1v
dGVRdWVyeVNldFByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVRdWVyeVNldDo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVRdWVyeVNldFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgKaW5kZXggYjdhMmM4NjI2ZmFiN2UyODUx
ZDBkYzA0MzBlNmE4OWQ4YmMzYmIxMS4uZDhjNmNhNzE2YWYzOTE3MTllZmRjZmVlMGM0MDdlNjNi
OWU4ZTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2
aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldC5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAg
Y2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXJ5U2V0UHJv
eHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWVy
eVNldFByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWVy
eVNldFByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0UHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVF1ZXJ5U2V0
UHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3Bh
cmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBh
cmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVRdWVyeVNldFByb3h5KENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUXVlcnlTZXRQcm94eShSZW1vdGVEZXZp
Y2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAK
ICAgICBSZW1vdGVRdWVyeVNldFByb3h5KGNvbnN0IFJlbW90ZVF1ZXJ5U2V0UHJveHkmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVRdWVyeVNldFByb3h5KFJlbW90ZVF1ZXJ5U2V0UHJveHkmJikgPSBk
ZWxldGU7CkBAIC01NCwxMyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVRdWVyeVNldFBy
b3h5JiBvcGVyYXRvcj0oUmVtb3RlUXVlcnlTZXRQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdl
YkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAg
IAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0
ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0
cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgfQogCiAgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CiAKICAgICB2b2lkIHNldExh
YmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVy
IG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3Bh
cmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVF1ZXVlUHJveHkuY3BwCmluZGV4IDYzYThjMDYwMGQyMTcxMDUzMDg5MjIxMzc2MDcyZTc3
Mjg2MDk0ZTQuLjYwMzBjZTZlMzMzYWMxZDA4MjY1NTY2YTQ5Mjc1MTMzNTg2YjgxYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVF1ZXVlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVF1ZXVlTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVRdWV1ZVByb3h5OjpSZW1vdGVRdWV1ZVByb3h5KENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVR
dWV1ZVByb3h5OjpSZW1vdGVRdWV1ZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwg
bV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00MywxMiArNDYsMjUgQEAgUmVtb3RlUXVldWVQ
cm94eTo6flJlbW90ZVF1ZXVlUHJveHkoKQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6OnN1Ym1p
dChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZl
cj4+JiYgY29tbWFuZEJ1ZmZlcnMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbW1hbmRCdWZmZXJz
KTsKKyAgICBWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4gY29udmVydGVkQ29tbWFuZEJ1ZmZlcnM7
CisgICAgY29udmVydGVkQ29tbWFuZEJ1ZmZlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb21t
YW5kQnVmZmVycy5zaXplKCkpOworICAgIGZvciAoYXV0byBjb21tYW5kQnVmZmVyIDogY29tbWFu
ZEJ1ZmZlcnMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb21tYW5kQnVmZmVyKTsKKyAg
ICAgICAgQVNTRVJUKGNvbnZlcnRlZENvbW1hbmRCdWZmZXIpOworICAgICAgICBpZiAoIWNvbnZl
cnRlZENvbW1hbmRCdWZmZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnZlcnRl
ZENvbW1hbmRCdWZmZXJzLnVuY2hlY2tlZEFwcGVuZChjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKTsK
KyAgICB9CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVldWU6
OlN1Ym1pdChjb252ZXJ0ZWRDb21tYW5kQnVmZmVycykpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZVByb3h5OjpvblN1Ym1pdHRlZFdvcmtE
b25lKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJB
TShjYWxsYmFjayk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJl
bW90ZVF1ZXVlOjpPblN1Ym1pdHRlZFdvcmtEb25lKCksIHsgfSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOworCisgICAgY2FsbGJhY2soKTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1
ZVByb3h5Ojp3cml0ZUJ1ZmZlcigKQEAgLTU5LDEyICs3NSwxMyBAQCB2b2lkIFJlbW90ZVF1ZXVl
UHJveHk6OndyaXRlQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGF0YU9mZnNldCwK
ICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlck9mZnNldCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwotICAg
IFVOVVNFRF9QQVJBTShkYXRhT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYg
KCFjb252ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1ZXVlOjpXcml0ZUJ1ZmZlcihjb252ZXJ0ZWRCdWZm
ZXIsIGJ1ZmZlck9mZnNldCwgVmVjdG9yPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzb3VyY2UpICsgZGF0YU9mZnNldCwgc2l6ZS52YWx1ZV9vcihieXRlTGVuZ3RoIC0gZGF0
YU9mZnNldCkpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lk
IFJlbW90ZVF1ZXVlUHJveHk6OndyaXRlVGV4dHVyZSgKQEAgLTc0LDExICs5MSwxNyBAQCB2b2lk
IFJlbW90ZVF1ZXVlUHJveHk6OndyaXRlVGV4dHVyZSgKICAgICBjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VEYXRhTGF5b3V0JiBkYXRhTGF5b3V0LAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRl
bnQzRCYgc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShieXRlTGVuZ3RoKTsKLSAgICBVTlVT
RURfUEFSQU0oZGF0YUxheW91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8g
Y29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24p
OworICAgIGF1dG8gY29udmVydGVkRGF0YUxheW91dCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoZGF0YUxheW91dCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZERh
dGFMYXlvdXQpOworICAgIGF1dG8gY29udmVydGVkU2l6ZSA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFNpemUp
OworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZERhdGFMYXlvdXQg
fHwgIWNvbnZlcnRlZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1ZXVlOjpXcml0ZVRleHR1cmUoKmNvbnZlcnRlZERl
c3RpbmF0aW9uLCBWZWN0b3I8dWludDhfdD4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNv
dXJjZSksIGJ5dGVMZW5ndGgpLCAqY29udmVydGVkRGF0YUxheW91dCwgKmNvbnZlcnRlZFNpemUp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUXVl
dWVQcm94eTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCkBAIC04NiwxNCArMTA5LDIzIEBA
IHZvaWQgUmVtb3RlUXVldWVQcm94eTo6Y29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoCiAgICAg
Y29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmVUYWdnZWQmIGRlc3RpbmF0aW9uLAog
ICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVT
RURfUEFSQU0oY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChj
b252ZXJ0ZWRTb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBB
U1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUg
PSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvcHlTaXplKTsK
KyAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOworICAgIGlmICghY29udmVydGVkU291cmNl
IHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkQ29weVNpemUpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1
ZXVlOjpDb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVy
dGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZVByb3h5OjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6U2V0TGFiZWwo
bGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKaW5kZXgg
ZTUzMDk0OGE1Yjc0NTFmMzJkYTNlMTJkOTVhMDQyMTQyZTQxOGYyYS4uZDgyMzI0ZGUxNTIwY2E0
Y2UyMTRhNWRiYzc3NjdjNjUxMTE5YThlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVk
ZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWV1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgpAQCAtMzcsMTcgKzM4LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OwogCiBjbGFzcyBSZW1vdGVRdWV1ZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BV
OjpRdWV1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZVByb3h5PiBjcmVh
dGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlUXVldWVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlUXVldWVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZVByb3h5KHBhcmVudCwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVRdWV1ZVByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyBy
ZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1f
cGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlUXVldWVQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVF1ZXVlUHJveHkoUmVtb3Rl
RGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIp
OwogCiAgICAgUmVtb3RlUXVldWVQcm94eShjb25zdCBSZW1vdGVRdWV1ZVByb3h5JikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlUXVldWVQcm94eShSZW1vdGVRdWV1ZVByb3h5JiYpID0gZGVsZXRlOwpA
QCAtNTUsNiArNTksMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVRdWV1ZVByb3h5JiBvcGVyYXRv
cj0oUmVtb3RlUXVldWVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIg
YmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBp
bmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYm
IG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9S
RVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2Fn
ZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290
KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAg
ICAgdm9pZCBzdWJtaXQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkNvbW1hbmRCdWZmZXI+PiYmKSBmaW5hbDsKIApAQCAtODQsOCArMTAwLDkgQEAgcHJpdmF0ZToK
IAogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9jYWxsYmFja3M7CiAKLSAgICBX
ZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkg
fTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURl
dmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
LmNwcAppbmRleCA5N2NkYTAzNzZiZDlhMTExZjMyNWViYTUwMDkzZjNhODdmNTVlYzk4Li4yYjZk
MmQ3ZDk0MWU0ZjhiYWNhNTJmNWQ4NGZjNDQzOGExN2IyMTU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHAKQEAgLTI4LDEzICsy
OCwxNiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHk6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclBy
b3h5OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikK
KyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQp
CisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQ0LDMyICs0Nyw0MiBAQCBSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6On5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHkoKQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUo
Y29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0ocmVuZGVyUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkUmVuZGVy
UGlwZWxpbmUgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHJl
bmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOworICAg
IGlmICghY29udmVydGVkUmVuZGVyUGlwZWxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6
OlNldFBpcGVsaW5lKGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94
eTo6c2V0SW5kZXhCdWZmZXIoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBQQUw6
OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zm
c2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Rm9ybWF0KTsKLSAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBj
b252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252
ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlNldEluZGV4QnVmZmVyKGNv
bnZlcnRlZEJ1ZmZlciwgaW5kZXhGb3JtYXQsIG9mZnNldCwgc2l6ZSkpOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
UHJveHk6OnNldFZlcnRleEJ1ZmZlcihQQUw6OldlYkdQVTo6SW5kZXgzMiBzbG90LCBjb25zdCBQ
QUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHNsb3QpOwotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShv
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZl
ciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsK
KyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6U2V0VmVydGV4QnVmZmVyKHNsb3QsIGNvbnZlcnRl
ZEJ1ZmZlciwgb2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhdyhQQUw6Oldl
YkdQVTo6U2l6ZTMyIHZlcnRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291
bnQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNp
emUzMiBmaXJzdEluc3RhbmNlKQogewotICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFZl
cnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OkRyYXcodmVy
dGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENv
dW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCkBAIC03NywzMSArOTAsNDIg
QEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKFBBTDo6
V2ViR1BVOjpTaXplMzIgaW5kZXhDb3VudCwKICAgICBQQUw6OldlYkdQVTo6U2lnbmVkT2Zmc2V0
MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5j
ZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpE
cmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVy
dGV4LCBmaXJzdEluc3RhbmNlKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGlyZWN0KGNv
bnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6
ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7
Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZElu
ZGlyZWN0QnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsK
KyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpEcmF3SW5kaXJlY3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0
KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBQQUw6Oldl
YkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVj
dE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNF
RF9QQVJBTShpbmRpcmVjdE9mZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
ciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RC
dWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFj
b252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6RHJhd0lu
ZGV4ZWRJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5k
ZXgsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHluYW1p
Y09mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0o
YmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHMpOworICAgIGF1dG8g
Y29udmVydGVkQmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAg
IGlmICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRC
aW5kR3JvdXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgZHluYW1pY09mZnNldHMpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgs
IGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKQEAgLTExMCwzNyArMTM0
LDUzIEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAo
UEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIGNvCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBk
eW5hbWljT2Zmc2V0c0RhdGFTdGFydCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGR5bmFtaWNP
ZmZzZXRzRGF0YUxlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNF
RF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5
QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlckxlbmd0
aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0KTsKLSAgICBVTlVT
RURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJp
bmRHcm91cCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYmlu
ZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKKyAgICBpZiAoIWNvbnZl
cnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6U2V0QmluZEdyb3VwKGlu
ZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1p
Y09mZnNldD4oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciArIGR5bmFtaWNPZmZzZXRzRGF0YVN0
YXJ0LCBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNl
bmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6cHVz
aERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZ3Jv
dXBMYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6UHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQogeworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlBvcERlYnVnR3Jv
dXAoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFy
a2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpJbnNl
cnREZWJ1Z01hcmtlcihXVEZNb3ZlKG1hcmtlckxhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+IFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZmluaXNoKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5k
ZXJCdW5kbGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OmNyZWF0ZShtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAg
ICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOwor
ICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6RmluaXNoKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQs
IGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJB
TShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oCmluZGV4IDJh
MjRkODg2YTJlMjVmZDhkNjQ0YTFmODk5YTk2NTk3NzdiZjRkMGIuLjEwMDQ1YWUyZWJmMjllNDFl
ZThkZWViOTI0ODRhZDE0MTM4N2ExMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5PiBj
cmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHko
Y29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKLSAgICB+UmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5KCk7CisgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
KCk7CisKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KS5wYXJlbnQoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
clByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJH
UFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShjb25z
dCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5JiYp
ID0gZGVsZXRlOwpAQCAtNTQsNiArNTgsMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBT
ZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZN
b3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENv
bm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFj
a2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0UGlwZWxp
bmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJikgZmluYWw7CiAKQEAgLTg3LDgg
KzEwMyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsK
ICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGVQcm94eS5jcHAKaW5kZXggZjkyNzMwZmNiMDA3Yzk5MmVjNWZkZjk2OTA0ZTYyOWE3NjgzNTRi
NS4uYTI1MWI2ZDMxOGM3NzEzNDhiNWJlODAwNTExYjM0NjQ3MjZlNDk5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5k
bGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZVByb3h5
OjpSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OlJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50
KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5Ojp+UmVt
b3RlUmVuZGVyQnVuZGxlUHJveHkoKQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJCdW5kbGU6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKaW5kZXggOWEwOGQ3MDcxMzhjNTMwZjU3OGYzMzkx
MjFjZmQ2MTY5MmRiNWZjOC4uN2MwZGM1ZWU5ZjRmZDJkNTRjMTdjMWQyNTcxMDA3N2VlYmFkYmQx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVE
ZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZS5oPgogCkBAIC0zNiwxNyArMzcs
MjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRl
ckJ1bmRsZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlUHJveHk+IGNyZWF0ZShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5
JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRl
eHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxlUHJv
eHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KCk7CiAKKyAgICBSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQ
cm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCi0gICAgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQm
KTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eShjb25zdCBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eSYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JiYpID0g
ZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHkmIG9wZXJhdG9yPShSZW1vdGVSZW5kZXJCdW5kbGVQcm94eSYmKSA9IGRlbGV0ZTsK
IAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNl
bmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4g
cm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJh
Y2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jl
c3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAg
ICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRT
eW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7
CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5LmNwcAppbmRleCA5ZDkzMjYxN2ZlMTNhZjQzYTJmNjgwZDFmMTg4
ZjVhZTExOGZiMmU4Li4zZThmNWE2M2Y0YWYxMjQ3MmI4ZjIzZjU4ZmRmMmQ4N2FiZmQzNTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNw
cApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAotUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0g
ICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQog
ewogfQogCkBAIC00MywzMiArNDYsNDIgQEAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
flJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoKQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHk6OnNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGlu
ZSYgcmVuZGVyUGlwZWxpbmUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlbmRlclBpcGVsaW5lKTsK
KyAgICBhdXRvIGNvbnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhyZW5kZXJQaXBlbGluZSk7CisgICAgQVNTRVJUKGNvbnZl
cnRlZFJlbmRlclBpcGVsaW5lKTsKKyAgICBpZiAoIWNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0UGlwZWxpbmUoY29udmVydGVkUmVuZGVyUGlwZWxp
bmUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0SW5kZXhCdWZmZXIoY29uc3QgUEFMOjpXZWJHUFU6
OkJ1ZmZlciYgYnVmZmVyLCBQQUw6OldlYkdQVTo6SW5kZXhGb3JtYXQgaW5kZXhGb3JtYXQsIFBB
TDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXpl
NjQ+IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGV4Rm9ybWF0KTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1
ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
OjpTZXRJbmRleEJ1ZmZlcihjb252ZXJ0ZWRCdWZmZXIsIGluZGV4Rm9ybWF0LCBvZmZzZXQsIHNp
emUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRl
eDMyIHNsb3QsIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6
OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc2xvdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1
dG8gY29udmVydGVkQnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOworICAgIGlmICgh
Y29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0VmVydGV4QnVmZmVy
KHNsb3QsIGNvbnZlcnRlZEJ1ZmZlciwgb2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6
OmRyYXcoUEFMOjpXZWJHUFU6OlNpemUzMiB2ZXJ0ZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUz
MiBpbnN0YW5jZUNvdW50LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RWZXJ0ZXgsIFBB
TDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBVTlVTRURfUEFSQU0odmVy
dGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURf
UEFSQU0oZmlyc3RWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6RHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5z
dGFuY2UpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUz
MiBpbmRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCkBAIC03Niwz
MSArODksNDIgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kZXhl
ZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFAKICAgICBQQUw6OldlYkdQVTo6U2ln
bmVkT2Zmc2V0MzIgYmFzZVZlcnRleCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5z
dGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJB
TShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJhc2VWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJbmRleCwg
YmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kaXJl
Y3QoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BV
OjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVm
ZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAgIGF1dG8gY29udmVy
dGVkSW5kaXJlY3RCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9C
YWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyOjpEcmF3SW5kaXJlY3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zm
c2V0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3QoY29uc3QgUEFMOjpX
ZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJl
Y3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVT
RURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZm
ZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGluZGlyZWN0
QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICgh
Y29udmVydGVkSW5kaXJlY3RCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpEcmF3SW5k
ZXhlZEluZGlyZWN0KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgs
IGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4+JiYgZHluYW1pY09m
ZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmlu
ZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHMpOworICAgIGF1dG8gY29u
dmVydGVkQmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlm
ICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0QmluZEdy
b3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIGR5bmFtaWNPZmZzZXRzKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29uc3Qg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLApAQCAtMTA5LDkwICsxMzMsMTIwIEBA
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2Vi
R1BVOjpJbmRleDMyIGluZGV4LCBjb25zCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkeW5hbWlj
T2Zmc2V0c0RhdGFTdGFydCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGR5bmFtaWNPZmZzZXRz
RGF0YUxlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJB
TShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVy
KTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlckxlbmd0aCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0KTsKLSAgICBVTlVTRURfUEFS
QU0oZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91
cCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYmluZEdyb3Vw
KTsKKyAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJp
bmRHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNldEJpbmRHcm91cChpbmRleCwgY29u
dmVydGVkQmluZEdyb3VwLCBWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+
KGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXIgKyBkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCwgZHlu
YW1pY09mZnNldHNEYXRhTGVuZ3RoKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91
cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6UHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSkpOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6UG9wRGVidWdHcm91cCgpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6SW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92
ZShtYXJrZXJMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0Vmlld3BvcnQoZmxvYXQgeCwg
ZmxvYXQgeSwKICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LAogICAgIGZsb2F0IG1pbkRl
cHRoLCBmbG9hdCBtYXhEZXB0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGhl
aWdodCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1pbkRlcHRoKTsKLSAgICBVTlVTRURfUEFSQU0obWF4
RGVwdGgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyOjpTZXRWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBtaW5EZXB0aCwg
bWF4RGVwdGgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0U2Npc3NvclJlY3QoUEFMOjpXZWJHUFU6
OkludGVnZXJDb29yZGluYXRlIHgsIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB5LAog
ICAgIFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB3aWR0aCwgUEFMOjpXZWJHUFU6Oklu
dGVnZXJDb29yZGluYXRlIGhlaWdodCkKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5V
U0VEX1BBUkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh3aWR0aCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGhlaWdodCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OlNldFNjaXNzb3JSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6c2V0QmxlbmRDb25zdGFudChQQUw6OldlYkdQVTo6Q29sb3IgY29sb3Ip
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNvbG9yKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvbG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb2xvcik7CisgICAg
QVNTRVJUKGNvbnZlcnRlZENvbG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZENvbG9yKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJQYXNzRW5jb2Rlcjo6U2V0QmxlbmRDb25zdGFudCgqY29udmVydGVkQ29sb3IpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6c2V0U3RlbmNpbFJlZmVyZW5jZShQQUw6OldlYkdQVTo6U3RlbmNpbFZh
bHVlIHN0ZW5jaWxWYWx1ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc3RlbmNpbFZhbHVlKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
cjo6U2V0U3RlbmNpbFJlZmVyZW5jZShzdGVuY2lsVmFsdWUpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
YmVnaW5PY2NsdXNpb25RdWVyeShQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpCZWdpbk9jY2x1c2lvblF1ZXJ5KHF1
ZXJ5SW5kZXgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kT2NjbHVzaW9uUXVlcnkoKQogeworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
OjpFbmRPY2NsdXNpb25RdWVyeSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6YmVnaW5QaXBlbGluZVN0
YXRpc3RpY3NRdWVyeShjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQmIHF1ZXJ5U2V0LCBQQUw6
OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0
KTsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVy
eVNldCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcocXVlcnlT
ZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAgaWYgKCFjb252ZXJ0ZWRR
dWVyeVNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkJlZ2luUGlwZWxpbmVTdGF0aXN0aWNz
UXVlcnkoY29udmVydGVkUXVlcnlTZXQsIHF1ZXJ5SW5kZXgpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFbmRQaXBlbGluZVN0YXRpc3Rp
Y3NRdWVyeSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZXhlY3V0ZUJ1bmRsZXMoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4+JiYgcmVuZGVyQnVu
ZGxlcykKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyQnVuZGxlcyk7CisgICAgVmVjdG9yPFdl
YkdQVUlkZW50aWZpZXI+IGNvbnZlcnRlZFJlbmRlckJ1bmRsZXM7CisgICAgY29udmVydGVkUmVu
ZGVyQnVuZGxlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlckJ1bmRsZXMuc2l6ZSgpKTsK
KyAgICBmb3IgKGF1dG8gcmVuZGVyQnVuZGxlIDogcmVuZGVyQnVuZGxlcykgeworICAgICAgICBh
dXRvIGNvbnZlcnRlZFJlbmRlckJ1bmRsZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNv
bnZlcnRUb0JhY2tpbmcocmVuZGVyQnVuZGxlKTsKKyAgICAgICAgQVNTRVJUKGNvbnZlcnRlZFJl
bmRlckJ1bmRsZSk7CisgICAgICAgIGlmICghY29udmVydGVkUmVuZGVyQnVuZGxlKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjb252ZXJ0ZWRSZW5kZXJCdW5kbGVzLnVuY2hlY2tlZEFw
cGVuZChjb252ZXJ0ZWRSZW5kZXJCdW5kbGUpOworICAgIH0KKworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpFeGVjdXRlQnVuZGxl
cyhXVEZNb3ZlKGNvbnZlcnRlZFJlbmRlckJ1bmRsZXMpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVu
ZFBhc3MoKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpFbmRQYXNzKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKaW5kZXggZjIwN2I5ZWE2ZjUxYjBlN2Q2
OGU3MzBkMzA4MTYyOTJiMWMzNDMxNS4uNzQyNzlkMTk2YTc0ODczNTg4NzMwY2UxOGQxMWUxZWVm
ZjdlMmZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisj
aW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NFbmNvZGVyLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSBmaW5hbCA6IHB1
YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIp
KTsKICAgICB9CiAKLSAgICB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSgpOworICAgIHZp
cnR1YWwgflJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoKTsKKworICAgIFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3Rl
R1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFy
ZW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQ
VUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShjb25zdCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eShSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRl
OwpAQCAtNTQsNiArNTgsMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5JiBvcGVyYXRvcj0oUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSYmKSA9IGRlbGV0
ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVs
dFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1
cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSks
IGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkK
KyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25zdCBQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmKSBmaW5hbDsKIApAQCAtMTA0LDggKzEyMCw5IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVm
PFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eS5jcHAKaW5kZXggNDg0MzI3OTU0MDY2Y2I3ZTJmZjYzNDhkNWE1OTJjODAzY2Q4YWFh
ZC4uMGFkMmYzOWZlZTY2MDY2MGY5YmVlZDNlOWRhN2Y2ZDhlZmZiM2QxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHAKQEAgLTI5LDEyICsyOSwx
NSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91
cExheW91dFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGlwZWxpbmVNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OlJlbW90ZVJl
bmRlclBpcGVsaW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKK1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OlJlbW90ZVJlbmRlclBpcGVs
aW5lUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7
CiB9CiAKQEAgLTQ0LDEzICs0NywxNyBAQCBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5Ojp+UmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eSgpCiAKIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5
b3V0PiBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpnZXRCaW5kR3JvdXBMYXlvdXQodWludDMy
X3QgaW5kZXgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICByZXR1cm4gUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBpcGVsaW5lOjpH
ZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6
OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChj
b25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGlwZWxpbmU6OlNldExh
YmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
UGlwZWxpbmVQcm94eS5oCmluZGV4IGY5MTQ0ODRiZmY5NjBjZjE0ZTI5MzIzNjAyNjk5ZmMzYjc5
ZjJjN2IuLjAzY2Q0Y2M2OTRmNWY5ZGEzYWIyMDNlMDY3YjcwNmYwMWY0MTIwOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlclBpcGVsaW5lUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmUuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBA
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5PiBjcmVhdGUo
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KCk7CiAKKyAg
ICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBS
ZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQo
KTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCi0gICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYpOworICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoUmVtb3RlRGV2aWNl
UHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShjb25zdCBSZW1vdGVSZW5kZXJQaXBlbGluZVBy
b3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShSZW1vdGVSZW5k
ZXJQaXBlbGluZVByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTMgKzU4LDI2IEBAIHByaXZhdGU6
CiAgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlclBp
cGVsaW5lUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmco
KSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQ
Qzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVh
bUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIFJlZjxQ
QUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiBnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3Qg
aW5kZXgpIGZpbmFsOwogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAg
UmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
ICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5jcHAKaW5k
ZXggZTI0MDg5ZDZlM2ZkZjE0ZmYzODMyZGZjZTEzMTU5ZDYzZjJiYWY3Zi4uOTUxYTMzOTg2ZWNk
OGZkYTQxZTIwNGNjMzQzMWVkNGQ4NWFmZDU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1w
bGVyUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIlJlbW90ZVNhbXBsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKLVJlbW90ZVNhbXBsZXJQcm94eTo6UmVtb3RlU2FtcGxlclByb3h5KENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVTYW1wbGVyUHJveHk6
OlJlbW90ZVNhbXBsZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50
KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVTYW1wbGVyUHJveHk6On5S
ZW1vdGVTYW1wbGVyUHJveHkoKQogCiB2b2lkIFJlbW90ZVNhbXBsZXJQcm94eTo6c2V0TGFiZWxJ
bnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlU2FtcGxlcjo6U2V0
TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94
eS5oCmluZGV4IDI3ZGE0NzEzMTc5MzI5M2U3NjU5NDRlNmZmY2JmNGY4Y2Y2NzVhY2UuLjFiNzFj
MDE4M2E5YWMyOWU5OWY5MWQwMmVlMGE5ZDY1MWNjNzE5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNhbXBsZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXIu
aD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owog
CiBjbGFzcyBSZW1vdGVTYW1wbGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNh
bXBsZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2FtcGxlclByb3h5PiBjcmVh
dGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlU2FtcGxlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkm
IHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxlclByb3h5KHBhcmVudCwg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIH5SZW1vdGVTYW1wbGVyUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJl
bnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyBy
ZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVT
YW1wbGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVTYW1wbGVy
UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQ
VUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlU2FtcGxlclByb3h5KGNvbnN0IFJlbW90ZVNhbXBs
ZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVNhbXBsZXJQcm94eShSZW1vdGVTYW1wbGVy
UHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1v
dGVTYW1wbGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVTYW1wbGVyUHJveHkmJikgPSBkZWxldGU7
CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tp
bmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRT
ZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBi
YWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisg
ICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5k
U3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BV
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5n
OwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1v
ZHVsZVByb3h5LmNwcAppbmRleCBlMjczZjMxMzE1YWUxZTVmM2Q0OGQ4ZWZlZmU5MmUzYzFiMzZj
Yzg1Li5hMmIwYWUxNDc2ZDEyMTdhOTcwYzA0OTgzZjY0Yjk4Y2EzY2MwYWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFk
ZXJNb2R1bGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVNoYWRlck1v
ZHVsZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uSW5mby5o
PgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVNoYWRlck1vZHVsZVBy
b3h5OjpSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OlJlbW90ZVNo
YWRlck1vZHVsZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFy
ZW50KQogewogfQogCkBAIC00MywxMiArNDgsMjAgQEAgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6
On5SZW1vdGVTaGFkZXJNb2R1bGVQcm94eSgpCiAKIHZvaWQgUmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHk6OmNvbXBpbGF0aW9uSW5mbyhXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFBBTDo6V2ViR1BVOjpD
b21waWxhdGlvbkluZm8+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShjYWxs
YmFjayk7CisgICAgVmVjdG9yPENvbXBpbGF0aW9uTWVzc2FnZT4gbWVzc2FnZXM7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZVNoYWRlck1vZHVsZTo6Q29t
cGlsYXRpb25JbmZvKCksIHsgbWVzc2FnZXMgfSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOworCisgICAgYXV0byBiYWNraW5nTWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoW10gKENv
bXBpbGF0aW9uTWVzc2FnZSBjb21waWxhdGlvbk1lc3NhZ2UpIHsKKyAgICAgICAgcmV0dXJuIFBB
TDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U6OmNyZWF0ZShXVEZNb3ZlKGNvbXBpbGF0aW9u
TWVzc2FnZS5tZXNzYWdlKSwgY29tcGlsYXRpb25NZXNzYWdlLnR5cGUsIGNvbXBpbGF0aW9uTWVz
c2FnZS5saW5lTnVtLCBjb21waWxhdGlvbk1lc3NhZ2UubGluZVBvcywgY29tcGlsYXRpb25NZXNz
YWdlLm9mZnNldCwgY29tcGlsYXRpb25NZXNzYWdlLmxlbmd0aCk7CisgICAgfSk7CisgICAgY2Fs
bGJhY2soUEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9uSW5mbzo6Y3JlYXRlKFdURk1vdmUoYmFja2lu
Z01lc3NhZ2VzKSkpOwogfQogCiB2b2lkIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpzZXRMYWJl
bEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVTaGFkZXJNb2R1
bGU6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVNoYWRlck1vZHVsZVByb3h5LmgKaW5kZXggNzRlMGYxOTM3Y2IzOGZiNWUwMzVkNGM3YmVhOTll
OTQxN2Y3MTc1My4uZjYxYWQ5NTRiY2UzNzFjYWE5YzAyY2U5ZWZiNzgzMTM2MTEwZmNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlU2hhZGVyTW9kdWxlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZS5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAg
Y2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVNoYWRlck1vZHVs
ZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk+IGNyZWF0ZShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJl
bnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkocGFy
ZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgflJlbW90ZVNoYWRlck1vZHVsZVByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYg
cm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0g
ICAgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAg
ICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVTaGFkZXJNb2R1
bGVQcm94eShjb25zdCBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSYpID0gZGVsZXRlOwogICAgIFJl
bW90ZVNoYWRlck1vZHVsZVByb3h5KFJlbW90ZVNoYWRlck1vZHVsZVByb3h5JiYpID0gZGVsZXRl
OwpAQCAtNTQsMTMgKzU4LDI2IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHkmIG9wZXJhdG9yPShSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAg
IFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQor
ICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1l
b3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgp
LnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxhdGlvbkluZm8oV1RGOjpGdW5jdGlvbjx2
b2lkKFJlZjxQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25JbmZvPiYmKT4mJikgZmluYWw7CiAKICAg
ICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJH
UFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsK
KyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmlj
ZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVUZXh0dXJlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcAppbmRleCBkMWZkMzQyOTVlMWRhODEx
OGFjMTVhNTg3NzFhODQ4OWM3MjI2NTUxLi40YWVlZGY3ODZkYjdmZjZlYzM2MDVhNWE3M2E1ZjEy
YzlhN2Q0ZTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHAKQEAgLTI4
LDE0ICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVt
b3RlVGV4dHVyZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKLVJlbW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVyZVByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVUZXh0dXJlUHJv
eHk6OlJlbW90ZVRleHR1cmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDUsMTcgKzQ4LDMyIEBAIFJlbW90ZVRleHR1cmVQcm94
eTo6flJlbW90ZVRleHR1cmVQcm94eSgpCiAKIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+
IFJlbW90ZVRleHR1cmVQcm94eTo6Y3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+JiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlVGV4dHVyZVZpZXdQcm94eTo6
Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4
dHVyZVZpZXdEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChkZXNjcmlw
dG9yKSB7CisgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9y
IGhhbmRsaW5nLgorICAgICAgICAgICAgcmV0dXJuIFJlbW90ZVRleHR1cmVWaWV3UHJveHk6OmNy
ZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBX
ZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVRleHR1cmU6OkNyZWF0ZVZpZXcoKmNvbnZlcnRlZERlc2NyaXB0b3Is
IGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICBy
ZXR1cm4gUmVtb3RlVGV4dHVyZVZpZXdQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlUHJveHk6
OmRlc3Ryb3koKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVRleHR1cmU6OkRlc3Ryb3koKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVRleHR1cmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJp
bmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlVGV4dHVyZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCmluZGV4IGEzOGNmMzQz
ZjM5ZGUzNTgxZTZlNGE5MTYyOWU4YTJjZTg5NGEzMDUuLjk0N2ZlYjJhOWU2ZjYzZDExNDYwNGU3
NTBmZjJmOGI1ZDNiYmUwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUludGVncmFsVHlwZXMuaD4KICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmUuaD4KQEAgLTQwLDE3ICs0MSwyMCBA
QCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4dHVyZVBy
b3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZVRleHR1cmVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1
cmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVy
ZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZVRleHR1cmVQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZVByb3h5
KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlVGV4dHVyZVByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlVGV4dHVyZVByb3h5KFJlbW90ZURldmljZVByb3h5
JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZVRleHR1cmVQcm94eShjb25zdCBSZW1vdGVUZXh0dXJlUHJveHkmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVUZXh0dXJlUHJveHkoUmVtb3RlVGV4dHVyZVByb3h5JiYpID0gZGVsZXRlOwpAQCAt
NTgsNiArNjIsMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVUZXh0dXJlUHJveHkmIG9wZXJhdG9y
PShSZW1vdGVUZXh0dXJlUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVy
IGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQm
JiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURf
UkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9v
dCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAog
ICAgIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXc+IGNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYpIGZpbmFsOwogCkBA
IC02NSw4ICs4MSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29u
c3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFj
a2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1
cmVWaWV3UHJveHkuY3BwCmluZGV4IGVlMDNmNWVlMjA4ZmUwNGExNzIzNTVkOTM3MGNlNmEyZmRl
YzVlYmUuLjQ5YWY4OTJkZjRjYzRhMWY1N2U4MWMwY2Y1M2RmODA1NzNkNGExNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVWaWV3UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmVW
aWV3TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVUZXh0dXJlVmlld1Byb3h5
OjpSZW1vdGVUZXh0dXJlVmlld1Byb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpSZW1vdGVUZXh0dXJl
Vmlld1Byb3h5KFJlbW90ZVRleHR1cmVQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkK
IHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVUZXh0dXJlVmlld1Byb3h5Ojp+UmVtb3Rl
VGV4dHVyZVZpZXdQcm94eSgpCiAKIHZvaWQgUmVtb3RlVGV4dHVyZVZpZXdQcm94eTo6c2V0TGFi
ZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJl
bCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlVGV4dHVyZVZp
ZXc6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
VGV4dHVyZVZpZXdQcm94eS5oCmluZGV4IDEyYTZhMTlkZmE0Nzc3ZTRiNTQ2ZTM3Njg5MTE3ZWY0
NjAxZTEyYWQuLjU3YzFjOThkNWM1ZmQ4NjE2ZDMxNDJmM2QyN2VkNmJhNDI0NTY3NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVRleHR1cmVWaWV3UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVRleHR1cmVQcm94
eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3Lmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFz
cyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlVGV4dHVyZVZpZXdQcm94
eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXcgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXdQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVRleHR1cmVWaWV3UHJveHk+IGNyZWF0ZShSZW1vdGVUZXh0dXJlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVUZXh0dXJlVmlld1Byb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3UHJveHkocGFyZW50LCBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZVRleHR1cmVWaWV3UHJveHkoKTsKIAorICAgIFJlbW90ZVRleHR1cmVQcm94eSYgcGFy
ZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsg
cmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0g
ICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAg
IFJlbW90ZVRleHR1cmVWaWV3UHJveHkoUmVtb3RlVGV4dHVyZVByb3h5JiwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVRleHR1cmVWaWV3
UHJveHkoY29uc3QgUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90
ZVRleHR1cmVWaWV3UHJveHkoUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYmKSA9IGRlbGV0ZTsKQEAg
LTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVRleHR1cmVWaWV3UHJveHkmIG9w
ZXJhdG9yPShSZW1vdGVUZXh0dXJlVmlld1Byb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BV
SWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisg
ICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAz
MF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFt
Q2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVm
PFJlbW90ZVRleHR1cmVQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcAppbmRleCBmODdmY2ZlM2Q0YzUzM2I0YmNlMTdi
ZGQ4YjI5ODE0ZjdlNjk0ZmM1Li5kNTY3NmE4YmQ2NzQwNTZmM2JlYzJmNTcwOTMxYjA2YmE1ZmYz
N2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcApAQCAtOTgsNiArOTgsMTEgQEAgV2ViR1BVSWRlbnRp
ZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2UKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlRGV2aWNlUHJv
eHkmPihkZXZpY2UpLmJhY2tpbmcoKTsKIH0KIAorV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpFeHRlcm5hbFRleHR1cmUmIGV4dGVybmFsVGV4dHVyZSkKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmPihleHRlcm5hbFRleHR1cmUp
LmJhY2tpbmcoKTsKK30KKwogV2ViR1BVSWRlbnRpZmllciBEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmIGdwdSkK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUmVtb3RlR1BVUHJveHkmPihncHUpLmJh
Y2tpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29u
dmVydFRvQmFja2luZ0NvbnRleHQuaAppbmRleCBhMTNjODg5MDQ2OTIzN2JiNjI5YzcyNzVkNTcw
ZTU4NDI3ODNhODQ4Li40NDcxZDBlZjA3NDhiNjQ1ZWViZDRlOTUwZjVjZjUwMDA1MzY2OTVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXZWJHUFVJZGVu
dGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2RlciYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lJikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpEZXZpY2UmKSBmaW5hbDsK
KyAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OkV4dGVybmFsVGV4dHVyZSYpIGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6R1BVJikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCYp
IGZpbmFsOwogICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6UXVlcnlTZXQmKSBmaW5hbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444905</attachid>
            <date>2021-11-20 13:10:47 -0800</date>
            <delta_ts>2021-11-20 13:31:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233396-20211120131046.patch</filename>
            <type>text/plain</type>
            <size>279890</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUwNTJmYmZhYmY1OTYwZDdi
MDIyNDk5NWI0ZDBjZGIzZWE1ZmY2NjQuLjdjOWY1ZTM4ODNkYmM2YmM0NDYyNzBhYmZjYTU3Njhj
MzVlZmE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzM5IEBACisyMDIxLTExLTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU2Vu
ZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGhvb2tzIHVwIG91ciBSZW1vdGUqKipQ
cm94eSgpIFdlYkdQVSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc2VyaWFsaXphYmxlIHN0cnVjdHMu
CisgICAgICAgIFRoZXJlIGFyZSAyIHBpZWNlczogYWRkaW5nIGNvbnZlcnRlciBmdW5jdGlvbnMg
ZnJvbSBQQUw6OldlYkdQVTo6WCB0byBXZWJLaXQ6OldlYkdQVTo6WAorICAgICAgICBzdHJ1Y3Rz
ICh3aGljaCBhcmUgc2VyaWFsaXphYmxlKSBhbmQgYWN0dWFsbHkgY2FsbGluZyB0aGUgc2VuZCgp
IGZ1bmN0aW9uIGl0c2VsZi4KKyAgICAgICAgQmVjYXVzZSBzdHJlYW1pbmcgSVBDIGRvZXNuJ3Qg
c3VwcG9ydCBhc3luYyByZXBsaWVzIHlldCwgYWxsIHRoZSBhc3luYyBjYWxscyBhcmUgY3VycmVu
dGx5CisgICAgICAgIHN5bmMgaW4gdGhpcyBwYXRjaC4gSSdsbCBiZSBhZGRpbmcgc3VwcG9ydCBm
b3IgYXN5bmMgc3RyZWFtaW5nIG1lc3NhZ2VzIGluIGEgc3Vic2VxdWVudAorICAgICAgICBwYXRj
aCwgd2hpY2ggd2lsbCBtaWdyYXRlIGNhbGxlcnMgdG8gdXNlIHNlbmRBc3luYygpIGluc3RlYWQg
b2Ygc2VuZFN5bmMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UgeWV0LiBUaGlzIGlzIHRoZSBsYXN0IHVudGVzdGVkIGZvdW5kYXRp
b25hbAorICAgICAgICBwYXRjaCBpbiB0aGUgc2VyaWVzLiBBbGwgc3Vic2VxdWVudCBXZWJHUFUg
cGF0Y2hlcyBzaG91bGQgaGF2ZSB0ZXN0cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6cmVx
dWVzdEFkYXB0ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJp
bmRHcm91cEVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZl
ckJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BV
L1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFu
ZEVuY29kZXJEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlw
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50
M0QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQ
VS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29w
eVRleHR1cmVUYWdnZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BV
L1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BV
UXVlcnlTZXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRl
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGlt
aXRzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0
aW9uRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VVZlcnRleEF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hl
bWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQWRhcHRlclByb3h5
OjpSZW1vdGVBZGFwdGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUFk
YXB0ZXJQcm94eTo6cmVxdWVzdERldmljZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OlJlbW90ZUJp
bmRHcm91cExheW91dFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5kR3JvdXBQcm94eTo6UmVt
b3RlQmluZEdyb3VwUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJpbmRH
cm91cFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZmZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6Om1hcEFzeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFwcGVkUmFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVybmFs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVybmFs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmJlZ2lu
UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eTo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9UZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cHVzaERlYnVn
R3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cmVzb2x2ZVF1ZXJ5
U2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6ZGlzcGF0Y2hJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQ
aXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVi
dWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVsSW50
ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OlJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGlwZWxp
bmVQcm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmlj
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6
UmVtb3RlRGV2aWNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmlj
ZVByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVEZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJpbmRHcm91cExheW91dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3Jl
YXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94
eTo6Y3JlYXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVE
ZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0
ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVRdWVyeVNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnB1c2hFcnJvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6cG9wRXJyb3JT
Y29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnNldExh
YmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OlJlbW90ZUV4dGVybmFsVGV4dHVyZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHk6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXJ5U2V0UHJv
eHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVF1ZXJ5U2V0UHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVF1ZXJ5U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OnN1Ym1pdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6d3JpdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OndyaXRlVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6Y29weUV4
dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1
ZXVlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0SW5kZXhC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eTo6c2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0lu
ZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnB1c2hEZWJ1
Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZVByb3h5OjpSZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0SW5kZXhCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRpcmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJh
d0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6cG9wRGVidWdH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTY2lzc29yUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0
QmxlbmRDb25zdGFudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6YmVnaW5PY2NsdXNpb25RdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kUGFzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRl
cm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJQaXBlbGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNhbXBsZXJQcm94eTo6UmVtb3Rl
U2FtcGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVTYW1wbGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpSZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6
OmNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVy
TW9kdWxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVyZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0
ZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6ZGVz
dHJveSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlVGV4dHVyZVByb3h5OjpzZXRM
YWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OlJlbW90ZVRleHR1cmVWaWV3UHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OnNldExhYmVsSW50
ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlld1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkRvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisKIDIwMjEtMTEtMjAgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlcG9ydCB0
aGUgaW5pdGlhdGluZyB1cmwgaW5zdGVhZCBvZiB0aGUgcmVkaXJlY3RlZCBvbmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNw
cAppbmRleCAzODJmOGUzNmRmZjNjODg4MDc5YTZkNGJmYmVmMjUzNGNhMmM1YWZhLi5kNzJlZWU5
YTg1NzQ2MGZiN2E1YmQ3MTU5MjI0OTljOWU0YjJjODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCkBAIC01MCwx
MiArNTAsMTIgQEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKICAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUdQVTo6cmVxdWVz
dEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BV
OjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBib29sKT4m
JiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0
aW9ucyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0gICAgICAgIGNhbGxiYWNrKFN0
cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSk7CisgICAgICAgIGNhbGxiYWNrKFN0cmlu
Z0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViCiAgICAgICAg
ICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCiAgICAgICAgICAgICBsaW1p
dHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4Q29t
cHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKLSAgICAgICAgfSk7CisgICAgICAgIH0sIGFk
YXB0ZXItPmlzRmFsbGJhY2tBZGFwdGVyKCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRleCBm
MDllOTI1MDQyYjFmMjg3N2RkN2ZhODQyMDk4YWZmOTgxYzVhYjU3Li43NTg1NTQzMzQ1NjBjMTIz
YzNlMWZmYjlhODQxOTc4NGViYWZkMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1
ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdlYkdQVUlk
ZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpT
dXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJik7CisgICAg
dm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYs
IFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBi
b29sKT4mJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nOwogICAgIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1l
c3NhZ2VzLmluCmluZGV4IDQ3MDkxMGI5MjM1ZjQxMTUzYTYwZTY0MGM4NzM4NDE0ZDMyYzM5ZGYu
LmU0ZDk1MjY1YWE1ZDAwMzg5NGFjODA2MjkxNDAwMGEyNGNiNTNlMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
R1BVLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHUFUgTm90UmVmQ291bnRlZCBTdHJlYW0gewotICAgIHZv
aWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBv
cHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKFN0cmluZyBu
YW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVyZXMs
IFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzKSBTeW5jaHJv
bm91cworICAgIHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFw
dGVyT3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikg
LT4gKFN0cmluZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9y
dGVkRmVhdHVyZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGlt
aXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcAppbmRleCBlMjY2YmQxYjczNzliMDRkNTJkYjBjZDFiOTQwNjliZTFhOTRm
ZWU5Li5jMmVhYzIyNjMxZmE4Y2EwOTQ0ZTk1ZGNlM2NlYWIyZjcxNGVjMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBEZXNjcmlwdG9yPiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdy
b3VwRGVzY3JpcHRvciYgYmluZEdyb3VwRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBj
b252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNj
cmlwdG9yQmFzZSY+KGJpbmRHcm91cERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252ZXJ0
VG9CYWNraW5nKGJpbmRHcm91cERlc2NyaXB0b3IubGF5b3V0KTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8QmluZEdyb3Vw
RW50cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJpbmRH
cm91cERlc2NyaXB0b3IuZW50cmllcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50
cnkgOiBiaW5kR3JvdXBEZXNjcmlwdG9yLmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0
ZWRFbnRyeSA9IGNvbnZlcnRUb0JhY2tpbmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZlcnRl
ZEVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50cmll
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGVudHJpZXMp
IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRv
cj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJp
bmRHcm91cERlc2NyaXB0b3ImIGJpbmRHcm91cERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNl
ID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JC
YXNlJj4oYmluZEdyb3VwRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5jcHAKaW5kZXggZDgzMmRkMDU3YjU1OGE5
YjkwMThkMDc2Yzc5MjM0ODYyMjg5N2M0ZC4uMzI1OGNlZDI4OGMxNGIzNjE0ZDFiMmE4OGY5ODQ5
ZDk5NDM3NGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cEVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwRW50cnkuY3BwCkBAIC0yOSwxMCArMjksNDYgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXBFbnRyeSYgYmluZEdyb3VwRW50cnkpCit7CisgICAgLyoKKyAgICBQQUw6OldlYkdQVTo6
SW5kZXgzMiBiaW5kaW5nOworICAgIEJ1ZmZlckJpbmRpbmcgYnVmZmVyQmluZGluZzsKKyAgICBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgQmluZGluZ1Jlc291cmNlVHlwZSB0eXBl
OworICAgICovCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYmluZEdyb3VwRW50cnkucmVzb3Vy
Y2UsIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6U2FtcGxlcj4gc2Ft
cGxlcikgLT4gc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb252ZXJ0VG9CYWNraW5nKHNhbXBsZXIpOworICAgICAgICBpZiAoIWlkZW50
aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVy
biB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgeyB9LCBpZGVudGlmaWVyLCBCaW5kaW5nUmVz
b3VyY2VUeXBlOjpTYW1wbGVyIH0gfTsKKyAgICB9LCBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBw
ZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiB0ZXh0dXJlVmlldykgLT4gc3RkOjpvcHRpb25h
bDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252ZXJ0VG9C
YWNraW5nKHRleHR1cmVWaWV3KTsKKyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IGJpbmRHcm91cEVu
dHJ5LmJpbmRpbmcsIHsgfSwgaWRlbnRpZmllciwgQmluZGluZ1Jlc291cmNlVHlwZTo6VGV4dHVy
ZVZpZXcgfSB9OworICAgIH0sIFsmXSAoY29uc3QgYXV0byYgYnVmZmVyQmluZGluZykgLT4gc3Rk
OjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZl
ckJpbmRpbmcgPSBjb252ZXJ0VG9CYWNraW5nKGJ1ZmZlckJpbmRpbmcpOworICAgICAgICBpZiAo
IWNvbnZlcnRlZEJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgV1RGTW92ZSgq
Y29udmVydGVkQnVmZmVyQmluZGluZyksIHsgfSwgQmluZGluZ1Jlc291cmNlVHlwZTo6VGV4dHVy
ZVZpZXcgfSB9OworICAgIH0sIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlPiBleHRlcm5hbFRleHR1cmUpIC0+IHN0ZDo6b3B0aW9uYWw8Qmlu
ZEdyb3VwRW50cnk+IHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29udmVydFRvQmFja2lu
ZyhleHRlcm5hbFRleHR1cmUpOworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3VwRW50
cnkuYmluZGluZywgeyB9LCBpZGVudGlmaWVyLCBCaW5kaW5nUmVzb3VyY2VUeXBlOjpFeHRlcm5h
bFRleHR1cmUgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXBFbnRyeT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNr
aW5nKGNvbnN0IEJpbmRHcm91cEVudHJ5JiBiaW5kR3JvdXBFbnRyeSkKIHsKICAgICBzd2l0Y2gg
KGJpbmRHcm91cEVudHJ5LnR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcAppbmRl
eCA5MDY0ODRlOWQyYzBjYjNkZWQ0MmZhMmQwZjFlZjhlOTU4MDIyOTQ3Li44MWNkOWE4YzRlNTYw
MGIxMzdlOTM4NzRhNzAzNzJhZGI2MmIwMjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3Iu
Y3BwCkBAIC0yOSwxMCArMjksMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yPiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcikKK3sK
KyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6
V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGJpbmRHcm91cExheW91dERlc2NyaXB0b3Ip
KTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBW
ZWN0b3I8QmluZEdyb3VwTGF5b3V0RW50cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IuZW50cmllcy5zaXplKCkp
OworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9y
LmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRFbnRyeSA9IGNvbnZlcnRUb0JhY2tp
bmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZlcnRlZEVudHJ5KQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50cmllcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJh
c2UpLCBXVEZNb3ZlKGVudHJpZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oYmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHAKaW5kZXggODc1NzEyNjEzMTllNTc3
ZDdmOTMxMDFlZDhiMGUxYzMzOWJiNzZmYy4uODQ2YzllNTI0YmM1ZDgyZGMyMzlkODZiYjkxM2Uz
OGU3YzgzZDBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cExheW91dEVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuY3BwCkBAIC0yOSwxMCArMjksNTEgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdy
b3VwTGF5b3V0RW50cnk+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRFbnRyeSYgYmluZEdyb3VwTGF5b3V0
RW50cnkpCit7CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJCaW5kaW5nTGF5b3V0PiBidWZmZXI7
CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LmJ1ZmZlcikgeworICAgICAgICBidWZmZXIg
PSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlvdXRFbnRyeS5idWZmZXIpOworICAgICAg
ICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gc2FtcGxlcjsKKyAgICBp
ZiAoYmluZEdyb3VwTGF5b3V0RW50cnkuc2FtcGxlcikgeworICAgICAgICBzYW1wbGVyID0gY29u
dmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnkuc2FtcGxlcik7CisgICAgICAgIGlm
ICghc2FtcGxlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlQmluZGluZ0xheW91dD4gdGV4dHVyZTsKKyAgICBpZiAo
YmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSkgeworICAgICAgICB0ZXh0dXJlID0gY29udmVy
dFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSk7CisgICAgICAgIGlmICgh
dGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAg
c3RkOjpvcHRpb25hbDxTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IHN0b3JhZ2VUZXh0dXJl
OworICAgIGlmIChiaW5kR3JvdXBMYXlvdXRFbnRyeS5zdG9yYWdlVGV4dHVyZSkgeworICAgICAg
ICBzdG9yYWdlVGV4dHVyZSA9IGNvbnZlcnRUb0JhY2tpbmcoKmJpbmRHcm91cExheW91dEVudHJ5
LnN0b3JhZ2VUZXh0dXJlKTsKKyAgICAgICAgaWYgKCFzdG9yYWdlVGV4dHVyZSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxFeHRl
cm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0PiBleHRlcm5hbFRleHR1cmU7CisgICAgaWYgKGJpbmRH
cm91cExheW91dEVudHJ5LmV4dGVybmFsVGV4dHVyZSkgeworICAgICAgICBleHRlcm5hbFRleHR1
cmUgPSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlvdXRFbnRyeS5leHRlcm5hbFRleHR1
cmUpOworICAgICAgICBpZiAoIWV4dGVybmFsVGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBiaW5kR3JvdXBMYXlvdXRFbnRy
eS5iaW5kaW5nLCBiaW5kR3JvdXBMYXlvdXRFbnRyeS52aXNpYmlsaXR5LCBXVEZNb3ZlKGJ1ZmZl
ciksIFdURk1vdmUoc2FtcGxlciksIFdURk1vdmUodGV4dHVyZSksIFdURk1vdmUoc3RvcmFnZVRl
eHR1cmUpLCBXVEZNb3ZlKGV4dGVybmFsVGV4dHVyZSkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRFbnRyeT4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cExheW91dEVudHJ5JiBiaW5k
R3JvdXBMYXlvdXRFbnRyeSkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCdWZm
ZXJCaW5kaW5nTGF5b3V0PiBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcAppbmRleCBjZTc2YjBiZmQwZTRmZTJjMzYx
YjUyMDVkYTgwZmU5ZmE3YmEzNTZmLi4xNDA4MzFkODM1YmY1ZmJjMzlkMzdlZTA0MDU2YmI0Nzc1
MWE4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxl
bmRDb21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVC
bGVuZENvbXBvbmVudC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCbGVuZENvbXBvbmVudD4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJsZW5kQ29t
cG9uZW50JiBibGVuZENvbXBvbmVudCkKK3sKKyAgICByZXR1cm4geyB7IGJsZW5kQ29tcG9uZW50
Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3JjRmFjdG9yLCBibGVuZENvbXBvbmVudC5kc3RG
YWN0b3IgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCbGVuZENvbXBvbmVu
dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJs
ZW5kQ29tcG9uZW50JiBibGVuZENvbXBvbmVudCkKIHsKICAgICByZXR1cm4geyB7IGJsZW5kQ29t
cG9uZW50Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3JjRmFjdG9yLCBibGVuZENvbXBvbmVu
dC5kc3RGYWN0b3IgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUJsZW5kU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJsZW5kU3RhdGUuY3BwCmluZGV4IGJiNGQyZTc5YTQ4ZTI4N2E2ODc0MmUyMzE5MGFkNzZhNjcy
MzkxN2MuLjlmZWExNzczNjc3M2ZlMmUwYmE0ZmRkODk1YTlhYTgxYjI3YTNjNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0ZS5jcHAKQEAgLTI5
LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmxl
bmRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFs
PEJsZW5kU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2ViR1BVOjpCbGVuZFN0YXRlJiBibGVuZFN0YXRlKQoreworICAgIGF1dG8gY29s
b3IgPSBjb252ZXJ0VG9CYWNraW5nKGJsZW5kU3RhdGUuY29sb3IpOworICAgIGlmICghY29sb3Ip
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGFscGhhID0gY29udmVy
dFRvQmFja2luZyhibGVuZFN0YXRlLmFscGhhKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpjb2xvciksIFdU
Rk1vdmUoKmFscGhhKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJsZW5k
U3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBCbGVuZFN0YXRlJiBibGVuZFN0YXRlKQogewogICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0RnJv
bUJhY2tpbmcoYmxlbmRTdGF0ZS5jb2xvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKaW5kZXggZWZiYzlkOTRhOGJiZTEzODEy
N2E2ZWM2ZTU5ZDUzYWE3ZGEwNWFmZC4uMzE4NmU1ZWFmOTE2YWQ0ZWRiZTBmZTdlMzAzZWViZDk5
YTdjNTNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1
ZmZlckJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVC
dWZmZXJCaW5kaW5nLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZz4gQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckJpbmRp
bmcmIGJ1ZmZlckJpbmRpbmcpCit7CisgICAgYXV0byBidWZmZXIgPSBjb252ZXJ0VG9CYWNraW5n
KGJ1ZmZlckJpbmRpbmcuYnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgYnVmZmVyLCBidWZmZXJCaW5kaW5nLm9m
ZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6QnVmZmVyQmluZGluZz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZy
b21CYWNraW5nKGNvbnN0IEJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRpbmcpCiB7CiAgICAgYXV0
byogYnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGJ1ZmZlckJpbmRpbmcuYnVmZmVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJC
aW5kaW5nTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZm
ZXJCaW5kaW5nTGF5b3V0LmNwcAppbmRleCA4NjhjMzQ3YTZhOTk0MTAxNmY4MTVjNjgwNjZiYTkw
ZjQ4YWFlM2ZiLi42NDY5ODZhNzc5NWRhNjFhMDk3NDc4NDFlYTIyMmVmOGExYjc1MzA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZ0xh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJp
bmRpbmdMYXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCdWZmZXJCaW5kaW5nTGF5b3V0PiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
QnVmZmVyQmluZGluZ0xheW91dCYgYnVmZmVyQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1cm4g
eyB7IGJ1ZmZlckJpbmRpbmdMYXlvdXQudHlwZSwgYnVmZmVyQmluZGluZ0xheW91dC5oYXNEeW5h
bWljT2Zmc2V0LCBidWZmZXJCaW5kaW5nTGF5b3V0Lm1pbkJpbmRpbmdTaXplIH0gfTsKK30KKwog
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZ0xheW91dD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJ1ZmZlckJpbmRpbmdM
YXlvdXQmIGJ1ZmZlckJpbmRpbmdMYXlvdXQpCiB7CiAgICAgcmV0dXJuIHsgeyBidWZmZXJCaW5k
aW5nTGF5b3V0LnR5cGUsIGJ1ZmZlckJpbmRpbmdMYXlvdXQuaGFzRHluYW1pY09mZnNldCwgYnVm
ZmVyQmluZGluZ0xheW91dC5taW5CaW5kaW5nU2l6ZSB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAKaW5kZXggNzQ1
NjY2YWE5ODlkNjNiYjE5OGNmYWIxMTlhODFiOGJhMjhiODJlOS4uMDBmNmM3ZDc2YWU3ZTg1OTJh
NTQ3NTYyY2Y0MTgxMGE5NzcyZmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVmZmVy
RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGJ1ZmZlckRlc2NyaXB0b3IpCit7Cisg
ICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6Oldl
YkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihidWZmZXJEZXNjcmlwdG9yKSk7CisgICAgaWYg
KCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCpiYXNlKSwgYnVmZmVyRGVzY3JpcHRvci5zaXplLCBidWZmZXJEZXNjcmlwdG9yLnVz
YWdlLCBidWZmZXJEZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRpb24gfSB9OworfQorCiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQnVmZmVyRGVzY3JpcHRvciYgYnVmZmVy
RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihidWZmZXJEZXNjcmlwdG9yKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ2FudmFzQ29u
ZmlndXJhdGlvbi5jcHAKaW5kZXggZTY2NjdkYWM0NTZkZjcyZmViZDAyY2RlYmMwMTMzMTFiNmZh
MWFlNS4uNDgxMzI1MjI2ZGY2OGM5M2E5MTgyN2MyMjNmZTA4ZmZjNGI4NTI4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1
cmF0aW9uLmNwcApAQCAtMjksMTAgKzI5LDI3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q2FudmFzQ29uZmlndXJhdGlvbj4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNhbnZh
c0NvbmZpZ3VyYXRpb24mIGNhbnZhc0NvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBkZXZpY2Ug
PSBjb252ZXJ0VG9CYWNraW5nKGNhbnZhc0NvbmZpZ3VyYXRpb24uZGV2aWNlKTsKKyAgICBpZiAo
IWRldmljZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9u
YWw8RXh0ZW50M0Q+IHNpemU7CisgICAgaWYgKGNhbnZhc0NvbmZpZ3VyYXRpb24uc2l6ZSkgewor
ICAgICAgICBzaXplID0gY29udmVydFRvQmFja2luZygqY2FudmFzQ29uZmlndXJhdGlvbi5zaXpl
KTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICByZXR1cm4geyB7IGRldmljZSwgY2FudmFzQ29uZmlndXJhdGlvbi5mb3Jt
YXQsIGNhbnZhc0NvbmZpZ3VyYXRpb24udXNhZ2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29sb3JT
cGFjZSwgY2FudmFzQ29uZmlndXJhdGlvbi5jb21wb3NpdGluZ0FscGhhTW9kZSwgV1RGTW92ZShz
aXplKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNhbnZhc0NvbmZpZ3Vy
YXRpb24+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBDYW52YXNDb25maWd1cmF0aW9uJiBjYW52YXNDb25maWd1cmF0aW9uKQogewogICAgIGF1dG8q
IGRldmljZSA9IGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhjYW52YXNDb25maWd1cmF0aW9uLmRl
dmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29s
b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcAppbmRl
eCBiMWE3MTE5NzhhY2ZlMzUxYmRiYzI4NDFkM2U4M2VmMDNiNzNmZjlhLi4yNzRkNzgyYzg0MDhk
YzA1NTE5ZGM5NjUwMWU2NjU4ZmRmNWFkZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVDb2xvci5jcHAKQEAgLTI5LDEwICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29sb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb2xvckRpY3Q+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmIGNvbG9yRGlj
dCkKK3sKKyAgICByZXR1cm4geyB7IGNvbG9yRGljdC5yLCBjb2xvckRpY3QuZywgY29sb3JEaWN0
LmIsIGNvbG9yRGljdC5hIH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxDb2xvcj4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9y
JiBjb2xvcikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihjb2xvciwgW10gKGNvbnN0IFZl
Y3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHsKKyAgICAgICAg
cmV0dXJuIHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6
OkNvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbG9yPiB7CisgICAgICAg
IGF1dG8gY29sb3IgPSBjb252ZXJ0VG9CYWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlmICgh
Y29sb3IpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4g
eyB7IFdURk1vdmUoKmNvbG9yKSB9IH07CisgICAgfSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OkNvbG9yRGljdD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZy
b21CYWNraW5nKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0KQogewogICAgIHJldHVybiB7IHsg
Y29sb3JEaWN0LnIsIGNvbG9yRGljdC5nLCBjb2xvckRpY3QuYiwgY29sb3JEaWN0LmEgfSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFyZ2V0
U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yVGFyZ2V0
U3RhdGUuY3BwCmluZGV4IGYzOWNmYmMxZGIwOGVmNzcwZDg0Y2U1MmJlYWMxYTAyM2RhM2ZmNWIu
LjNlZTE4MTNkMTE5NjUwYjg3NjExOThkYzg3ZDgyMWFiMzk4NjVhYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5jcHAK
QEAgLTI5LDEwICsyOSwyMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQ29sb3JUYXJnZXRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xvclRhcmdldFN0YXRlJiBjb2xv
clRhcmdldFN0YXRlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRTdGF0ZT4gYmxlbmQ7Cisg
ICAgaWYgKGNvbG9yVGFyZ2V0U3RhdGUuYmxlbmQpIHsKKyAgICAgICAgYmxlbmQgPSBjb252ZXJ0
VG9CYWNraW5nKCpjb2xvclRhcmdldFN0YXRlLmJsZW5kKTsKKyAgICAgICAgaWYgKCFibGVuZCkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsg
eyBjb2xvclRhcmdldFN0YXRlLmZvcm1hdCwgV1RGTW92ZShibGVuZCksIGNvbG9yVGFyZ2V0U3Rh
dGUud3JpdGVNYXNrIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29sb3JU
YXJnZXRTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5n
KGNvbnN0IENvbG9yVGFyZ2V0U3RhdGUmIGNvbG9yVGFyZ2V0U3RhdGUpCiB7CiAgICAgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZT4gYmxlbmQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXJEZXNjcmlw
dG9yLmNwcAppbmRleCA0MmI5OThlZGRlM2U0YWJjYzk4YTBlNzIxNGVkMmNkZTAxZWM4YjRmLi5h
Yjg5ZjVhNjZkMGJmMjViZTY0MThkYjAxMjUwMTkyMGFkOTQwNDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4g
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBjb21tYW5kQnVmZmVyRGVzY3JpcHRvcikKK3sK
KyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6
V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKSk7
CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGNvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhz
dGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRCdWZmZXJEZXNj
cmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCmluZGV4IDA5MjRkNDE3YTUyMTFk
Mjk4MGFlZTI3NTA5YmU2YjVmNTJjODQyNDcuLjIyMTg3NjkzOTgwZjE3YThiMWE2YTdlOTRmYmM0
OGRmNWM1ZDFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjks
MjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNv
ZGVyRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVzY3Jp
cHRvciYgY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZl
cnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0
b3JCYXNlJj4oY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNl
KSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVz
Y3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKQog
ewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBP
YmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXBpbGF0aW9uTWVzc2Fn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNz
YWdlLmNwcAppbmRleCBjODRkODhlOTFjNDg2OTM4ZGRkZDRkZTg1YWY4YTE0YzRiYjU2MDU5Li44
YjA3YWI5ZDgwZWNhNDljZDFjMTcxNWE1NjVjOGI4MzljMjRiOGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmNw
cApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAorc3RkOjpvcHRpb25hbDxDb21waWxhdGlvbk1lc3NhZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3Nh
Z2UmIGNvbXBpbGF0aW9uTWVzc2FnZSkKK3sKKyAgICByZXR1cm4geyB7IGNvbXBpbGF0aW9uTWVz
c2FnZS5tZXNzYWdlKCksIGNvbXBpbGF0aW9uTWVzc2FnZS50eXBlKCksIGNvbXBpbGF0aW9uTWVz
c2FnZS5saW5lTnVtKCksIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lUG9zKCksIGNvbXBpbGF0aW9u
TWVzc2FnZS5vZmZzZXQoKSwgY29tcGlsYXRpb25NZXNzYWdlLmxlbmd0aCgpIH0gfTsKK30KKwog
UmVmUHRyPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBDb21waWxhdGlvbk1lc3NhZ2UmIGNv
bXBpbGF0aW9uTWVzc2FnZSkKIHsKICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9u
TWVzc2FnZTo6Y3JlYXRlKGNvbXBpbGF0aW9uTWVzc2FnZS5tZXNzYWdlLCBjb21waWxhdGlvbk1l
c3NhZ2UudHlwZSwgY29tcGlsYXRpb25NZXNzYWdlLmxpbmVOdW0sIGNvbXBpbGF0aW9uTWVzc2Fn
ZS5saW5lUG9zLCBjb21waWxhdGlvbk1lc3NhZ2Uub2Zmc2V0LCBjb21waWxhdGlvbk1lc3NhZ2Uu
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVD
b21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggMTkyOWRiNWY0NDE3ODFiMGM4ZTI3
OWY4ZDI5OTU1MTFmYjgzMjkzMC4uNDI2ZjdkMTcwYzAyYzRlYzdhOGExNjQ4N2MzNWVhNjlmOTZl
OTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQYXNzRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyNCBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBh
c3NEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBjb21wdXRlUGFzc0Rlc2Ny
aXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxj
b25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihjb21wdXRlUGFzc0Rlc2Ny
aXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvIHRpbWVzdGFtcFdyaXRlcyA9IGNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBhc3NE
ZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYgKCF0aW1lc3RhbXBXcml0ZXMpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJh
c2UpLCBXVEZNb3ZlKCp0aW1lc3RhbXBXcml0ZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yJiBjb21w
dXRlUGFzc0Rlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBhc3NEZXNj
cmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAppbmRleCBhNmY5Mjk1ODJk
ZTNkOGVkMmMyYzg5YzkzYzY2MjRlZjE2M2RmMzkxLi5lYTc5MTIwOWY1ZjBiOTFkOWI5YjNkZjI2
Yzg0ZjllODc4NzM4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5jcHAKQEAgLTI5
LDEwICsyOSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAorc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlPiBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NUaW1lc3RhbXBXcml0ZSYgY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSkKK3sKKyAgICBhdXRv
IHF1ZXJ5U2V0ID0gY29udmVydFRvQmFja2luZyhjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLnF1
ZXJ5U2V0KTsKKyAgICBpZiAoIXF1ZXJ5U2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyBxdWVyeVNldCwgY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZS5x
dWVyeUluZGV4LCBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLmxvY2F0aW9uIH0gfTsKK30KKwor
c3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcz4gQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
VGltZXN0YW1wV3JpdGVzJiBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcykKK3sKKyAgICBWZWN0
b3I8Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0YW1wV3JpdGVzOworICAgIHRpbWVz
dGFtcFdyaXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbXB1dGVQYXNzVGltZXN0YW1wV3Jp
dGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0aW1lc3RhbXBXcml0ZSA6IGNvbXB1
dGVQYXNzVGltZXN0YW1wV3JpdGVzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkVGltZXN0YW1w
V3JpdGUgPSBjb252ZXJ0VG9CYWNraW5nKHRpbWVzdGFtcFdyaXRlKTsKKyAgICAgICAgaWYgKCFj
b252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHRpbWVzdGFtcFdyaXRlcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVy
dGVkVGltZXN0YW1wV3JpdGUpKTsKKyAgICB9CisgICAgcmV0dXJuIHRpbWVzdGFtcFdyaXRlczsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0
ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENv
bXB1dGVQYXNzVGltZXN0YW1wV3JpdGUmIGNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUpCiB7CiAg
ICAgYXV0byogcXVlcnlTZXQgPSBjb252ZXJ0UXVlcnlTZXRGcm9tQmFja2luZyhjb21wdXRlUGFz
c1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApp
bmRleCBjNWRlYWUyNWI1YWZiNTIwZDQwYjA4M2IyZjMwZmE4MmIwNDBiNmM0Li5kZDk5ODgzZTA2
N2U2YWY3MzllYWVhZDQwMzc3ZjA4MmZkY2I5NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3IuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikK
K3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBB
TDo6V2ViR1BVOjpQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gY29tcHV0ZSA9IGNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5jb21wdXRlKTsKKyAgICBpZiAoIWNvbXB1dGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpjb21wdXRl
KSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9y
KQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25z
dCBQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikpOwpA
QCAtNDMsNyArNTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0OgogICAgIGlmICghY29tcHV0
ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUo
KmNvbXB1dGUpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpj
b21wdXRlKSB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaAppbmRleCAzNmJlNjk5ZjM4YmYwNmE2ZmIxYjBhY2Q5ZWE4NmMwYTlmMmQyZGY3Li5hNTMz
ODc2NzhjYjlkNzVhMjc2ZTQ2Mzc1NDFkMzE2MDY5YjA3ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaApAQCAtMjcsNDEgKzI3LDI0MiBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisj
aW5jbHVkZSAiV2ViR1BVQ29sb3IuaCIKKyNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcFdyaXRlcy5oIgorI2luY2x1ZGUgIldlYkdQVUVycm9yLmgiCisjaW5jbHVkZSAiV2ViR1BV
RXh0ZW50M0QuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiV2Vi
R1BVT3JpZ2luMkQuaCIKKyNpbmNsdWRlICJXZWJHUFVPcmlnaW4zRC5oIgorI2luY2x1ZGUgIldl
YkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuaCIKKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUNvbG9yLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVRXJyb3IuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUV4dGVudDNELmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPcmlnaW4y
RC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT3JpZ2luM0QuaD4KKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0
ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgUEFMOjpXZWJH
UFUgewogCiBjbGFzcyBBZGFwdGVyOwogY2xhc3MgQmluZEdyb3VwOworc3RydWN0IEJpbmRHcm91
cERlc2NyaXB0b3I7CitzdHJ1Y3QgQmluZEdyb3VwRW50cnk7CiBjbGFzcyBCaW5kR3JvdXBMYXlv
dXQ7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBCaW5kR3JvdXBM
YXlvdXRFbnRyeTsKK3N0cnVjdCBCbGVuZENvbXBvbmVudDsKK3N0cnVjdCBCbGVuZFN0YXRlOwog
Y2xhc3MgQnVmZmVyOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7CitzdHJ1Y3QgQnVmZmVyQmluZGlu
Z0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOworc3RydWN0IENhbnZhc0NvbmZpZ3Vy
YXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKIGNsYXNzIENvbW1hbmRCdWZmZXI7Citz
dHJ1Y3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I7CiBjbGFzcyBDb21tYW5kRW5jb2RlcjsKK3N0
cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CitjbGFzcyBDb21waWxhdGlvbk1lc3NhZ2U7
CitzdHJ1Y3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yOwogY2xhc3MgQ29tcHV0ZVBhc3NFbmNvZGVy
OwogY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOworc3RydWN0IENvbXB1dGVQaXBlbGluZURlc2NyaXB0
b3I7CitzdHJ1Y3QgRGVwdGhTdGVuY2lsU3RhdGU7CiBjbGFzcyBEZXZpY2U7CitzdHJ1Y3QgRGV2
aWNlRGVzY3JpcHRvcjsKK2NsYXNzIEV4dGVybmFsVGV4dHVyZTsKK3N0cnVjdCBFeHRlcm5hbFRl
eHR1cmVCaW5kaW5nTGF5b3V0Oworc3RydWN0IEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I7Citz
dHJ1Y3QgRnJhZ21lbnRTdGF0ZTsKIGNsYXNzIEdQVTsKK3N0cnVjdCBJZGVudGlmaWVyOworc3Ry
dWN0IEltYWdlQ29weUJ1ZmZlcjsKK3N0cnVjdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlOworc3Ry
dWN0IEltYWdlQ29weVRleHR1cmU7CitzdHJ1Y3QgSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZDsKK3N0
cnVjdCBJbWFnZURhdGFMYXlvdXQ7CitzdHJ1Y3QgTXVsdGlzYW1wbGVTdGF0ZTsKK3N0cnVjdCBP
YmplY3REZXNjcmlwdG9yQmFzZTsKK2NsYXNzIE91dE9mTWVtb3J5RXJyb3I7CitzdHJ1Y3QgUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZTsKIGNsYXNzIFBpcGVsaW5lTGF5b3V0Oworc3RydWN0IFBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmltaXRpdmVTdGF0ZTsKK3N0cnVjdCBQcm9n
cmFtbWFibGVTdGFnZTsKIGNsYXNzIFF1ZXJ5U2V0Oworc3RydWN0IFF1ZXJ5U2V0RGVzY3JpcHRv
cjsKIGNsYXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKIGNsYXNzIFJlbmRl
ckJ1bmRsZTsKK3N0cnVjdCBSZW5kZXJCdW5kbGVEZXNjcmlwdG9yOworY2xhc3MgUmVuZGVyQnVu
ZGxlRW5jb2RlcjsKK3N0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKK3N0cnVj
dCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yOwogY2xhc3MgUmVuZGVy
UGFzc0VuY29kZXI7CitzdHJ1Y3QgUmVuZGVyUGFzc0xheW91dDsKIGNsYXNzIFJlbmRlclBpcGVs
aW5lOworc3RydWN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcjsKK3N0cnVjdCBSZXF1ZXN0QWRh
cHRlck9wdGlvbnM7CiBjbGFzcyBTYW1wbGVyOworc3RydWN0IFNhbXBsZXJCaW5kaW5nTGF5b3V0
Oworc3RydWN0IFNhbXBsZXJEZXNjcmlwdG9yOwogY2xhc3MgU2hhZGVyTW9kdWxlOworc3RydWN0
IFNoYWRlck1vZHVsZURlc2NyaXB0b3I7CitzdHJ1Y3QgU3RlbmNpbEZhY2VTdGF0ZTsKK3N0cnVj
dCBTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ7CitjbGFzcyBTdXBwb3J0ZWRGZWF0dXJlczsK
K2NsYXNzIFN1cHBvcnRlZExpbWl0czsKIGNsYXNzIFRleHR1cmU7CitzdHJ1Y3QgVGV4dHVyZUJp
bmRpbmdMYXlvdXQ7CitzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CiBjbGFzcyBUZXh0dXJlVmll
dzsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CitjbGFzcyBWYWxpZGF0aW9uRXJyb3I7
CitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZlcnRleEJ1ZmZlckxheW91dDsKK3N0
cnVjdCBWZXJ0ZXhTdGF0ZTsKIAogfSAvLyBuYW1lc3BhY2UgUEFMOjpXZWJHUFUKIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RydWN0IEJpbmRHcm91cERlc2NyaXB0b3I7CitzdHJ1
Y3QgQmluZEdyb3VwRW50cnk7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcjsKK3N0
cnVjdCBCaW5kR3JvdXBMYXlvdXRFbnRyeTsKK3N0cnVjdCBCbGVuZENvbXBvbmVudDsKK3N0cnVj
dCBCbGVuZFN0YXRlOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7CitzdHJ1Y3QgQnVmZmVyQmluZGlu
Z0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOworc3RydWN0IENhbnZhc0NvbmZpZ3Vy
YXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKK3N0cnVjdCBDb21tYW5kQnVmZmVyRGVz
Y3JpcHRvcjsKK3N0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CitzdHJ1Y3QgQ29tcGls
YXRpb25NZXNzYWdlOworc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKK3N0cnVjdCBDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOworc3RydWN0IERlcHRoU3RlbmNpbFN0YXRlOworc3RydWN0
IERldmljZURlc2NyaXB0b3I7CitzdHJ1Y3QgRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dDsK
K3N0cnVjdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yOworc3RydWN0IEZyYWdtZW50U3RhdGU7
CitzdHJ1Y3QgSWRlbnRpZmllcjsKK3N0cnVjdCBJbWFnZUNvcHlCdWZmZXI7CitzdHJ1Y3QgSW1h
Z2VDb3B5RXh0ZXJuYWxJbWFnZTsKK3N0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOworc3RydWN0IElt
YWdlQ29weVRleHR1cmVUYWdnZWQ7CitzdHJ1Y3QgSW1hZ2VEYXRhTGF5b3V0Oworc3RydWN0IE11
bHRpc2FtcGxlU3RhdGU7CitzdHJ1Y3QgT2JqZWN0RGVzY3JpcHRvckJhc2U7CitzdHJ1Y3QgT3V0
T2ZNZW1vcnlFcnJvcjsKK3N0cnVjdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlOworc3RydWN0IFBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmltaXRpdmVTdGF0ZTsKK3N0cnVjdCBQ
cm9ncmFtbWFibGVTdGFnZTsKK3N0cnVjdCBRdWVyeVNldERlc2NyaXB0b3I7CitzdHJ1Y3QgUmVu
ZGVyQnVuZGxlRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRv
cjsKK3N0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXNjcmlwdG9yOworc3Ry
dWN0IFJlbmRlclBhc3NMYXlvdXQ7CitzdHJ1Y3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yOwor
c3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKK3N0cnVjdCBTYW1wbGVyQmluZGluZ0xheW91
dDsKK3N0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKK3N0cnVjdCBTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yOworc3RydWN0IFN0ZW5jaWxGYWNlU3RhdGU7CitzdHJ1Y3QgU3RvcmFnZVRleHR1cmVCaW5k
aW5nTGF5b3V0Oworc3RydWN0IFN1cHBvcnRlZEZlYXR1cmVzOworc3RydWN0IFN1cHBvcnRlZExp
bWl0czsKK3N0cnVjdCBUZXh0dXJlQmluZGluZ0xheW91dDsKK3N0cnVjdCBUZXh0dXJlRGVzY3Jp
cHRvcjsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7CitzdHJ1Y3QgVmFsaWRhdGlvbkVy
cm9yOworc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKK3N0cnVjdCBWZXJ0ZXhCdWZmZXJMYXlvdXQ7
CitzdHJ1Y3QgVmVydGV4U3RhdGU7CisKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0IDog
cHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgpID0gZGVmYXVsdDsKIAorICAgIHN0
ZDo6b3B0aW9uYWw8QmluZEdyb3VwRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Qmlu
ZEdyb3VwRW50cnk+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91
cEVudHJ5Jik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yPiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBMYXlvdXRFbnRyeT4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RW50cnkmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPEJsZW5kQ29tcG9uZW50PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpCbGVuZENvbXBvbmVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8QmxlbmRTdGF0ZT4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZSYpOworICAgIHN0
ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6QnVmZmVyQmluZGluZyYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZ0xh
eW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZ0xh
eW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGVzY3JpcHRvcj4gY29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0
aW9uYWw8Q2FudmFzQ29uZmlndXJhdGlvbj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6Q2FudmFzQ29uZmlndXJhdGlvbiYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9yJik7CisgICAgc3RkOjpvcHRp
b25hbDxDb2xvckRpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9y
RGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JUYXJnZXRTdGF0ZT4gY29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29sb3JUYXJnZXRTdGF0ZSYpOworICAgIHN0ZDo6b3B0
aW9uYWw8Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxD
b21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcGls
YXRpb25NZXNzYWdlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21waWxh
dGlvbk1lc3NhZ2UmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVQYXNzRGVzY3JpcHRvcj4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9y
Jik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlPiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlJik7
CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcz4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERlcHRoU3RlbmNpbFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8RGV2
aWNlRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNl
RGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8RXJyb3I+IGNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkVycm9yJik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlbnQzRD4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPEV4dGVudDNERGljdD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6RXh0ZW50M0REaWN0Jik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1cmVCaW5k
aW5nTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmVCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1cmVE
ZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRl
eHR1cmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxGcmFnbWVudFN0YXRlPiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpGcmFnbWVudFN0YXRlJik7CisgICAgc3Rk
OjpvcHRpb25hbDxJZGVudGlmaWVyPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpJZGVudGlmaWVyJik7CisgICAgc3RkOjpvcHRpb25hbDxJbWFnZUNvcHlCdWZmZXI+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYpOworICAgIHN0
ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZT4gY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSYpOworICAgIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VDb3B5VGV4dHVyZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VDb3B5VGV4dHVyZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5VGV4dHVyZVRh
Z2dlZD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVy
ZVRhZ2dlZCYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhTGF5b3V0PiBjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlvdXQmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6Ok11bHRpc2FtcGxlU3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9iamVjdERlc2NyaXB0
b3JCYXNlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlw
dG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IGNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjJEJik7CisgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4y
RERpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjJERGljdCYp
OworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6Ok9yaWdpbjNEJik7CisgICAgc3RkOjpvcHRpb25hbDxPcmlnaW4zRERpY3Q+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdCYpOworICAgIHN0
ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxp
bmVEZXNjcmlwdG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8UGlwZWxpbmVMYXlvdXREZXNj
cmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91
dERlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByaW1pdGl2ZVN0YXRlPiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQcmltaXRpdmVTdGF0ZSYpOworICAgIHN0ZDo6
b3B0aW9uYWw8UHJvZ3JhbW1hYmxlU3RhZ2U+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OlByb2dyYW1tYWJsZVN0YWdlJik7CisgICAgc3RkOjpvcHRpb25hbDxRdWVyeVNldERl
c2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0RGVz
Y3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRGVzY3JpcHRvcj4gY29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVzY3JpcHRvciYp
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlw
dG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50PiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
Jik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXNjcmlwdG9yPiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYp
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0xheW91dD4gY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8
UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRl
clBhc3NUaW1lc3RhbXBXcml0ZXM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxSZXF1ZXN0QWRhcHRl
ck9wdGlvbnM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFw
dGVyT3B0aW9ucyYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2FtcGxlckJpbmRpbmdMYXlvdXQ+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJCaW5kaW5nTGF5b3V0Jik7
CisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNoYWRlck1vZHVsZURlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0ZW5jaWxG
YWNlU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN0ZW5jaWxGYWNl
U3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dD4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5n
TGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTdXBwb3J0ZWRGZWF0dXJlcz4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFN1cHBvcnRlZExpbWl0cz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6U3VwcG9ydGVkTGltaXRzJik7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlQmluZGlu
Z0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZUJpbmRp
bmdMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHR1cmVEZXNjcmlwdG9yPiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFZhbGlkYXRpb25FcnJvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VmFs
aWRhdGlvbkVycm9yJik7CisgICAgc3RkOjpvcHRpb25hbDxWZXJ0ZXhBdHRyaWJ1dGU+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleEF0dHJpYnV0ZSYpOworICAgIHN0
ZDo6b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlcnRl
eFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWZXJ0ZXhTdGF0ZSYp
OworCiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkFkYXB0ZXImKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVy
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYpID0gMDsKICAg
ICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0JikgPSAwOwpAQCAtNzEsNiArMjcyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVu
dGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGlu
ZSYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6RGV2aWNlJikgPSAwOworICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRp
ZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUm
KSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkdQVSYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIg
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXQmKSA9IDA7
CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlF1ZXJ5U2V0JikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKaW5kZXggMmJjYmIwNmVhMjQw
NzQ1YzA5YjRjNjJiYzAwOGVhYjg5ZDQzYzRlMy4uOTBkMThmYzE4NjIyYzQ4YWFlODk1NDMxMTE5
NGZlZjc5MjlkODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RGVwdGhTdGVuY2ls
U3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhTdGVuY2lsU3RhdGUpCit7CisgICAg
YXV0byBzdGVuY2lsRnJvbnQgPSBjb252ZXJ0VG9CYWNraW5nKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxGcm9udCk7CisgICAgaWYgKCFzdGVuY2lsRnJvbnQpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0ZW5jaWxCYWNrID0gY29udmVydFRvQmFja2luZyhkZXB0
aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFjayk7CisgICAgaWYgKCFzdGVuY2lsQmFjaykKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgZGVwdGhTdGVuY2lsU3Rh
dGUuZm9ybWF0LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFdyaXRlRW5hYmxlZCwgZGVwdGhTdGVu
Y2lsU3RhdGUuZGVwdGhDb21wYXJlLCBXVEZNb3ZlKCpzdGVuY2lsRnJvbnQpLCBXVEZNb3ZlKCpz
dGVuY2lsQmFjayksIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxSZWFkTWFzaywgZGVwdGhTdGVu
Y2lsU3RhdGUuc3RlbmNpbFdyaXRlTWFzaywgZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhCaWFzLCBk
ZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEJpYXNTbG9wZVNjYWxlLCBkZXB0aFN0ZW5jaWxTdGF0ZS5k
ZXB0aEJpYXNDbGFtcCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkRlcHRo
U3RlbmNpbFN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgRGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3RlbmNpbFN0YXRlKQogewogICAgIGF1
dG8gc3RlbmNpbEZyb250ID0gY29udmVydEZyb21CYWNraW5nKGRlcHRoU3RlbmNpbFN0YXRlLnN0
ZW5jaWxGcm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVRGV2aWNlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVRGV2aWNlRGVzY3JpcHRvci5jcHAKaW5kZXggYzBhNGQ2ZDg2ZWFhZmVmNzM4MThhODE1ZTRj
OTUyZGI0NGFlMGUwMy4uNTgwYWEwNmJiZTQ1MDk3MmE3MmViYzNjN2RkZWM0YjE5Y2E1Yjc1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURlc2Ny
aXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VE
ZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZURl
c2NyaXB0b3ImIGRldmljZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRv
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJh
c2UmPihkZXZpY2VEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgZGV2aWNlRGVz
Y3JpcHRvci5yZXF1aXJlZEZlYXR1cmVzIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6RGV2aWNlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IERldmljZURlc2NyaXB0b3ImIGRldmljZURlc2NyaXB0b3IpCiB7
CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9i
amVjdERlc2NyaXB0b3JCYXNlJj4oZGV2aWNlRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJvci5jcHAKaW5kZXggZThmN2RiN2RmZjZkZjYyNmE3NTA1
OWRlOGJjMTYzN2M2M2FjODgzNy4uMDZkMzFjNWQzMDkwZTRhOTJmYTA2MTJjOTg5NzZlNjQyNGIz
NGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUVycm9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXJyb3IuY3BwCkBA
IC0yOSwxMCArMjksMjYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8
RXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpFcnJvciYgZXJyb3IpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZXJy
b3IsIFt0aGlzXSAoY29uc3QgUmVmPFBBTDo6V2ViR1BVOjpPdXRPZk1lbW9yeUVycm9yPiYgb3V0
T2ZNZW1vcnlFcnJvcikgLT4gc3RkOjpvcHRpb25hbDxFcnJvcj4geworICAgICAgICBhdXRvIHJl
c3VsdCA9IGNvbnZlcnRUb0JhY2tpbmcob3V0T2ZNZW1vcnlFcnJvci5nZXQoKSk7CisgICAgICAg
IGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHsgeyAqcmVzdWx0IH0gfTsKKyAgICB9LCBbdGhpc10gKGNvbnN0IFJlZjxQQUw6Oldl
YkdQVTo6VmFsaWRhdGlvbkVycm9yPiYgdmFsaWRhdGlvbkVycm9yKSAtPiBzdGQ6Om9wdGlvbmFs
PEVycm9yPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29udmVydFRvQmFja2luZyh2YWxpZGF0
aW9uRXJyb3IuZ2V0KCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgKnJlc3VsdCB9IH07CisgICAgfSk7
Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9yPiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgRXJyb3ImIGVycm9yKQogewogICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGVycm9yLCBbdGhpc10gKGNvbnN0IE91dE9mTWVtb3J5RXJy
b3ImIG91dE9mTWVtb3J5RXJyb3IpIC0+IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9y
PiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50
M0QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNELmNwcApp
bmRleCA4MDM0ODIwNDE5NTM5NDM5M2VmN2Y0MDlhNTNkNjhkODUwNzkzMTdhLi4wNTE4ODQyZWZl
MjVlNTIzNTM2NmNmMGIwYTY5MjIyZjFlZTgxYjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVFeHRlbnQzRC5jcHAKQEAgLTI5LDEwICsyOSwyOCBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuaD4KIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxFeHRlbnQzRERpY3Q+IENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRl
bnQzRERpY3QmIGV4dGVudDNERGljdCkKK3sKKyAgICByZXR1cm4geyB7IGV4dGVudDNERGljdC53
aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdodCwgZXh0ZW50M0REaWN0LmRlcHRoT3JBcnJheUxheWVy
cyB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXh0ZW50M0Q+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgZXh0ZW50
M0QpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZXh0ZW50M0QsIFtdIChjb25zdCBWZWN0
b3I8UEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlv
bmFsPEV4dGVudDNEPiB7CisgICAgICAgIHJldHVybiB7IHsgdmVjdG9yIH0gfTsKKyAgICB9LCBb
dGhpc10gKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkgLT4g
c3RkOjpvcHRpb25hbDxFeHRlbnQzRD4geworICAgICAgICBhdXRvIGV4dGVudDNEID0gY29udmVy
dFRvQmFja2luZyhleHRlbnQzRERpY3QpOworICAgICAgICBpZiAoIWV4dGVudDNEKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpl
eHRlbnQzRCkgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpF
eHRlbnQzRERpY3Q+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2lu
Zyhjb25zdCBFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkKIHsKICAgICByZXR1cm4geyB7IGV4
dGVudDNERGljdC53aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdodCwgZXh0ZW50M0REaWN0LmRlcHRo
T3JBcnJheUxheWVycyB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKaW5k
ZXggY2M1YjkxYTVhYTZjYzk1ZDc0ZjI3ZWQ5Y2YxMzcxMzZlMmU5ZGI5YS4uNTY2NmEzYjcwYTJk
YzhlODVlNWNiN2UyNDM3N2UwODI3NDZkMDI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5kaW5n
TGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RXh0ZXJuYWxUZXh0dXJlQmluZGlu
Z0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQmIGV4dGVybmFsVGV4dHVy
ZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyB9IH07Cit9CisKIHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IENvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBFeHRlcm5hbFRleHR1cmVC
aW5kaW5nTGF5b3V0JiBleHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0KQogewogICAgIHJldHVy
biB7IHsgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwCmluZGV4IDYzZTFjNmJkZDUz
MzQ5MjFjODgxYmU4ZjNhOGZmOTdmNDI1ZTE0NzIuLjQ3NmNiZWI3OGEzNDNlOTdiNGYxM2E2Mzc5
NzM1YjNlZmVmMmM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEw
ICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJu
YWxUZXh0dXJlRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPEV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1
cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFz
ZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVj
dERlc2NyaXB0b3JCYXNlJj4oZXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvcikpOworICAgIGlmICgh
YmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqYmFzZSksIGV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY29sb3JTcGFjZSB9IH07Cit9
CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3I+
IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBFeHRl
cm5hbFRleHR1cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yKQogewogICAg
IGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3RE
ZXNjcmlwdG9yQmFzZSY+KGV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcAppbmRleCA0
ODA2YjQxMjIyNzA0ZGQwYzFhNDA5ZDJlMTFmZjE3ZGY3N2FhNGRjLi41ZjA3MDEzMzNkY2RkMmJk
Mjc4YmZkZWI4NzNlMDU4YzBjMDU1MjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjkgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuaD4KIAog
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxGcmFnbWVudFN0YXRl
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6RnJhZ21lbnRTdGF0ZSYgZnJhZ21lbnRTdGF0ZSkKK3sKKyAgICBhdXRvIGJhc2UgPSBj
b252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFi
bGVTdGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8Q29sb3JUYXJnZXRTdGF0ZT4gdGFyZ2V0czsK
KyAgICB0YXJnZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnJhZ21lbnRTdGF0ZS50YXJnZXRz
LnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0YXJnZXQgOiBmcmFnbWVudFN0YXRlLnRh
cmdldHMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUYXJnZXQgPSBjb252ZXJ0VG9CYWNraW5n
KHRhcmdldCk7CisgICAgICAgIGlmICghY29udmVydGVkVGFyZ2V0KQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdGFyZ2V0cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92
ZSgqY29udmVydGVkVGFyZ2V0KSk7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSwgV1RGTW92ZSh0YXJnZXRzKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkZyYWdtZW50U3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9t
QmFja2luZyhjb25zdCBGcmFnbWVudFN0YXRlJiBmcmFnbWVudFN0YXRlKQogewogICAgIGF1dG8g
YmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQcm9ncmFtbWFibGVT
dGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKaW5kZXggZmQ0NzAwNTUxOGE4MzQ0MTRh
OTg1MDIyOWMxMjFhZmQxZGUxMmU1NS4uZTRiNzBhNmVjZjlhZmQ0YmI1M2NiNGYyOTc2MTQwYmU0
MWUxMTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUlt
YWdlQ29weUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUltYWdlQ29weUJ1ZmZlci5jcHAKQEAgLTI5LDE3ICsyOSwzMSBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5QnVmZmVyPiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1h
Z2VDb3B5QnVmZmVyJiBpbWFnZUNvcHlCdWZmZXIpCit7CisgICAgYXV0byBiYXNlID0gY29udmVy
dFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0
Jj4oaW1hZ2VDb3B5QnVmZmVyKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgYXV0byBidWZmZXIgPSBjb252ZXJ0VG9CYWNraW5nKGltYWdlQ29w
eUJ1ZmZlci5idWZmZXIpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgYnVmZmVyIH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyPiBDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5QnVmZmVy
JiBpbWFnZUNvcHlCdWZmZXIpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IEltYWdlRGF0YUxheW91dCY+KGltYWdlQ29weUJ1ZmZlcikpOwog
ICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8g
YnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGltYWdlQ29weUJ1ZmZlci5idWZmZXIp
OworICAgIGF1dG8qIGJ1ZmZlciA9IGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbWFnZUNvcHlC
dWZmZXIuYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUlt
YWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCmluZGV4IGMwY2EzYmYzNTljOWViNjA5MTI4
ZWZhZWYyMjZjNjM2ZThkZTdlNDAuLjg2ODY4M2QxZDQ5OGI1ZmMxMTcyNDkzNzFjNTNiNDE4ZDNj
YTMxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFn
ZUNvcHlFeHRlcm5hbEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAKQEAgLTI5LDEwICsyOSwyMyBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEltYWdl
Q29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlF
eHRlcm5hbEltYWdlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IG9yaWdpbjsKKyAg
ICBpZiAoaW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4pIHsKKyAgICAgICAgYXV0byBjb252
ZXJ0ZWRPcmlnaW4gPSBjb252ZXJ0VG9CYWNraW5nKCppbWFnZUNvcHlFeHRlcm5hbEltYWdlLm9y
aWdpbik7CisgICAgICAgIGlmICghY29udmVydGVkT3JpZ2luKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUob3JpZ2luKSB9
IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkltYWdlQ29weUV4dGVybmFsSW1h
Z2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlFeHRlcm5hbEltYWdlKQogewogICAgIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJEPiBvcmlnaW47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHAKaW5k
ZXggNmNkZGQ5ODlhYTA0ZWQxNTcxMmVmMDUxZDMxMzBjNjlhMjUxMWFmMi4uNjA5MDgxOTU3NTMy
ZmQzZjI3YmEyMjE5MTZhYjdhNzA2NzMzZGU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcApAQCAtMjksMTMgKzI5
LDMwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlU
ZXh0dXJlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8
SW1hZ2VDb3B5VGV4dHVyZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmIGltYWdlQ29weVRleHR1cmUp
Cit7CisgICAgYXV0byB0ZXh0dXJlID0gY29udmVydFRvQmFja2luZyhpbWFnZUNvcHlUZXh0dXJl
LnRleHR1cmUpOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IG9yaWdpbjsKKyAgICBpZiAoaW1hZ2VD
b3B5VGV4dHVyZS5vcmlnaW4pIHsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBjb252ZXJ0VG9CYWNr
aW5nKCppbWFnZUNvcHlUZXh0dXJlLm9yaWdpbik7CisgICAgICAgIGlmICghb3JpZ2luKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IHRl
eHR1cmUsIGltYWdlQ29weVRleHR1cmUubWlwTGV2ZWwsIFdURk1vdmUob3JpZ2luKSwgaW1hZ2VD
b3B5VGV4dHVyZS5hc3BlY3QgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJ
bWFnZUNvcHlUZXh0dXJlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJh
Y2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZSYgaW1hZ2VDb3B5VGV4dHVyZSkKIHsKLSAgICBh
dXRvIHRleHR1cmUgPSBjb252ZXJ0VGV4dHVyZUZyb21CYWNraW5nKGltYWdlQ29weVRleHR1cmUu
dGV4dHVyZSk7CisgICAgYXV0byogdGV4dHVyZSA9IGNvbnZlcnRUZXh0dXJlRnJvbUJhY2tpbmco
aW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNwcAppbmRleCA2ZTdlM2Zj
Y2I0MzI1ZTAzNTMzMjRiYzM4NTIxZTMxN2VlYThkZjM2Li42NGIzZTI1YTRhODZkMGRiNjI1ZmU5
MDI2ZGU2MTgxZjU3ODc0YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmVUYWdnZWQuY3BwCkBAIC0yOSwxMCAr
MjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29w
eVRleHR1cmVUYWdnZWQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpv
cHRpb25hbDxJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dl
ZCYgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9C
YWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJj4o
aW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIGltYWdlQ29w
eVRleHR1cmVUYWdnZWQuY29sb3JTcGFjZSwgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5wcmVtdWx0
aXBsaWVkQWxwaGEgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZUNv
cHlUZXh0dXJlVGFnZ2VkPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJh
Y2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dl
ZCkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29u
c3QgSW1hZ2VDb3B5VGV4dHVyZSY+KGltYWdlQ29weVRleHR1cmVUYWdnZWQpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHAK
aW5kZXggMmIyMTBiOWIxYjM3NDdjMmI0NTAzZDMxNTI4MzFmNmY3NTQzYmU1NC4uODE2NjYxNTk5
YzBiYmRjYmNhYThlMTJhN2UwYzk0OGE1YzkyMGZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHAKQEAgLTI5LDEwICsy
OSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VEYXRh
TGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8
SW1hZ2VEYXRhTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0JiBpbWFnZURhdGFMYXlvdXQpCit7
CisgICAgcmV0dXJuIHsgeyBpbWFnZURhdGFMYXlvdXQub2Zmc2V0LCBpbWFnZURhdGFMYXlvdXQu
Ynl0ZXNQZXJSb3csIGltYWdlRGF0YUxheW91dC5yb3dzUGVySW1hZ2UgfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlvdXQ+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBJbWFnZURhdGFMYXlvdXQmIGltYWdl
RGF0YUxheW91dCkKIHsKICAgICByZXR1cm4geyB7IGltYWdlRGF0YUxheW91dC5vZmZzZXQsIGlt
YWdlRGF0YUxheW91dC5ieXRlc1BlclJvdywgaW1hZ2VEYXRhTGF5b3V0LnJvd3NQZXJJbWFnZSB9
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlz
YW1wbGVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVTXVsdGlz
YW1wbGVTdGF0ZS5jcHAKaW5kZXggMDQ2ZTc5MGY4OWJkYzM5ZWExNTNmMDZiMTgyYzQ3MWY5OGE2
MWJjZi4uODljZmI0YzVkYWE5ZTBlYTlhZjQxMmM2ZjJjYWIwOWYzZTYwNTBhOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU11bHRpc2FtcGxlU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVNdWx0aXNhbXBsZVN0YXRl
LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVNdWx0aXNhbXBsZVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8TXVsdGlzYW1wbGVTdGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok11bHRpc2FtcGxlU3RhdGUm
IG11bHRpc2FtcGxlU3RhdGUpCit7CisgICAgcmV0dXJuIHsgeyBtdWx0aXNhbXBsZVN0YXRlLmNv
dW50LCBtdWx0aXNhbXBsZVN0YXRlLm1hc2ssIG11bHRpc2FtcGxlU3RhdGUuYWxwaGFUb0NvdmVy
YWdlRW5hYmxlZCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok11bHRpc2Ft
cGxlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBNdWx0aXNhbXBsZVN0YXRlJiBtdWx0aXNhbXBsZVN0YXRlKQogewogICAgIHJldHVybiB7
IHsgbXVsdGlzYW1wbGVTdGF0ZS5jb3VudCwgbXVsdGlzYW1wbGVTdGF0ZS5tYXNrLCBtdWx0aXNh
bXBsZVN0YXRlLmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5jcHAK
aW5kZXggZDExNTRlYmQ4NmNkNzMyNThmYTFjNThmZDBiMDhiNjIwNjJiNzY0ZC4uZjAxOTlmMDg5
YzMxOTJiYzliZTM0YjQ2NGNjN2I4Njk1MjhiNzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwCkBA
IC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VU9iamVjdERlc2NyaXB0b3JCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8T2JqZWN0RGVzY3JpcHRvckJhc2U+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9y
QmFzZSYgb2JqZWN0RGVzY3JpcHRvckJhc2UpCit7CisgICAgcmV0dXJuIHsgeyBvYmplY3REZXNj
cmlwdG9yQmFzZS5sYWJlbCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9i
amVjdERlc2NyaXB0b3JCYXNlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmIG9iamVjdERlc2NyaXB0b3JCYXNl
KQogewogICAgIHJldHVybiB7IHsgb2JqZWN0RGVzY3JpcHRvckJhc2UubGFiZWwgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5jcHAKaW5kZXggMjgw
ODhlMzJiY2M4YzAwMDFhYmNjMjI1M2NlNGIxMzZjNjRlNmVmNS4uZDJmYzI0N2ZlODU0ODQwYzEx
MTFmYzhhMGM1MDQ3ZjU2ZGQzYjRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVT3JpZ2luMkQuY3BwCkBAIC0yOSwxMCArMjksMjggQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3JpZ2luMkREaWN0PiBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luMkREaWN0
JiBvcmlnaW4yRERpY3QpCit7CisgICAgcmV0dXJuIHsgeyBvcmlnaW4yRERpY3QueCwgb3JpZ2lu
MkREaWN0LnkgfSB9OworfQorCitzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luMkQm
IG9yaWdpbjJEKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG9yaWdpbjJELCBbXSAoY29u
c3QgVmVjdG9yPFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZT4mIHZlY3RvcikgLT4gc3Rk
OjpvcHRpb25hbDxPcmlnaW4yRD4geworICAgICAgICByZXR1cm4geyB7IHZlY3RvciB9IH07Cisg
ICAgfSwgW3RoaXNdIChjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luMkREaWN0JiBvcmlnaW4yRERp
Y3QpIC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IHsKKyAgICAgICAgYXV0byBvcmlnaW4yRCA9
IGNvbnZlcnRUb0JhY2tpbmcob3JpZ2luMkREaWN0KTsKKyAgICAgICAgaWYgKCFvcmlnaW4yRCkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqb3JpZ2luMkQpIH0gfTsKKyAgICB9KTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6T3JpZ2luMkREaWN0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgT3JpZ2luMkREaWN0JiBvcmlnaW4yRERpY3QpCiB7CiAgICAgcmV0dXJu
IHsgeyBvcmlnaW4yRERpY3QueCwgb3JpZ2luMkREaWN0LnkgfSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHAKaW5kZXggNzdiYTFiNjViYjIxZmY0
OGM1NGJhNjMxMmYyZGE5MzgzYzU0Mzk4OS4uM2Q4YzkzN2RlOGExM2JjMjI5N2YwY2M1ZWFiNjFk
MWQzNGI4MzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VU9yaWdpbjNELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3Jp
Z2luM0QuY3BwCkBAIC0yOSwxMCArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVU9yaWdpbjNELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8T3JpZ2luM0REaWN0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3JpZ2luM0REaWN0JiBvcmlnaW4zRERp
Y3QpCit7CisgICAgcmV0dXJuIHsgeyBvcmlnaW4zRERpY3QueCwgb3JpZ2luM0REaWN0LnksIG9y
aWdpbjNERGljdC56IH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxPcmlnaW4zRD4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdp
bjNEJiBvcmlnaW4zRCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihvcmlnaW4zRCwgW10g
KGNvbnN0IFZlY3RvcjxQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGU+JiB2ZWN0b3IpIC0+
IHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IHsKKyAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9
OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdCYgb3JpZ2lu
M0REaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiB7CisgICAgICAgIGF1dG8gb3JpZ2lu
M0QgPSBjb252ZXJ0VG9CYWNraW5nKG9yaWdpbjNERGljdCk7CisgICAgICAgIGlmICghb3JpZ2lu
M0QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyB7
IFdURk1vdmUoKm9yaWdpbjNEKSB9IH07CisgICAgfSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6Ok9yaWdpbjNERGljdD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IE9yaWdpbjNERGljdCYgb3JpZ2luM0REaWN0KQogewogICAgIHJl
dHVybiB7IHsgb3JpZ2luM0REaWN0LngsIG9yaWdpbjNERGljdC55LCBvcmlnaW4zRERpY3QueiB9
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3V0T2ZN
ZW1vcnlFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3V0T2ZN
ZW1vcnlFcnJvci5jcHAKaW5kZXggYTNjNDk1ZjhjODQzNTczMDI5N2EyZGNkNWI2YzE3YmM0ZjVh
ZWI2ZS4uMDhkNGYxODE0NjdlZjkwZTEwMWU1Yzc3YjA3YWJkMDllYzA5OTU3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPdXRPZk1lbW9yeUVycm9y
LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVPdXRPZk1lbW9yeUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3Im
IG91dE9mTWVtb3J5RXJyb3IpCit7CisgICAgcmV0dXJuIHsgeyB9IH07Cit9CisKIFJlZlB0cjxQ
QUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE91dE9mTWVtb3J5RXJyb3ImIG91dE9mTWVtb3J5RXJy
b3IpCiB7CiAgICAgcmV0dXJuIHsgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3I6OmNyZWF0
ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKaW5kZXggYWJiOGE4Yzk0NmZiYzAzZGE0MTFk
MjQ5M2YwY2M5NDJhNzBjMGMyNi4uZWVhYzgzM2NlZWU1YzkxODYzZDg5MmU1MmM2ZjExMWU1ODA4
ZTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVs
aW5lRGVzY3JpcHRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcApAQCAtMjksMTAgKzI5LDI3IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNl
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UGlwZWxp
bmVEZXNjcmlwdG9yQmFzZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2UmIHBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNf
Y2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihwaXBlbGluZURl
c2NyaXB0b3JCYXNlKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgV2ViR1BVSWRlbnRpZmllciBsYXlvdXQ7CisgICAgaWYgKHBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UubGF5b3V0KSB7CisgICAgICAgIGxheW91dCA9IGNvbnZlcnRUb0JhY2tpbmco
KnBpcGVsaW5lRGVzY3JpcHRvckJhc2UubGF5b3V0KTsKKyAgICAgICAgaWYgKCFsYXlvdXQpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqYmFzZSksIGxheW91dCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlJiBwaXBlbGluZURl
c2NyaXB0b3JCYXNlKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHBpcGVsaW5lRGVzY3JpcHRvckJh
c2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQaXBl
bGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKaW5kZXggZDdhMjgyMTBmODE0OTFmODQx
YTVmMDIwMGYwYjZkNTJjZjMyNzY1MC4uODI5MmUzMDg0MjY2ZDQ0NTA3ZWUzY2EwZWMyYTIyYzY1
Yjk3OTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBp
cGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyOSBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXRE
ZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
JiBwaXBlbGluZUxheW91dERlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRv
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJh
c2UmPihwaXBlbGluZUxheW91dERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4gYmlu
ZEdyb3VwTGF5b3V0czsKKyAgICBiaW5kR3JvdXBMYXlvdXRzLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmJpbmRHcm91cExheW91dHMuc2l6ZSgpKTsKKyAg
ICBmb3IgKGF1dG8gYmFja2luZ0JpbmRHcm91cExheW91dCA6IHBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvci5iaW5kR3JvdXBMYXlvdXRzKSB7CisgICAgICAgIGF1dG8gZW50cnkgPSBjb252ZXJ0VG9C
YWNraW5nKGJhY2tpbmdCaW5kR3JvdXBMYXlvdXQpOworICAgICAgICBpZiAoIWVudHJ5KQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYmluZEdyb3VwTGF5b3V0cy51
bmNoZWNrZWRBcHBlbmQoZW50cnkpOworICAgIH0KKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
YmFzZSksIFdURk1vdmUoYmluZEdyb3VwTGF5b3V0cykgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQaXBlbGluZUxheW91dERlc2NyaXB0
b3ImIHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0
RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihwaXBl
bGluZUxheW91dERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwCmluZGV4IGRiNWE5M2RiMTdjZDkxZmMyY2Q0
MzU5MDM1MzFiOTBmMzAwMWJmYTguLjA2ZTk1YWZiZGRhODBhZGVhNjBiNjYzNDNmMDgwYzVmNTBj
MTFjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmlt
aXRpdmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBy
aW1pdGl2ZVN0YXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFByaW1pdGl2ZVN0YXRlPiBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UHJpbWl0aXZl
U3RhdGUmIHByaW1pdGl2ZVN0YXRlKQoreworICAgIHJldHVybiB7IHsgcHJpbWl0aXZlU3RhdGUu
dG9wb2xvZ3ksIHByaW1pdGl2ZVN0YXRlLnN0cmlwSW5kZXhGb3JtYXQsIHByaW1pdGl2ZVN0YXRl
LmZyb250RmFjZSwgcHJpbWl0aXZlU3RhdGUuY3VsbE1vZGUsIHByaW1pdGl2ZVN0YXRlLnVuY2xp
cHBlZERlcHRoIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UHJpbWl0aXZl
U3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBQcmltaXRpdmVTdGF0ZSYgcHJpbWl0aXZlU3RhdGUpCiB7CiAgICAgcmV0dXJuIHsgeyBwcmlt
aXRpdmVTdGF0ZS50b3BvbG9neSwgcHJpbWl0aXZlU3RhdGUuc3RyaXBJbmRleEZvcm1hdCwgcHJp
bWl0aXZlU3RhdGUuZnJvbnRGYWNlLCBwcmltaXRpdmVTdGF0ZS5jdWxsTW9kZSwgcHJpbWl0aXZl
U3RhdGUudW5jbGlwcGVkRGVwdGggfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5jcHAKaW5kZXggNmJjMzM1ZmYxZDg0
MjE2ZWUwNzE0M2E4ZTVkNWU3YTIyNDAyMWZmMC4uODlkMzhmNmU4ZmYwMDA1MTIwNTEyMDE5NzU2
M2QxNTRkMjMwOTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwCkBAIC0yOSwxMyArMjksMjMgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UHJvZ3JhbW1hYmxl
U3RhZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSYgcHJvZ3JhbW1hYmxlU3RhZ2UpCit7CisgICAg
YXV0byBtb2R1bGUgPSBjb252ZXJ0VG9CYWNraW5nKHByb2dyYW1tYWJsZVN0YWdlLm1vZHVsZSk7
CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7IG1vZHVsZSwgcHJvZ3JhbW1hYmxlU3RhZ2UuZW50cnlQb2ludCwgcHJvZ3JhbW1h
YmxlU3RhZ2UuY29uc3RhbnRzIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
UHJvZ3JhbW1hYmxlU3RhZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9t
QmFja2luZyhjb25zdCBQcm9ncmFtbWFibGVTdGFnZSYgcHJvZ3JhbW1hYmxlU3RhZ2UpCiB7Ci0g
ICAgYXV0byBtb2R1bGUgPSBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcocHJvZ3JhbW1h
YmxlU3RhZ2UubW9kdWxlKTsKKyAgICBhdXRvKiBtb2R1bGUgPSBjb252ZXJ0U2hhZGVyTW9kdWxl
RnJvbUJhY2tpbmcocHJvZ3JhbW1hYmxlU3RhZ2UubW9kdWxlKTsKICAgICBpZiAoIW1vZHVsZSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcAppbmRleCAzYThl
MzcxYzU1ZjY4ZTcyYjU1YWQ1ZDM2YjdjMGVjYzdjMmIzNmZiLi5hMDc2MTgyMzEzOWUyOTJmMDUw
NmQ3ZGZlNmJhNjdjNWI5MDkxNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIw
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZy
b21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2Ny
aXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxR
dWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3ImIHF1ZXJ5U2V0RGVzY3Jp
cHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNv
bnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHF1ZXJ5U2V0RGVzY3JpcHRv
cikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHF1ZXJ5U2V0RGVzY3JpcHRvci50eXBlLCBxdWVy
eVNldERlc2NyaXB0b3IuY291bnQsIHF1ZXJ5U2V0RGVzY3JpcHRvci5waXBlbGluZVN0YXRpc3Rp
Y3MgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0
b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBR
dWVyeVNldERlc2NyaXB0b3ImIHF1ZXJ5U2V0RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2Ug
PSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJh
c2UmPihxdWVyeVNldERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcAppbmRleCAw
N2RlOTJlYzE2ZTQxMDI3ZWVhM2QxYjZiNjQ2OTczZWVmNGI4YTZjLi5jOWExNzliMjUxM2Y2NWZk
NTczMGJjMjYxNWU1YTBkYmVmOTU3N2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuY3BwCkBAIC0y
OSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlckJ1bmRsZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAor
c3RkOjpvcHRpb25hbDxSZW5kZXJCdW5kbGVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVz
Y3JpcHRvciYgcmVuZGVyQnVuZGxlRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252
ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlw
dG9yQmFzZSY+KHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2Up
IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVzY3Jp
cHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0
IFJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpCiB7CiAgICAg
YXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERl
c2NyaXB0b3JCYXNlJj4ocmVuZGVyQnVuZGxlRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVF
bmNvZGVyRGVzY3JpcHRvci5jcHAKaW5kZXggMjY3NDFlMmIxZmYzYmJiMzM3M2M0OTdlMDg1ZWEx
YzIyMzUwYzhhYi4uYTgzZWI5MjdiMzNiNWQ1ODZlYjgwZjRlNjZkYzE4NmUxYTk4ZDE4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVu
Y29kZXJEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29k
ZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0
aW9uYWw8UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNv
ZGVyRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IpCit7CisgICAgYXV0
byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6
UmVuZGVyUGFzc0xheW91dCY+KHJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKSk7CisgICAg
aWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKCpiYXNlKSwgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuZGVwdGhSZWFk
T25seSwgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3Iuc3RlbmNpbFJlYWRPbmx5IH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2Ny
aXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2Ny
aXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0
PGNvbnN0IFJlbmRlclBhc3NMYXlvdXQmPihyZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvcikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NDb2xvckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY3BwCmluZGV4IDM4ODczOGI1MDlhYTRiNzE3NTcw
ODg3ZDA5NTI5OGNiNmRmNDI5YjIuLmM0NzUwYmY3ZjVlNjBkZjY5ZjY0NjYyNzQ5ZTg0NzUzZWEw
YWMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5jcHAKQEAgLTI5LDEzICsyOSw0MyBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9y
QXR0YWNobWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlv
bmFsPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50JiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KQoreworICAgIGF1dG8gdmlldyA9IGNvbnZl
cnRUb0JhY2tpbmcocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC52aWV3KTsKKyAgICBpZiAoIXZp
ZXcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJHUFVJZGVudGlmaWVy
IHJlc29sdmVUYXJnZXQ7CisgICAgaWYgKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQucmVzb2x2
ZVRhcmdldCkgeworICAgICAgICByZXNvbHZlVGFyZ2V0ID0gY29udmVydFRvQmFja2luZygqcmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudC5yZXNvbHZlVGFyZ2V0KTsKKyAgICAgICAgaWYgKCFyZXNv
bHZlVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAg
ICBhdXRvIGxvYWRWYWx1ZSA9IFdURjo6c3dpdGNoT24ocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dC5sb2FkVmFsdWUsIFtdIChQQUw6OldlYkdQVTo6TG9hZE9wIGxvYWRPcCkgLT4gc3RkOjpvcHRp
b25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJsZT4sIENv
bG9yRGljdD4+IHsKKyAgICAgICAgcmV0dXJuIHsgeyBsb2FkT3AgfSB9OworICAgIH0sIFtdIChj
b25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFu
dDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgQ29sb3JEaWN0Pj4geworICAg
ICAgICByZXR1cm4geyB7IHZlY3RvciB9IH07CisgICAgfSwgW3RoaXNdIChjb25zdCBQQUw6Oldl
YkdQVTo6Q29sb3JEaWN0JiBjb2xvckRpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50
PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+PiB7CisgICAg
ICAgIGF1dG8gYmFja2luZ0NvbG9yRGljdCA9IGNvbnZlcnRUb0JhY2tpbmcoY29sb3JEaWN0KTsK
KyAgICAgICAgaWYgKCFiYWNraW5nQ29sb3JEaWN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYWNraW5nQ29sb3JEaWN0KSB9
IH07CisgICAgfSk7CisgICAgaWYgKCFsb2FkVmFsdWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlc29sdmVUYXJnZXQsIFdURk1vdmUoKmxv
YWRWYWx1ZSksIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuc3RvcmVPcCB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IENvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50JiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KQogewotICAgIGF1dG8g
dmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKHJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQudmlldyk7CisgICAgYXV0byogdmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNr
aW5nKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQudmlldyk7CiAgICAgaWYgKCF2aWV3KQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC01MCwxMSArODAsMTEgQEAgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudD4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDoKICAgICAgICAgcmV0dXJuIHsgeyBsb2FkT3AgfSB9OwogICAgIH0sIFtd
IChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFy
aWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNv
bG9yRGljdD4+IHsKICAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9OwotICAgIH0sIFt0aGlz
XSAoY29uc3QgQ29sb3JEaWN0JiBvcmlnaW5Db2xvckRpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+LCBQQUw6OldlYkdQ
VTo6Q29sb3JEaWN0Pj4gewotICAgICAgICBhdXRvIGNvbG9yRGljdCA9IGNvbnZlcnRGcm9tQmFj
a2luZyhvcmlnaW5Db2xvckRpY3QpOwotICAgICAgICBpZiAoIWNvbG9yRGljdCkKKyAgICB9LCBb
dGhpc10gKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6
dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwgUEFMOjpXZWJHUFU6
OkNvbG9yRGljdD4+IHsKKyAgICAgICAgYXV0byBiYWNraW5nQ29sb3JEaWN0ID0gY29udmVydEZy
b21CYWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlmICghYmFja2luZ0NvbG9yRGljdCkKICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqY29sb3JEaWN0KSB9IH07CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFja2luZ0Nv
bG9yRGljdCkgfSB9OwogICAgIH0pOwogICAgIGlmICghbG9hZFZhbHVlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5j
cHAKaW5kZXggMzhjYTQyZjJkMzc2MjI4NWYyMmZmNjIwMWNiYWM0NGY4OWUxMDM5OC4uMzY2NDFj
ZDY3NzY4MGM4ZmVjZjMxYmZlNjkzZjE5NTAzODEyYWFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQuY3BwCkBAIC0yOSwxMyArMjksMjMgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudCYgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCit7CisgICAgYXV0
byB2aWV3ID0gY29udmVydFRvQmFja2luZyhyZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC52aWV3KTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IHZpZXcsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRl
cHRoTG9hZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5kZXB0aFN0b3Jl
T3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoUmVhZE9ubHksIHJlbmRl
clBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxMb2FkVmFsdWUsIHJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5zdGVuY2lsUmVhZE9ubHkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudD4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50JiByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCkKIHsKLSAg
ICBhdXRvIHZpZXcgPSBjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhyZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC52aWV3KTsKKyAgICBhdXRvKiB2aWV3ID0gY29udmVydFRleHR1
cmVWaWV3RnJvbUJhY2tpbmcocmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQudmlldyk7
CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNj
cmlwdG9yLmNwcAppbmRleCAwNGJkZmNhMDU3ODM5YzVhZTM5OWNiM2IwOWNiNTc2YmI5YmI2ODBl
Li42MTc2M2Y5OGJiNGZkNjk1ZWY0ZTJiMjI1ZTkxODkxNGYyOWFiOGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3Jp
cHRvci5jcHAKQEAgLTI5LDEwICsyOSw0OCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVzY3JpcHRvcj4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRl
clBhc3NEZXNjcmlwdG9yJiByZW5kZXJQYXNzRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2Ug
PSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3RE
ZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPFJlbmRlclBhc3NDb2xv
ckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CisgICAgY29sb3JBdHRhY2htZW50cy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMu
c2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbG9yQXR0YWNobWVudCA6IHJlbmRlclBh
c3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMpIHsKKyAgICAgICAgYXV0byBiYWNraW5nQ29s
b3JBdHRhY2htZW50ID0gY29udmVydFRvQmFja2luZyhjb2xvckF0dGFjaG1lbnQpOworICAgICAg
ICBpZiAoIWJhY2tpbmdDb2xvckF0dGFjaG1lbnQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBjb2xvckF0dGFjaG1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3Zl
KCpiYWNraW5nQ29sb3JBdHRhY2htZW50KSk7CisgICAgfQorCisgICAgYXV0byBkZXB0aFN0ZW5j
aWxBdHRhY2htZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0
ZW5jaWxBdHRhY2htZW50PiB7CisgICAgICAgIGlmIChyZW5kZXJQYXNzRGVzY3JpcHRvci5kZXB0
aFN0ZW5jaWxBdHRhY2htZW50KQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb0JhY2tpbmco
KnJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpOworICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAgaWYgKHJlbmRlclBhc3NEZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgJiYgIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJHUFVJZGVudGlmaWVyIG9jY2x1
c2lvblF1ZXJ5U2V0OworICAgIGlmIChyZW5kZXJQYXNzRGVzY3JpcHRvci5vY2NsdXNpb25RdWVy
eVNldCkgeworICAgICAgICBvY2NsdXNpb25RdWVyeVNldCA9IGNvbnZlcnRUb0JhY2tpbmcoKnJl
bmRlclBhc3NEZXNjcmlwdG9yLm9jY2x1c2lvblF1ZXJ5U2V0KTsKKyAgICAgICAgaWYgKCFvY2Ns
dXNpb25RdWVyeVNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
CisgICAgYXV0byB0aW1lc3RhbXBXcml0ZXMgPSBjb252ZXJ0VG9CYWNraW5nKHJlbmRlclBhc3NE
ZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYgKCF0aW1lc3RhbXBXcml0ZXMpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJh
c2UpLCBXVEZNb3ZlKGNvbG9yQXR0YWNobWVudHMpLCBXVEZNb3ZlKGRlcHRoU3RlbmNpbEF0dGFj
aG1lbnQpLCBvY2NsdXNpb25RdWVyeVNldCwgV1RGTW92ZSgqdGltZXN0YW1wV3JpdGVzKSB9IH07
Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yPiBD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVy
UGFzc0Rlc2NyaXB0b3ImIHJlbmRlclBhc3NEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9
IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFz
ZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHAKaW5kZXggZGI0ODcxZjBiNTk4
OTRhMGU4ZTY2N2FlOGI5NDZiYzczNzkyNjE2Ny4uYzBlOGI3MmUyZmQxNDg4Yjc2NjFmZGUyM2Fm
MjNhZjQ2YmZjZjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0Lmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0xheW91
dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQmIHJlbmRlclBhc3NMYXlvdXQpCit7CisgICAgYXV0byBi
YXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2Jq
ZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJQYXNzTGF5b3V0KSk7CisgICAgaWYgKCFiYXNlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSwgcmVuZGVyUGFzc0xheW91dC5jb2xvckZvcm1hdHMsIHJlbmRlclBhc3NMYXlvdXQuZGVw
dGhTdGVuY2lsRm9ybWF0LCByZW5kZXJQYXNzTGF5b3V0LnNhbXBsZUNvdW50IH0gfTsKK30KKwog
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dD4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NMYXlvdXQm
IHJlbmRlclBhc3NMYXlvdXQpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4ocmVuZGVyUGFzc0xheW91
dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCmluZGV4IDE2ODQ3ZDE1MzM5YzQyNjBm
NGE4NWM2ZWI1YmYwOGJjOGE0OGFmODYuLjJiNjFjYjNkMTVhMzg4NzYzZDljMmUwMzhjNzZmMmQw
Y2ZiNDY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5jcHAKQEAgLTI5LDEwICsyOSwz
MyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1Rp
bWVzdGFtcFdyaXRlcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NUaW1lc3RhbXBX
cml0ZSYgcmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlKQoreworICAgIGF1dG8gcXVlcnlTZXQgPSBj
b252ZXJ0VG9CYWNraW5nKHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNldCk7CisgICAg
aWYgKCFxdWVyeVNldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgcXVlcnlTZXQsIHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeUluZGV4LCByZW5k
ZXJQYXNzVGltZXN0YW1wV3JpdGUubG9jYXRpb24gfSB9OworfQorCitzdGQ6Om9wdGlvbmFsPFJl
bmRlclBhc3NUaW1lc3RhbXBXcml0ZXM+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzJiBy
ZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzKQoreworICAgIFZlY3RvcjxSZW5kZXJQYXNzVGltZXN0
YW1wV3JpdGU+IHRpbWVzdGFtcFdyaXRlczsKKyAgICB0aW1lc3RhbXBXcml0ZXMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShyZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLnNpemUoKSk7CisgICAgZm9y
IChjb25zdCBhdXRvJiB0aW1lc3RhbXBXcml0ZSA6IHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMp
IHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSA9IGNvbnZlcnRUb0JhY2tp
bmcodGltZXN0YW1wV3JpdGUpOworICAgICAgICBpZiAoIWNvbnZlcnRlZFRpbWVzdGFtcFdyaXRl
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdGltZXN0YW1wV3Jp
dGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSkpOwor
ICAgIH0KKyAgICByZXR1cm4gdGltZXN0YW1wV3JpdGVzOworfQorCiBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGU+IENvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUm
IHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZSkKIHsKICAgICBhdXRvKiBxdWVyeVNldCA9IGNvbnZl
cnRRdWVyeVNldEZyb21CYWNraW5nKHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNldCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCmluZGV4IGYzMWM0NmYwNWZhMTg2YjcyZGNkYzcw
NWI4MTY4MjY0MGY5NzJmNDguLjAxZDkwYzhhMTc5ZjAzMGI5OTEyZDNlZmJmOTYyMzkzMGQzMjgx
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksNTMgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYgcmVu
ZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tp
bmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2Um
PihyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHZlcnRleCA9IGNvbnZlcnRUb0JhY2tpbmco
cmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleCk7CisgICAgaWYgKCF2ZXJ0ZXgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFByaW1pdGl2ZVN0
YXRlPiBwcmltaXRpdmU7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5wcmltaXRp
dmUpIHsKKyAgICAgICAgcHJpbWl0aXZlID0gY29udmVydFRvQmFja2luZygqcmVuZGVyUGlwZWxp
bmVEZXNjcmlwdG9yLnByaW1pdGl2ZSk7CisgICAgICAgIGlmICghcHJpbWl0aXZlKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPERl
cHRoU3RlbmNpbFN0YXRlPiBkZXB0aFN0ZW5jaWw7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvci5kZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udmVydFRv
QmFja2luZygqcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbCk7CisgICAgICAg
IGlmICghZGVwdGhTdGVuY2lsKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IG11bHRpc2FtcGxlOwor
ICAgIGlmIChyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubXVsdGlzYW1wbGUpIHsKKyAgICAgICAg
bXVsdGlzYW1wbGUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0b3Iu
bXVsdGlzYW1wbGUpOworICAgICAgICBpZiAoIW11bHRpc2FtcGxlKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGZyYWdtZW50ID0gKFsmXSAoKSAt
PiBzdGQ6Om9wdGlvbmFsPEZyYWdtZW50U3RhdGU+IHsKKyAgICAgICAgaWYgKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5mcmFnbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9CYWNr
aW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZnJhZ21lbnQpOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
ci5mcmFnbWVudCAmJiAhZnJhZ21lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCp2ZXJ0ZXgpLCBXVEZNb3Zl
KHByaW1pdGl2ZSksIFdURk1vdmUoZGVwdGhTdGVuY2lsKSwgV1RGTW92ZShtdWx0aXNhbXBsZSks
IFdURk1vdmUoZnJhZ21lbnQpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQaXBl
bGluZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0
YXRpY19jYXN0PGNvbnN0IFBpcGVsaW5lRGVzY3JpcHRvckJhc2UmPihyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKaW5kZXggZmYxNGU3OTgyYzQ0M2IxYzQw
ZTJlMGMwOTc4YjcxYWQ3NDE3ZTc2Ni4uYjIyYjFiZmY1ZTRkZmVjNDZhZGNlZTNjNzFmNDljMDli
NmJjYzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJl
cXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25z
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVxdWVz
dEFkYXB0ZXJPcHRpb25zPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiByZXF1ZXN0QWRhcHRl
ck9wdGlvbnMpCit7CisgICAgcmV0dXJuIHsgeyByZXF1ZXN0QWRhcHRlck9wdGlvbnMucG93ZXJQ
cmVmZXJlbmNlLCByZXF1ZXN0QWRhcHRlck9wdGlvbnMuZm9yY2VGYWxsYmFja0FkYXB0ZXIgfSB9
OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnM+
IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZXF1
ZXN0QWRhcHRlck9wdGlvbnMmIHJlcXVlc3RBZGFwdGVyT3B0aW9ucykKIHsKICAgICByZXR1cm4g
eyB7IHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5wb3dlclByZWZlcmVuY2UsIHJlcXVlc3RBZGFwdGVy
T3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlciB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcAppbmRl
eCAzOTg0Mjc0OTRiNDU1ODgxYjM0NWI3NDAzNjEwZDg3MDJmMjdjZjQ4Li45ZjFlYWZkZmVjNDY3
ZDM3OGE4ZDkwMjMxMzlkNzk0NzY5OGRlOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5jcHAKQEAgLTI5
LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2Ft
cGxlckJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3Rk
OjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJCaW5kaW5nTGF5b3V0
JiBzYW1wbGVyQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1cm4geyB7IHNhbXBsZXJCaW5kaW5n
TGF5b3V0LnR5cGUgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTYW1wbGVy
QmluZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNr
aW5nKGNvbnN0IFNhbXBsZXJCaW5kaW5nTGF5b3V0JiBzYW1wbGVyQmluZGluZ0xheW91dCkKIHsK
ICAgICByZXR1cm4geyB7IHNhbXBsZXJCaW5kaW5nTGF5b3V0LnR5cGUgfSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5j
cHAKaW5kZXggY2Y2NGFhZDBmZjNjYjFlMDI1MGM3MWY0NDIyYmM3MGE2MmI1NmEzNC4uZjI3MWZi
ZTZlZjhhNzZjYzNiNDJhM2I0YmU3YmZmZTkxMzgyOWFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCkBAIC0y
OSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNh
bXBsZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6
b3B0aW9uYWw8U2FtcGxlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTYW1wbGVyRGVzY3JpcHRvciYgc2FtcGxl
ckRlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNf
Y2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihzYW1wbGVyRGVz
Y3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHNhbXBsZXJEZXNjcmlwdG9yLmFkZHJl
c3NNb2RlVSwgc2FtcGxlckRlc2NyaXB0b3IuYWRkcmVzc01vZGVWLCBzYW1wbGVyRGVzY3JpcHRv
ci5hZGRyZXNzTW9kZVcsIHNhbXBsZXJEZXNjcmlwdG9yLm1hZ0ZpbHRlciwgc2FtcGxlckRlc2Ny
aXB0b3IubWluRmlsdGVyLCBzYW1wbGVyRGVzY3JpcHRvci5taXBtYXBGaWx0ZXIsIHNhbXBsZXJE
ZXNjcmlwdG9yLmxvZE1pbkNsYW1wLCBzYW1wbGVyRGVzY3JpcHRvci5sb2RNYXhDbGFtcCwgc2Ft
cGxlckRlc2NyaXB0b3IuY29tcGFyZSwgc2FtcGxlckRlc2NyaXB0b3IubWF4QW5pc290cm9weSB9
IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yPiBD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2FtcGxl
ckRlc2NyaXB0b3ImIHNhbXBsZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZl
cnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHNh
bXBsZXJEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKaW5kZXggZjU0YWM3ZGQ0
ZmNiZWFlMTUwOGJhODc0YWMyZmM5OWQxZWNjNjdhMi4uMjZkYmQ2NzhlZWQ2OWVjN2E1MDM1NGQ1
ODdjZGRlYzZmYWNlZGI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5
LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1
bGVEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0
aW9uYWw8U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3Im
IHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFj
a2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2Um
PihzaGFkZXJNb2R1bGVEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgc2hhZGVy
TW9kdWxlRGVzY3JpcHRvci5jb2RlIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKGNvbnN0IFNoYWRlck1vZHVsZURlc2NyaXB0b3ImIHNoYWRlck1vZHVs
ZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRp
Y19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oc2hhZGVyTW9kdWxlRGVzY3JpcHRv
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0ZW5j
aWxGYWNlU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0ZW5j
aWxGYWNlU3RhdGUuY3BwCmluZGV4IDE3YmQ4NTdjNjhlY2UwMTA0YjlhNmMyMmVlNWYyNzVhYmJk
NTQ1OWQuLjgxMTQ4OTFiMjBlYjE0YzcwMjg2MzJhYzhlMDU4ZDM0MzU4Y2FmNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0
ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCitzdGQ6Om9wdGlvbmFsPFN0ZW5jaWxGYWNlU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRl
JiBzdGVuY2lsRmFjZVN0YXRlKQoreworICAgIHJldHVybiB7IHsgc3RlbmNpbEZhY2VTdGF0ZS5j
b21wYXJlLCBzdGVuY2lsRmFjZVN0YXRlLmZhaWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5kZXB0aEZh
aWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5wYXNzT3AgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU3RlbmNpbEZhY2VTdGF0ZSYgc3RlbmNpbEZhY2VTdGF0
ZSkKIHsKICAgICByZXR1cm4geyB7IHN0ZW5jaWxGYWNlU3RhdGUuY29tcGFyZSwgc3RlbmNpbEZh
Y2VTdGF0ZS5mYWlsT3AsIHN0ZW5jaWxGYWNlU3RhdGUuZGVwdGhGYWlsT3AsIHN0ZW5jaWxGYWNl
U3RhdGUucGFzc09wIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKaW5kZXgg
YjNhNmYwMjljYjgzNTYzOGY1YTEyZmU0OTcxN2JjMjY3NzA5NjY2NC4uMmRjZThiZWUzZThiOWY1
ZjBhMzE4MTQ4MmIzNzlkNjk2MzY2YWQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91
dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0JiBzdG9yYWdlVGV4dHVyZUJpbmRpbmdM
YXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuYWNj
ZXNzLCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuZm9ybWF0LCBzdG9yYWdlVGV4dHVyZUJp
bmRpbmdMYXlvdXQudmlld0RpbWVuc2lvbiB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91
dCYgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0KQogewogICAgIHJldHVybiB7IHsgc3RvcmFn
ZVRleHR1cmVCaW5kaW5nTGF5b3V0LmFjY2Vzcywgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
LmZvcm1hdCwgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LnZpZXdEaW1lbnNpb24gfSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZl
YXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRG
ZWF0dXJlcy5jcHAKaW5kZXggZDBkNmRjMmMzYTZmNmI1NDg2YWE1OWRjN2JkNmM2NDQ1NTJjYjk0
MS4uMjUxOGJmNDNhZDBlMDkwMjRjNjRjZWI1NjE2MDNlNGY3MjBjNzAwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMu
Y3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkRmVhdHVyZXM+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJl
cyYgc3VwcG9ydGVkRmVhdHVyZXMpCit7CisgICAgcmV0dXJuIHsgeyBzdXBwb3J0ZWRGZWF0dXJl
cy5mZWF0dXJlcygpIH0gfTsKK30KKwogUmVmUHRyPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0
dXJlcz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0
IFN1cHBvcnRlZEZlYXR1cmVzJiBzdXBwb3J0ZWRGZWF0dXJlcykKIHsKICAgICByZXR1cm4geyBQ
QUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0ZShzdXBwb3J0ZWRGZWF0dXJlcy5m
ZWF0dXJlcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVTdXBwb3J0ZWRMaW1pdHMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVN1cHBvcnRlZExpbWl0cy5jcHAKaW5kZXggOGUyYzA0MWY5YzA2M2IxM2UwOWEzNzVlMDY1ZmU5
ZmYxYjYwODY1Yi4uNjA4NzQzMDJlOTNhNzc4ZDY0ZjE1NTQ1ZmNmZTUxY2RlYzY4YmNlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExp
bWl0cy5jcHAKQEAgLTI5LDEwICsyOSw0MyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGltaXRzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkTGltaXRzPiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRz
JiBzdXBwb3J0ZWRMaW1pdHMpCit7CisgICAgcmV0dXJuIHsgeworICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFEKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhUZXh0dXJlRGltZW5zaW9uMkQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1
cmVEaW1lbnNpb24zRCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5
TGF5ZXJzKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhCaW5kR3JvdXBzKCksCisgICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJz
UGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZWRU
ZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1w
bGVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdl
QnVmZmVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9y
YWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1p
blVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heFZlcnRleEJ1ZmZlcnMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRl
eEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlckFy
cmF5U3RyaWRlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVy
Q29tcG9uZW50cygpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91
cFN0b3JhZ2VTaXplKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2Nh
dGlvbnNQZXJXb3JrZ3JvdXAoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtn
cm91cFNpemVZKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U2l6ZVooKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVy
RGltZW5zaW9uKCksCisgICAgfSB9OworfQorCiBSZWZQdHI8UEFMOjpXZWJHUFU6OlN1cHBvcnRl
ZExpbWl0cz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFN1cHBvcnRlZExpbWl0cyYgc3VwcG9ydGVkTGltaXRzKQogewogICAgIHJldHVybiB7IFBB
TDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM6OmNyZWF0ZSgKQEAgLTYxLDcgKzk0LDggQEAgUmVm
UHRyPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRGcm9tQmFja2kKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVX
b3JrZ3JvdXBTaXplWCwKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3Jv
dXBTaXplWSwKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WiwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5z
aW9uKSB9OworICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJE
aW1lbnNpb24KKyAgICApIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlQmluZGluZ0xh
eW91dC5jcHAKaW5kZXggNTVkNDUxMzBmNTM1ZDFkNGVhOTAwN2IyZGMxNjFiYWE3MzdiMDk1Ni4u
OTk1NGJiNzdiMmVkNzVjNGE3MGMyNDQxZjc0MjQ4MmMzZWZmNGNjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlv
dXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8VGV4dHVyZUJpbmRpbmdMYXlvdXQ+IENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJl
QmluZGluZ0xheW91dCYgdGV4dHVyZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyB0
ZXh0dXJlQmluZGluZ0xheW91dC5zYW1wbGVUeXBlLCB0ZXh0dXJlQmluZGluZ0xheW91dC52aWV3
RGltZW5zaW9uLCB0ZXh0dXJlQmluZGluZ0xheW91dC5tdWx0aXNhbXBsZWQgfSB9OworfQorCiBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFRleHR1cmVCaW5kaW5n
TGF5b3V0JiB0ZXh0dXJlQmluZGluZ0xheW91dCkKIHsKICAgICByZXR1cm4geyB7IHRleHR1cmVC
aW5kaW5nTGF5b3V0LnNhbXBsZVR5cGUsIHRleHR1cmVCaW5kaW5nTGF5b3V0LnZpZXdEaW1lbnNp
b24sIHRleHR1cmVCaW5kaW5nTGF5b3V0Lm11bHRpc2FtcGxlZCB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcApp
bmRleCA1ZGYzMTY3YjlhNmQyMmIyMmRhNmE4NGQ4ZjRkYzM0NDkxNDliMGE5Li5iZjZiNGQzNTYy
ZTcwNzhhMWE0ZTU0YWNkZWRjMDVkOTBkNWYxZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEw
ICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVy
ZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRp
b25hbDxUZXh0dXJlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVEZXNjcmlwdG9yJiB0ZXh0dXJlRGVz
Y3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0
PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVEZXNjcmlw
dG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgYXV0byBzaXplID0gY29udmVydFRvQmFja2luZyh0ZXh0dXJlRGVzY3JpcHRvci5zaXplKTsK
KyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXplKSwgdGV4dHVyZURlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2FtcGxlQ291bnQsIHRleHR1cmVEZXNj
cmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3IuZm9ybWF0LCB0ZXh0dXJlRGVzY3Jp
cHRvci51c2FnZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVE
ZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmco
Y29uc3QgVGV4dHVyZURlc2NyaXB0b3ImIHRleHR1cmVEZXNjcmlwdG9yKQogewogICAgIGF1dG8g
YmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlw
dG9yQmFzZSY+KHRleHR1cmVEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCmluZGV4
IGQxY2M1NTFjYjc3MDUxNjk2ZmU3OWRiMDRlYjQ5YTQ5NDg0YjQ2MDcuLjc2YWM2YTU4MWE3ZmY2
NGRmYzMwYjk4M2NiYjc0NDg3MDg0NjU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwCkBAIC0y
OSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRl
eHR1cmVWaWV3RGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPFRleHR1cmVWaWV3RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3Jp
cHRvciYgdGV4dHVyZVZpZXdEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRU
b0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JC
YXNlJj4odGV4dHVyZVZpZXdEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgdGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmZvcm1hdCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmRpbWVuc2lv
biwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmFzcGVjdCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmJh
c2VNaXBMZXZlbCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLm1pcExldmVsQ291bnQsIHRleHR1cmVW
aWV3RGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmFycmF5
TGF5ZXJDb3VudCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVW
aWV3RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNr
aW5nKGNvbnN0IFRleHR1cmVWaWV3RGVzY3JpcHRvciYgdGV4dHVyZVZpZXdEZXNjcmlwdG9yKQog
ewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBP
YmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVWaWV3RGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZhbGlkYXRpb25FcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcApp
bmRleCAyYjFiY2ZhZDA0MzgyN2U5NDViMjVkNGVhMDI1MjdjNjQwYjk2OGE0Li4wNjIyNmU1ZjQ5
YzQ2MTVlYTVhNGU3ZWUzMmZhYmNiOGFmMzE0NmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcApAQCAtMjksMTAgKzI5
LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVWYWxpZGF0aW9u
RXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxW
YWxpZGF0aW9uRXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3ImIHZhbGlkYXRpb25FcnJvcikKK3sK
KyAgICByZXR1cm4geyB7IHZhbGlkYXRpb25FcnJvci5tZXNzYWdlKCkgfSB9OworfQorCiBSZWZQ
dHI8UEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFZhbGlkYXRpb25FcnJvciYgdmFsaWRhdGlvbkVy
cm9yKQogewogICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3I6OmNyZWF0
ZSh2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKaW5kZXggMTVlZDVkYjY5M2Uw
MzVkZWMwMDA3MDhhNTg0OGQwNTNjMDZmMzlmZS4uYzcxOGJlMTU0MWU5N2EyZWNlZDNjMjE0N2Zi
M2E3MDA4ZTAxNWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVmVydGV4QXR0cmlidXRlLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8VmVydGV4QXR0cmlidXRlPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6VmVydGV4QXR0cmlidXRlJiB2ZXJ0ZXhBdHRyaWJ1dGUpCit7CisgICAgcmV0dXJuIHsgeyB2
ZXJ0ZXhBdHRyaWJ1dGUuZm9ybWF0LCB2ZXJ0ZXhBdHRyaWJ1dGUub2Zmc2V0LCB2ZXJ0ZXhBdHRy
aWJ1dGUuc2hhZGVyTG9jYXRpb24gfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpWZXJ0ZXhBdHRyaWJ1dGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9t
QmFja2luZyhjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIHZlcnRleEF0dHJpYnV0ZSkKIHsKICAgICBy
ZXR1cm4geyB7IHZlcnRleEF0dHJpYnV0ZS5mb3JtYXQsIHZlcnRleEF0dHJpYnV0ZS5vZmZzZXQs
IHZlcnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCmluZGV4
IDg1NDgyZDA2NWFlYTVmOGI2NzJlNzQ2MTc4ZjZkOGNkZjIxYzcwNzEuLjU2YWY1YmUxYjExMmNm
MWQ0NWE2ZDYwZmY4YzEwYmQyNzkzODBiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwCkBAIC0yOSwxMCAr
MjksMjUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVZlcnRleEJ1
ZmZlckxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlv
bmFsPFZlcnRleEJ1ZmZlckxheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleEJ1ZmZlckxheW91dCYgdmVydGV4QnVm
ZmVyTGF5b3V0KQoreworICAgIFZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7Cisg
ICAgYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHZlcnRleEJ1ZmZlckxheW91dC5h
dHRyaWJ1dGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiB2ZXJ0
ZXhCdWZmZXJMYXlvdXQuYXR0cmlidXRlcykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZEF0dHJp
YnV0ZSA9IGNvbnZlcnRUb0JhY2tpbmcoYXR0cmlidXRlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0
ZWRBdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBh
dHRyaWJ1dGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0ZWRBdHRyaWJ1dGUpKTsK
KyAgICB9CisKKyAgICByZXR1cm4geyB7IHZlcnRleEJ1ZmZlckxheW91dC5hcnJheVN0cmlkZSwg
dmVydGV4QnVmZmVyTGF5b3V0LnN0ZXBNb2RlLCBXVEZNb3ZlKGF0dHJpYnV0ZXMpIH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VmVydGV4QnVmZmVyTGF5b3V0PiBDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVmVydGV4QnVmZmVy
TGF5b3V0JiB2ZXJ0ZXhCdWZmZXJMYXlvdXQpCiB7CiAgICAgVmVjdG9yPFBBTDo6V2ViR1BVOjpW
ZXJ0ZXhBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVZlcnRleFN0YXRlLmNwcAppbmRleCAzYjI0MjgxNzI5ZWZjYWZjODkyNzlh
NjVhNDAzN2M5OTUyMDAyOGY2Li5iN2VlZWRjOGNmNzE5NDE0ODIzYWY3MGZiY2FkMjliNDY5OTI1
Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhT
dGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwzMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAorc3RkOjpvcHRpb25hbDxWZXJ0ZXhTdGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleFN0YXRlJiB2ZXJ0ZXhTdGF0
ZSkKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSY+KHZlcnRleFN0YXRlKSk7CisgICAgaWYg
KCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPHN0ZDo6
b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0Pj4gYnVmZmVyczsKKyAgICBidWZmZXJzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkodmVydGV4U3RhdGUuYnVmZmVycy5zaXplKCkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgYnVmZmVyIDogdmVydGV4U3RhdGUuYnVmZmVycykgeworICAgICAgICBpZiAo
YnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IGNvbnZlcnRUb0Jh
Y2tpbmcoKmJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgYnVmZmVycy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShjb252ZXJ0ZWRCdWZmZXIpKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBidWZmZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om51bGxvcHQpOworICAgIH0K
KworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUoYnVmZmVycykgfSB9Owor
fQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpWZXJ0ZXhTdGF0ZT4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFZlcnRleFN0YXRlJiB2ZXJ0
ZXhTdGF0ZSkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nh
c3Q8Y29uc3QgUHJvZ3JhbW1hYmxlU3RhZ2UmPih2ZXJ0ZXhTdGF0ZSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRl
clByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUFkYXB0ZXJQcm94eS5jcHAKaW5kZXggZGE0YmQxMTBiYzM3ZmEwYWIyMjU5Zjc3ODFm
MGFjMzlmN2ZkNDE3Mi4uNTkwOGU4YmZmNGRlNzc0Y2IwOWY0OTA3MjRlYjY4YjEyM2I1NWQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuY3BwCkBAIC0yOCwxMyArMjgsMTcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUFkYXB0ZXJN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAotUmVtb3RlQWRhcHRlclByb3h5OjpSZW1vdGVBZGFwdGVyUHJveHkoU3RyaW5nJiYgbmFt
ZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBmZWF0dXJlcywgUEFMOjpXZWJHUFU6
OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVBZGFwdGVy
UHJveHk6OlJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3Vw
cG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiBs
aW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJlbW90ZUdQVVByb3h5JiBwYXJlbnQsIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllciBpZGVudGlmaWVyKQogICAgIDogQWRhcHRlcihXVEZNb3ZlKG5hbWUpLCBmZWF0dXJl
cywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlcikKKyAgICAsIG1fYmFja2luZyhpZGVudGlmaWVy
KQogICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsOCArNDgsNDggQEAgUmVt
b3RlQWRhcHRlclByb3h5Ojp+UmVtb3RlQWRhcHRlclByb3h5KCkKIAogdm9pZCBSZW1vdGVBZGFw
dGVyUHJveHk6OnJlcXVlc3REZXZpY2UoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkRldmlj
ZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAg
IFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNj
cmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZl
YXR1cmVzOworICAgIFN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHM7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUFkYXB0ZXI6OlJlcXVlc3REZXZp
Y2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpLCB7IHN1cHBvcnRlZEZlYXR1cmVz
LCBzdXBwb3J0ZWRMaW1pdHMgfSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1
cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJl
cykpOworICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBv
cnRlZExpbWl0czo6Y3JlYXRlKAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURp
bWVuc2lvbjFELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJE
LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAorICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzLAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4QmluZEdyb3VwcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFt
aWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQsCisgICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
VmVydGV4QXR0cmlidXRlcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZl
ckFycmF5U3RyaWRlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRl
ckNvbXBvbmVudHMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U3RvcmFnZVNpemUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlv
bnNQZXJXb3JrZ3JvdXAsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVgsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6
ZVksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosCisg
ICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgor
ICAgICk7CisgICAgY2FsbGJhY2soUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHJl
c3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1bHRTdXBwb3J0ZWRMaW1pdHMpLCAq
dGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHku
aAppbmRleCA4MzNiYjNlZTM1OWQxYmI4ODRiZjc5OWU5NTlhZmVhNTk0Nzc4NjM0Li45YzNkOTU3
MTVmZjQxM2RiOWM1Mzk0MjVjN2I1OTZlZmUzNjY3OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVB
ZGFwdGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlR1BVUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVBZGFwdGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNCwyMCArMzUsMjQgQEAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworY2xhc3MgUmVt
b3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQ
QUw6OldlYkdQVTo6QWRhcHRlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVBZGFw
dGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVh
dHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMsIGJv
b2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUFkYXB0ZXJQcm94eT4gY3JlYXRl
KFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYgZmVhdHVyZXMs
IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmIGxpbWl0cywgYm9vbCBpc0ZhbGxiYWNrQWRh
cHRlciwgUmVtb3RlR1BVUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVBZGFwdGVyUHJveHkoV1RGTW92
ZShuYW1lKSwgZmVhdHVyZXMsIGxpbWl0cywgaXNGYWxsYmFja0FkYXB0ZXIsIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0
ZXJQcm94eShXVEZNb3ZlKG5hbWUpLCBmZWF0dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRl
ciwgcGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgpOwogCisgICAgUmVtb3RlR1BVUHJv
eHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJv
b3QoKSB7IHJldHVybiBtX3BhcmVudDsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQWRhcHRlclByb3h5
KFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYsIFBBTDo6V2Vi
R1BVOjpTdXBwb3J0ZWRMaW1pdHMmLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1lLCBQ
QUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiwgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlciwgUmVtb3RlR1BVUHJveHkmLCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQWRhcHRlclBy
b3h5KGNvbnN0IFJlbW90ZUFkYXB0ZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUFkYXB0
ZXJQcm94eShSZW1vdGVBZGFwdGVyUHJveHkmJikgPSBkZWxldGU7CkBAIC01NSwxMyArNjAsMjYg
QEAgcHJpdmF0ZToKICAgICBSZW1vdGVBZGFwdGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVBZGFw
dGVyUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBj
b25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0
ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2Vu
ZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
fQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6
Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNs
aWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgcmVx
dWVzdERldmljZShjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRvciYsIFdURjo6RnVu
Y3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJik+JiYpIGZpbmFsOwogCiAgICAg
RGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPik+PiBtX2Nh
bGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAg
IFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
KyAgICBSZWY8UmVtb3RlR1BVUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dFByb3h5LmNwcAppbmRleCAzZWIxN2FmODU4M2RmN2JiZGFmYTQ2YzQ1ZTk3N2Q2MDkwNzMyNjNh
Li5lOGIwMmYxOGEzYmRlNThlZWJmZTI2YjcxYTM2MWNmYmZlY2FhYmY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwCkBAIC0yOCwxMiArMjgs
MTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUJpbmRH
cm91cExheW91dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQmluZEdyb3Vw
TGF5b3V0UHJveHk6OlJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAg
ICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisg
ICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0UHJveHk6On5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpCiAKIHZvaWQg
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUJpbmRHcm91cExheW91dDo6U2V0TGFiZWwobGFiZWwp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0
UHJveHkuaAppbmRleCBhYWY5NTcwY2IwMWU1ZTE4ZDczYzk2NWE1NWNkN2M2NWFhZWIzMDdiLi5k
NDdkN2VjNzBiOGE2ZDFmOWJhMTUwNzE4NTFiYmVjN2MyZDY5YmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFz
cyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwTGF5b3V0
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eT4gY3JlYXRlKENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0
aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJv
eHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoKTsKIAor
ICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KFJlbW90ZURl
dmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsK
IAogICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KGNvbnN0IFJlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVt
b3RlQmluZEdyb3VwTGF5b3V0UHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSYgb3BlcmF0b3I9KFJlbW90
ZUJpbmRHcm91cExheW91dFByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmll
ciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGlj
IGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChU
JiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29u
bmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VE
X1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNz
YWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJv
b3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAK
ICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBX
ZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkg
fTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURl
dmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAKaW5kZXggNzc4NDgxZTBm
ZDU4ODc2ODkzYzQyYzM1NTAwN2I3MWJmYjIwYjJlNS4uZmEwMzdiMGExYTNlY2M4YTZjOTI4YmYy
ZjQ0NWY2NDQxYzk4YjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5
LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVCaW5kR3JvdXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJl
bW90ZUJpbmRHcm91cFByb3h5OjpSZW1vdGVCaW5kR3JvdXBQcm94eShDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQmluZEdyb3VwUHJveHk6
OlJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJl
bnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZUJpbmRHcm91cFByb3h5
Ojp+UmVtb3RlQmluZEdyb3VwUHJveHkoKQogCiB2b2lkIFJlbW90ZUJpbmRHcm91cFByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCaW5k
R3JvdXA6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUJpbmRHcm91cFByb3h5LmgKaW5kZXggNGRiZDM4MGQ4NmRhMjhkNjhlZWM0MDI5MTNiMmE4NmFm
MzE0MTMyOS4uOGRjYTEyYjhjNzE2YzIxODhlNmE4Y2U0MGE2ODM0ZmRmZjkwZjEyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgog
I2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUJpbmRHcm91cC5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJpbmRHcm91cFByb3h5IGZpbmFsIDog
cHVibGljIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
UmVtb3RlQmluZEdyb3VwUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBQcm94
eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwUHJv
eHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQmluZEdyb3VwUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
aWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJpbmRHcm91cFByb3h5
KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQmluZEdyb3VwUHJveHkoQ29udmVydFRv
QmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVCaW5kR3JvdXBQcm94eShSZW1vdGVEZXZpY2VQ
cm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVCaW5kR3JvdXBQcm94eShjb25zdCBSZW1vdGVCaW5kR3JvdXBQcm94eSYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZUJpbmRHcm91cFByb3h5JiYpID0g
ZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQmluZEdyb3Vw
UHJveHkmIG9wZXJhdG9yPShSZW1vdGVCaW5kR3JvdXBQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAg
IFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQor
ICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1l
b3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgp
LnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAg
UmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
ICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwCmluZGV4
IDdhMzBlYjQ2NDI1ZjU2MWYxMzc3MjhhOGU2ZmEwZWQ5Y2FhZWMyYTYuLjhiODVkYzhmY2JmM2Fi
NmEwODI0M2ZmMWY5ZWY1YTRhYjgwNjdkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQ
cm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiUmVtb3RlQnVmZmVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1S
ZW1vdGVCdWZmZXJQcm94eTo6UmVtb3RlQnVmZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVC
dWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkK
IHsKIH0KIApAQCAtNDMsMjkgKzQ2LDU1IEBAIFJlbW90ZUJ1ZmZlclByb3h5Ojp+UmVtb3RlQnVm
ZmVyUHJveHkoKQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyhQQUw6OldlYkdQ
VTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSwg
V1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1h
cE1vZGVGbGFncyk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGNhbGxiYWNrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQnVmZmVyOjpNYXBB
c3luYyhtYXBNb2RlRmxhZ3MsIG9mZnNldCwgc2l6ZSksIHsgZGF0YSB9KTsKKyAgICBVTlVTRURf
VkFSSUFCTEUoc2VuZFJlc3VsdCk7CisgICAgaWYgKCFkYXRhKSB7CisgICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOworICAgIG1fbWFwTW9kZUZsYWdzID0gbWFwTW9kZUZs
YWdzOworICAgIGNhbGxiYWNrKCk7CiB9CiAKIGF1dG8gUmVtb3RlQnVmZmVyUHJveHk6OmdldE1h
cHBlZFJhbmdlKHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUpIC0+IE1hcHBlZFJhbmdlCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOwotICAgIHJl
dHVybiB7IH07CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICBp
ZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gdXNlZE9mZnNldCA9
IG9mZnNldC52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4geyBtX2RhdGEtPmRhdGEoKSArIHVzZWRP
ZmZzZXQsIHNpemUudmFsdWVfb3IobV9kYXRhLT5zaXplKCkgLSB1c2VkT2Zmc2V0KSB9OwogfQog
CiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCgpCiB7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudCBlcnJvciBoYW5kbGluZy4KKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgaWYgKG1fbWFwTW9kZUZsYWdzICYgUEFM
OjpXZWJHUFU6Ok1hcE1vZGU6OldSSVRFKQorICAgICAgICBkYXRhID0gV1RGTW92ZSgqbV9kYXRh
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6OlVu
bWFwKFdURk1vdmUoZGF0YSkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisK
KyAgICBtX2RhdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9tYXBNb2RlRmxhZ3MgPSAwOwogfQog
CiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjpkZXN0cm95KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6OkRlc3Ryb3koKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjpzZXRM
YWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6
OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclBy
b3h5LmgKaW5kZXggMjg2MmVlY2JkMjdjMmUwY2ExZThhODJlZDU5NzEwN2E2NmQwYmQ5Yy4uYTdi
ZmY3M2RjNGQ1ZTUxMTI5ZmEwMGUzZDNmOGRhYTk2YzVmMzA3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCdWZmZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlci5o
PgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMzcsMTcgKzM4LDIwIEBAIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVCdWZmZXJQcm94eSBmaW5hbCA6IHB1
YmxpYyBQQUw6OldlYkdQVTo6QnVmZmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZUJ1ZmZlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyUHJveHk+IGNyZWF0ZShS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZlclByb3h5KGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1ZmZl
clByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXJQcm94eSgpOwogCisgICAgUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAotICAgIFJlbW90ZUJ1ZmZlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAg
UmVtb3RlQnVmZmVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQnVmZmVyUHJveHkoY29uc3Qg
UmVtb3RlQnVmZmVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCdWZmZXJQcm94eShSZW1v
dGVCdWZmZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU1LDYgKzU5LDE4IEBAIHByaXZhdGU6CiAg
ICAgUmVtb3RlQnVmZmVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVCdWZmZXJQcm94eSYmKSA9IGRl
bGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVm
YXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICBy
ZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2Fn
ZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5k
U3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBs
eSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigp
LnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBtYXBBc3luYyhQQUw6OldlYkdQ
VTo6TWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9mZnNl
dCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplRm9yTWFwLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CiAgICAgTWFwcGVkUmFuZ2UgZ2V0TWFwcGVkUmFuZ2Uo
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlNpemU2ND4pIGZpbmFsOwpAQCAtNjYsOCArODIsMTEgQEAgcHJpdmF0ZToK
IAogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gbV9jYWxsYmFja3M7CiAKLSAgICBX
ZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkg
fTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURl
dmljZVByb3h5PiBtX3BhcmVudDsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4g
bV9kYXRhOworICAgIFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3MgbV9tYXBNb2RlRmxhZ3MgeyAw
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1
ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHAKaW5kZXggOGJiOGQ3NWRhNmQ3YmM2ZTlj
MzM0NTlmNDZkOTY4NTliMjdjZWIyNi4uZjMzZmM2MzM0YjZkNDkxOGY5YWYxZWZlNzAxNTc4ODBl
ZWZlMTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHku
Y3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
LVJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVDb21t
YW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlm
aWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBS
ZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6On5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKQogCiB2
b2lkIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJp
bmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEJ1ZmZlcjo6U2V0TGFiZWwobGFiZWwp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94
eS5oCmluZGV4IDI0OTNjODQ3NTU4NmM5NjY5NjVhMGRhOWFhYjhiZTI3YWIzMTAwNGQuLjMzYWM1
MzQzZDA2Yjg5OTM0NWIyNmJhYjAxZWExMGJmZmYyODE2M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1
ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVUNvbW1hbmRCdWZmZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkgZmluYWwg
OiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29t
bWFuZEJ1ZmZlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KHBhcmVudCwgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlclBy
b3h5KGNvbnN0IFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90
ZUNvbW1hbmRCdWZmZXJQcm94eShSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmJikgPSBkZWxldGU7
CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21tYW5kQnVmZmVyUHJv
eHkmIG9wZXJhdG9yPShSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmJikgPSBkZWxldGU7CiAKICAg
ICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0K
KyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGlt
ZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9S
RVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3Qo
KS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5n
KCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQg
c2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgewor
ICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRp
bWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAg
IFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
KyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eS5jcHAKaW5kZXggMDk5YzYzZDdjMTEyNmUwMWE5NGM5ZDEwN2Y0MzNlZTIyMTczY2M0
NC4uZmVhMjlkOTkyODE2N2UyYjJhNGRmNDU1ZDlmODdhZjFmOGJmNmJlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5jcHAKQEAgLTI5LDE0ICsyOSwx
NyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIp
CisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00NiwxMiArNDksMzUgQEAgUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eTo6flJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoKQogCiBS
ZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5OjpiZWdpblJlbmRlclBhc3MoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0
ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0
byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6QmVnaW5SZW5k
ZXJQYXNzKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmll
cik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5OjpiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0
dXJuIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJLaXQ6OldlYkdQVTo6Q29tcHV0ZVBh
c3NEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOworICAgIGlmIChkZXNjcmlwdG9yKSB7
CisgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRs
aW5nLgorICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpj
cmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6
OmdlbmVyYXRlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0g
V2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6QmVnaW5Db21wdXRlUGFzcyhjb252ZXJ0
ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUo
KnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lk
IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb0J1ZmZlcigKQEAgLTYxLDEx
ICs4NywxNSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb0J1
ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAogICAgIFBB
TDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAg
ICBVTlVTRURfUEFSQU0oc291cmNlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dC0+Y29udmVydFRvQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRT
b3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29u
dmVydGVkRGVzdGluYXRpb24pOworICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0
ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkNvcHlCdWZmZXJUb0J1ZmZlcihj
b252ZXJ0ZWRTb3VyY2UsIHNvdXJjZU9mZnNldCwgY29udmVydGVkRGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uT2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb1RleHR1cmUo
CkBAIC03Myw5ICsxMDMsMTcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5
QnVmZmVyVG9UZXh0dXJlKAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
JiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNv
dXJjZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNl
KTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3Rp
bmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0
aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNv
bnZlcnRlZENvcHlTaXplID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAo
IWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENv
cHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Q29weUJ1ZmZlclRvVGV4dHVyZSgqY29udmVy
dGVkU291cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKApAQCAtODMsOSArMTIxLDE3IEBAIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weVRleHR1cmVUb0J1ZmZlcigKICAgICBj
b25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBkZXN0aW5hdGlvbiwKICAgICBjb25z
dCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShz
b3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVk
U291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNv
bnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNT
RVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29u
dmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Q29weVRleHR1cmVUb0J1ZmZlcigqY29udmVydGVkU291cmNlLCAqY29udmVydGVkRGVz
dGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVy
ZVRvVGV4dHVyZSgKQEAgLTkzLDkgKzEzOSwxNyBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFn
ZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50
M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9Q
QVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRv
IGNvbnZlcnRlZFNvdXJjZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0Jh
Y2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAgICBhdXRvIGNv
bnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsK
KyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXpl
KTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwg
IWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1
bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Q29weVRleHR1cmVUb1Rl
eHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVk
Q29weVNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcigKQEAgLTEwMywyOSArMTU3LDQy
IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcigKICAgICBQQUw6
OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXpl
NjQgc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9Q
QVJBTShkZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1
dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRp
b24pOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24pCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
OjpGaWxsQnVmZmVyKGNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6
ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQog
ewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UHVzaERlYnVnR3JvdXAoV1RGTW92
ZShncm91cExhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6UG9w
RGVidWdHcm91cCgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIoU3RyaW5nJiYg
bWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6SW5zZXJ0
RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6d3JpdGVU
aW1lc3RhbXAoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBxdWVyeVNldCwgUEFMOjpXZWJH
UFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQg
PSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHF1ZXJ5U2V0KTsK
KyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGlmICghY29udmVydGVkUXVlcnlT
ZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpXcml0ZVRpbWVzdGFtcChjb252ZXJ0ZWRRdWVyeVNl
dCwgcXVlcnlJbmRleCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpyZXNvbHZlUXVlcnlTZXQoCkBAIC0xMzUs
MjEgKzIwMiwzNiBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnJlc29sdmVRdWVy
eVNldCgKICAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBkZXN0aW5hdGlvbiwKICAgICBQ
QUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0UXVlcnkpOwotICAgIFVOVVNFRF9Q
QVJBTShxdWVyeUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRRdWVyeVNl
dCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcocXVlcnlTZXQp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0
aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVz
dGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFj
b252ZXJ0ZWRRdWVyeVNldCB8fCAhY29udmVydGVkRGVzdGluYXRpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRF
bmNvZGVyOjpSZXNvbHZlUXVlcnlTZXQoY29udmVydGVkUXVlcnlTZXQsIGZpcnN0UXVlcnksIHF1
ZXJ5Q291bnQsIGNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpDb21t
YW5kQnVmZmVyPiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpmaW5pc2goY29uc3QgUEFMOjpX
ZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJldHVy
biBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVk
RGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5n
LgorICAgICAgICByZXR1cm4gUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpjcmVhdGUobV9wYXJl
bnQsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29t
bWFuZEVuY29kZXI6OkZpbmlzaCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVDb21t
YW5kQnVmZmVyUHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6c2V0
TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFu
ZEVuY29kZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVu
Y29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCmluZGV4IGVkOTc4ZTc2MzNkYzBjNTBmMThj
YTA3ODIxZDFjN2MyNDY5M2JmODQuLjgzYjVkMGJmMDkyZmEzNjBjYjdlNDEwNWU3YmM5NmUzN2I1
YjJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXIuaD4KIApAQCAt
MzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21t
YW5kRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eT4gY3JlYXRl
KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQs
IGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9w
YXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5w
YXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2Fz
dENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShjb25zdCBSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQ
cm94eShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsNiArNTgs
MTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBvcGVyYXRvcj0o
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50
aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVu
dENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VO
VVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVy
biByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
fQogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2Rlcj4gYmVnaW5SZW5kZXJQ
YXNzKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYpIGZpbmFsOwogICAg
IFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyPiBiZWdpbkNvbXB1dGVQYXNzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4mKSBm
aW5hbDsKQEAgLTEwMiw4ICsxMTgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2Jh
Y2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDNlMmU1YjZiOTg4
MjNmYTBjNmQ5ZTY1ZTc3ODdkNTYwYTA2ODJmNTMuLjcxZjY3OTU1YWI3ZDU2OTdhYTNjNmMxOGIw
NjYzM2QwMjkyYWI5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJl
bnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisg
ICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
ICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00Myw0MiArNDYsNjUgQEAgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6On5SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSgp
CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldFBpcGVsaW5lKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1dGVQaXBlbGluZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvbXB1dGVQ
aXBlbGluZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoY29t
cHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKTsKKyAg
ICBpZiAoIWNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
OjpTZXRQaXBlbGluZShjb252ZXJ0ZWRDb21wdXRlUGlwZWxpbmUpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHk6OmRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHopCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURf
UEFSQU0oeik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyOjpEaXNwYXRjaCh4LCB5LCB6KSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpk
aXNwYXRjaEluZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXI6OkRpc3BhdGNoSW5kaXJlY3QoY29udmVydGVkSW5kaXJlY3RC
dWZmZXIsIGluZGlyZWN0T2Zmc2V0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVsaW5l
U3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFBB
TDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlT
ZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1
ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhxdWVy
eVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBpZiAoIWNvbnZlcnRl
ZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OkJlZ2luUGlwZWxpbmVTdGF0aXN0
aWNzUXVlcnkoY29udmVydGVkUXVlcnlTZXQsIHF1ZXJ5SW5kZXgpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHk6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OkVuZFBpcGVsaW5lU3Rh
dGlzdGljc1F1ZXJ5KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGFzcygpCiB7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpF
bmRQYXNzKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJ
bmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+
PiYmIG9mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0cyk7CisgICAgYXV0byBjb252
ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYg
KCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6U2V0QmluZEdy
b3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIFdURk1vdmUob2Zmc2V0cykpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29u
c3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLApAQCAtODcsMzEgKzExMywzNyBA
QCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpX
ZWJHUFU6OkluZGV4MzIgaW5kZXgsIGNvbgogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZHluYW1p
Y09mZnNldHNEYXRhU3RhcnQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBkeW5hbWljT2Zmc2V0
c0RhdGFMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXJMZW5ndGgpOwot
ICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3Jv
dXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJpbmRHcm91
cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYgKCFjb252ZXJ0ZWRC
aW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6U2V0QmluZEdyb3VwKGluZGV4LCBj
b252ZXJ0ZWRCaW5kR3JvdXAsIFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNl
dD4oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciArIGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LCBk
eW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVidWdH
cm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVs
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXI6OlB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UG9wRGVidWdHcm91cCgpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxhYmVsKQog
ewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpJbnNlcnREZWJ1Z01hcmtl
cihXVEZNb3ZlKG1hcmtlckxhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRl
cm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCmluZGV4IGJhZDQxNTMwZWM2ODU0YWNm
NzEyNTI5ZmY0NTBhYjc5NzI1NDI4ODIuLmQ2OTgwYjg3MjRjY2JiNjY1NTViZTE1MmZkMTQ4NDJi
ZGY2Mjg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQ
VUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQYXNzRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHkoKTsKIAorICAgIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCgpIHsg
cmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBt
X3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShjb25zdCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsNiArNTgsMTggQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSYgb3BlcmF0b3I9KFJl
bW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRl
bnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9z
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
c2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICB9CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlw
ZWxpbmUmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplMzI+KSBmaW5hbDsKQEAgLTc5LDggKzk1LDkgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQ
VUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9Owor
ICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5n
Q29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3Bw
CmluZGV4IDBmMTFiYzc0N2JmNDdjMTA4MTJlN2JhMzU2NWI5OWVjNjMwZmI4YzcuLjY4ZGM3M2Q4
NzQ3Yjc2NjJiM2UxNjI4OWNmMTgyYTM5NjIwNTBjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHAKQEAgLTI5LDEyICsyOSwxNSBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dFBy
b3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVsaW5lTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCi1SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6UmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKK1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpSZW1vdGVDb21wdXRlUGlwZWxpbmVQ
cm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0K
IApAQCAtNDQsMTMgKzQ3LDE3IEBAIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5Ojp+UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lUHJveHkoKQogCiBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91
dD4gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJf
dCBpbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIHJldHVybiBSZW1vdGVC
aW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lOjpH
ZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6
OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OnNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQaXBlbGluZTo6U2V0
TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lUHJveHkuaAppbmRleCAzMDkwZWFjNjA1YmUyNzAzMzYxZmYyNDJkOGUxZDZl
ZTY4NjNiY2Q3Li42YjczYjlkNjA0ZDU4MTIyYjVlODc3NzhkY2YzOTQwYmJlOWRmNDYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURl
dmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lLmg+CiAKQEAgLTM2LDE3ICsz
NywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94
eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
UHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3Bh
cmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBh
cmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZVBy
b3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KGNvbnN0IFJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwx
MyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSYgb3Bl
cmF0b3I9KFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2Vi
R1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAg
CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQg
PSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICB9CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4gZ2V0Qmlu
ZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWxJ
bnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9i
YWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZURldmljZVByb3h5LmNwcAppbmRleCA4MjlmODU1NTQ0ZjI4Zjg0MGZmYzFmMDBiMWY5NWYxM2Iw
NGE2Y2Q5Li4yYjQ0YjNlNzdlOTRmOTE1YWVhNjI4ZDZiZTQwMzlhMTQ3ODhiY2EwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVE
ZXZpY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiUmVtb3RlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaCIKKyNpbmNsdWRl
ICJSZW1vdGVEZXZpY2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUV4dGVybmFsVGV4dHVy
ZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZVF1ZXJ5U2V0UHJveHkuaCIKQEAgLTQ2LDkgKzQ3LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZURldmljZVByb3h5OjpSZW1vdGVEZXZpY2VQcm94
eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFM
OjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZURldmljZVByb3h5OjpSZW1vdGVE
ZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVz
LCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMsIFJlbW90ZUFkYXB0
ZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IERldmljZShXVEZN
b3ZlKGZlYXR1cmVzKSwgV1RGTW92ZShsaW1pdHMpKQorICAgICwgbV9iYWNraW5nKGlkZW50aWZp
ZXIpCiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC02MiwxMDcgKzY1LDI2MCBA
QCB2b2lkIFJlbW90ZURldmljZVByb3h5OjpkZXN0cm95KCkKIAogUmVmPFBBTDo6V2ViR1BVOjpC
dWZmZXI+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCdWZmZXIoY29uc3QgUEFMOjpXZWJHUFU6
OkJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVCdWZmZXJQcm94eTo6Y3JlYXRlKG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYg
KCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJy
b3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVCdWZmZXJQcm94eTo6Y3JlYXRlKCp0
aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURl
dmljZTo6Q3JlYXRlQnVmZmVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUJ1ZmZl
clByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+IFJlbW90ZURldmljZVByb3h5Ojpj
cmVhdGVUZXh0dXJlKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90
ZVRleHR1cmVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJl
dHVybiBSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0
byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVRleHR1cmUoKmNv
bnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpX
ZWJHUFU6OlNhbXBsZXI+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVTYW1wbGVyKGNvbnN0IFBB
TDo6V2ViR1BVOjpTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURf
UEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZVNhbXBsZXJQcm94eTo6Y3JlYXRl
KG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRv
ciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRv
cik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVTYW1wbGVyUHJv
eHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BV
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVNhbXBsZXIoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlk
ZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1
cm4gUmVtb3RlU2FtcGxlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVy
ZT4gUmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFsVGV4dHVyZShjb25zdCBQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVT
RURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUV4dGVybmFsVGV4dHVyZVBy
b3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0
ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
ZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90
ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8g
aWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpJbXBvcnRFeHRlcm5hbFRleHR1
cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6
OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9
CiAKIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0PiBSZW1vdGVEZXZpY2VQcm94eTo6
Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
LSAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlm
ICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVy
cm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6
OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUJpbmRHcm91cExheW91dCgqY29udmVydGVkRGVzY3JpcHRv
ciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAg
IHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpQ
aXBlbGluZUxheW91dD4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVBpcGVsaW5lTGF5b3V0KGNv
bnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVQaXBlbGlu
ZUxheW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsK
KyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0
dXJuIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisg
ICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVBpcGVs
aW5lTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVBpcGVsaW5lTGF5b3V0
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmll
cik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwPiBSZW1vdGVEZXZpY2VQcm94eTo6
Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
UmVtb3RlQmluZEdyb3VwUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3Jp
cHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAg
ICAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQor
CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUJp
bmRHcm91cCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBQcm94eTo6
Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0K
IAogUmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+IFJlbW90ZURldmljZVByb3h5OjpjcmVh
dGVTaGFkZXJNb2R1bGUoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVy
biBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcu
CisgICAgICAgIHJldHVybiBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6Y3JlYXRlKCp0aGlzLCBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsK
KyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6
Q3JlYXRlU2hhZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVNoYWRl
ck1vZHVsZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZT4gUmVtb3Rl
RGV2aWNlUHJveHk6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpjcmVh
dGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlw
dG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlw
dG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQ
aXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmll
ciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVDb21wdXRlUGlwZWxpbmUoKmNvbnZl
cnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJl
c3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OmNyZWF0ZSgq
dGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVSZW5k
ZXJQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4g
UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRE
ZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcu
CisgICAgICAgIHJldHVybiBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkp
OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNl
OjpDcmVhdGVSZW5kZXJQaXBlbGluZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVS
ZW5kZXJQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21w
dXRlUGlwZWxpbmVBc3luYyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3Jp
cHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZERl
c2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRl
c2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRlbnRpZmll
ciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5
bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpLCB7IH0pOworICAgIGlmICghc2Vu
ZFJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2soUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRl
bnRpZmllcikpOwogfQogCiB2b2lkIFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVSZW5kZXJQaXBl
bGluZUFzeW5jKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBpcGVs
aW5lPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0g
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMo
TWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlUmVuZGVyUGlwZWxpbmVBc3luYygqY29udmVy
dGVkRGVzY3JpcHRvciwgaWRlbnRpZmllciksIHsgfSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQor
ICAgICAgICByZXR1cm47CisKKyAgICBjYWxsYmFjayhSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
IH0KIAogUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rlcj4gUmVtb3RlRGV2aWNlUHJveHk6
OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNv
bW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpjcmVh
dGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxDb21tYW5k
RW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CisgICAgaWYgKGRlc2NyaXB0
b3IpIHsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBpZiAoIWNvbnZl
cnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3Ig
aGFuZGxpbmcuCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6
Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9
IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVDb21tYW5kRW5jb2RlcihXVEZNb3ZlKGNv
bnZlcnRlZERlc2NyaXB0b3IpLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNl
bmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNyZWF0
ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJl
ZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4gUmVtb3RlRGV2aWNlUHJveHk6OmNy
ZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZUVu
Y29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlw
dG9yKTsKLSAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpjcmVhdGUo
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9y
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9y
KTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZp
ZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcigq
Y29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9
CiAKIFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVR
dWVyeVNldChjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXREZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlUXVl
cnlTZXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8g
Y29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVy
biBSZW1vdGVRdWVyeVNldFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8g
aWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVRdWVyeVNldCgqY29u
dmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVRdWVyeVNldFByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90
ZURldmljZVByb3h5OjpwdXNoRXJyb3JTY29wZShQQUw6OldlYkdQVTo6RXJyb3JGaWx0ZXIgZXJy
b3JGaWx0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9yRmlsdGVyKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OlB1c2hFcnJvclNjb3BlKGVy
cm9yRmlsdGVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lk
IFJlbW90ZURldmljZVByb3h5Ojpwb3BFcnJvclNjb3BlKFdURjo6RnVuY3Rpb248dm9pZChzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFcnJvcj4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9yPiBlcnJvcjsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpQb3BF
cnJvclNjb3BlKCksIHsgZXJyb3IgfSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OworCisgICAgaWYgKCFlcnJvcikgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV1RGOjpzd2l0Y2hPbihXVEZNb3ZlKCplcnJv
ciksIFsmXSAoT3V0T2ZNZW1vcnlFcnJvciYmIG91dE9mTWVtb3J5RXJyb3IpIHsKKyAgICAgICAg
Y2FsbGJhY2soeyBQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSk7Cisg
ICAgfSwgWyZdIChWYWxpZGF0aW9uRXJyb3ImJiB2YWxpZGF0aW9uRXJyb3IpIHsKKyAgICAgICAg
Y2FsbGJhY2soeyBQQUw6OldlYkdQVTo6VmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoV1RGTW92ZSh2
YWxpZGF0aW9uRXJyb3IubWVzc2FnZSkpIH0pOworICAgIH0pOwogfQogCiB2b2lkIFJlbW90ZURl
dmljZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEZXZpY2U6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNl
bmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2
aWNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZURldmljZVByb3h5LmgKaW5kZXggNjYyNjk0YTMwOThjMDFhMzZlY2NjZTU5N2QyYjc1
MWFiOTczZGFiYi4uOGViZTM1YzVkOTA5YjRlNTZhMWVjYjJhMjkzNTQ3OWQxZWUyNjc3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRGV2aWNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKICNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4KICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgpAQCAtMzgsMTcgKzM5LDIwIEBAIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVEZXZpY2VQcm94eSBmaW5hbCA6IHB1
YmxpYyBQQUw6OldlYkdQVTo6RGV2aWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZURldmljZVByb3h5PiBjcmVhdGUoUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4m
JiBmZWF0dXJlcywgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gY3JlYXRlKFJlZjxQQUw6OldlYkdQVTo6U3VwcG9y
dGVkRmVhdHVyZXM+JiYgZmVhdHVyZXMsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRz
PiYmIGxpbWl0cywgUmVtb3RlQWRhcHRlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlUHJv
eHkoV1RGTW92ZShmZWF0dXJlcyksIFdURk1vdmUobGltaXRzKSwgY29udmVydFRvQmFja2luZ0Nv
bnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRGV2aWNlUHJveHko
V1RGTW92ZShmZWF0dXJlcyksIFdURk1vdmUobGltaXRzKSwgcGFyZW50LCBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIH5SZW1vdGVEZXZpY2VQcm94
eSgpOworICAgIHZpcnR1YWwgflJlbW90ZURldmljZVByb3h5KCk7CisKKyAgICBSZW1vdGVBZGFw
dGVyUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCk7IH0KIAogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJl
bW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+JiYsIFJl
ZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYpOworICAgIFJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVh
dHVyZXM+JiYsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmLCBSZW1vdGVBZGFw
dGVyUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlRGV2aWNlUHJveHkoY29uc3QgUmVtb3RlRGV2aWNlUHJveHkmKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVEZXZpY2VQcm94eShSZW1vdGVEZXZpY2VQcm94eSYmKSA9IGRlbGV0ZTsK
QEAgLTU2LDYgKzYwLDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlRGV2aWNlUHJveHkmIG9wZXJh
dG9yPShSZW1vdGVEZXZpY2VQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZp
ZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRp
YyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQo
VCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENv
bm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNF
RF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiBy
b290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQog
CiAgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CiAKQEAgLTg4LDggKzEwNCw5IEBAIHByaXZhdGU6
CiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlw
ZWxpbmU+JiYpPj4gbV9jcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jQ2FsbGJhY2tzOwogICAgIERl
cXVlPFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFcnJvcj4m
Jik+PiBtX3BvcEVycm9yU2NvcGVDYWxsYmFja3M7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1f
YmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVu
dGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZUFkYXB0ZXJQcm94eT4gbV9wYXJl
bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuY3BwCmluZGV4IGU4OGU0ZDllYTY3MTg2
NmE5ZmU0YzMwNWIwZTlhYTgwMzk5ZmMyY2QuLmFiODcyZjE2NGU3MzI4ZmJlMTIwYWJiZTE3NDlj
ZTNiOTU0YzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1
cmVQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlRXh0ZXJuYWxUZXh0dXJlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgewogCi1SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6UmVtb3RlRXh0ZXJuYWxUZXh0
dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKK1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6
IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApA
QCAtNDMsNyArNDYsOCBAQCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6flJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5KCkKIAogdm9pZCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eTo6c2V0
TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShs
YWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRXh0ZXJu
YWxUZXh0dXJlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFs
VGV4dHVyZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCmluZGV4IGMzOGY0YzZhYzkwNTg5ODg0
ZDljMDg5MGQzNTQyMTFkZDI1NDQ2NTcuLmZlNGI4YzM5YzZmNzYwNjEyNjA5OTVlOWYxMmQxODAz
MWNmNWRjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJv
eHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5j
bHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmUuaD4K
IApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJv
eHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KHBhcmVudCwgY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVF
eHRlcm5hbFRleHR1cmVQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgp
IHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVy
biBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlRXh0
ZXJuYWxUZXh0dXJlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJv
eHkoY29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eShSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSYmKSA9IGRl
bGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgogICAgIFJlbW90ZUV4dGVybmFsVGV4
dHVyZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmJikgPSBkZWxl
dGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1
bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2Up
LCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkp
CisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5z
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2Vi
R1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNr
aW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcApp
bmRleCA5ZTM4ZDdmZjNlODhhNWJiZDk0ZTZlN2NjMTJlNDE0YTZlZDFkMmM5Li42NDkyMjgzOGQ5
YzZhZWMzZTFiOGJkZTEzNjI3NzFmOGFkNTcyNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJv
eHkuY3BwCkBAIC0yOCwxMiArMjgsMjEgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRl
clByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCi1SZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGRl
ZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKKworUmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVBy
b3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3N0cmVh
bUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLCBkZWZhdWx0U3Ry
ZWFtU2l6ZSkKIHsKIH0KIApAQCAtNDMsOCArNTIsNTAgQEAgUmVtb3RlR1BVUHJveHk6On5SZW1v
dGVHUFVQcm94eSgpCiAKIHZvaWQgUmVtb3RlR1BVUHJveHk6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdURjo6RnVuY3Rp
b248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYpPiYmIGNhbGxiYWNrKQogewot
ICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwor
ICAgIGF1dG8gY29udmVydGVkT3B0aW9ucyA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNv
bnZlcnRUb0JhY2tpbmcob3B0aW9ucyk7CisgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlvbnMpOwor
ICAgIGlmICghY29udmVydGVkT3B0aW9ucykKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBTdHJpbmcgbmFt
ZTsKKyAgICBTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICBTdXBwb3J0
ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzOworICAgIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXI7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUdQVTo6UmVxdWVz
dEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZpZXIpLCB7IG5hbWUsIHN1cHBvcnRl
ZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVyIH0pOworICAgIGlm
ICghc2VuZFJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZXN1bHRTdXBwb3J0
ZWRGZWF0dXJlcyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlczo6Y3JlYXRlKFdURk1v
dmUoc3VwcG9ydGVkRmVhdHVyZXMuZmVhdHVyZXMpKTsKKyAgICBhdXRvIHJlc3VsdFN1cHBvcnRl
ZExpbWl0cyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM6OmNyZWF0ZSgKKyAgICAgICAg
c3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24xRCwKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24zRCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVB
cnJheUxheWVycywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heEJpbmRHcm91cHMsCisgICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9ybUJ1ZmZlcnNQZXJQaXBlbGluZUxh
eW91dCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNTdG9yYWdlQnVmZmVyc1Bl
clBpcGVsaW5lTGF5b3V0LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U2FtcGxlZFRleHR1
cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVyc1Bl
clNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZlcnNQ
ZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFN0b3JhZ2VUZXh0dXJl
c1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZl
cnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFVuaWZvcm1CdWZm
ZXJCaW5kaW5nU2l6ZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFN0b3JhZ2VCdWZmZXJC
aW5kaW5nU2l6ZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZz
ZXRBbGlnbm1lbnQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5taW5TdG9yYWdlQnVmZmVyT2Zm
c2V0QWxpZ25tZW50LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QnVmZmVycywK
KyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEF0dHJpYnV0ZXMsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0cmlkZSwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25lbnRzLAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplLAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29ya2dyb3VwLAorICAgICAgICBzdXBw
b3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVYLAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29t
cHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24KKyAgICApOworICAgIGNhbGxiYWNrKFJlbW90ZUFk
YXB0ZXJQcm94eTo6Y3JlYXRlKFdURk1vdmUobmFtZSksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVk
RmVhdHVyZXMpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExpbWl0cyksIGlzRmFsbGJhY2tBZGFw
dGVyLCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmgK
aW5kZXggNWE5NGIzMDlhM2RkYjhhMDVhZTYxYmE5ZmJlY2JlYWNiYjkwM2IxNS4uMGZmZWEzOGNm
OGM2ZmJhNzg4YWE5MGVjYmFiZGEzZjIwNTYwNDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94
eS5oCkBAIC0yNywyNyArMjcsMzYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFUuaD4KICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBHUFVQcm9jZXNzQ29u
bmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAogY2xhc3MgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUdQVVByb3h5IGZpbmFsIDogcHVibGlj
IFBBTDo6V2ViR1BVOjpHUFUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlR1BVUHJv
eHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVHUFVQcm94eT4gY3JlYXRlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVHUFVQ
cm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVHUFVQcm94eSgpOwogCisgICAg
UmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiAqdGhpczsgfQorCisgICAgSVBDOjpTdHJl
YW1DbGllbnRDb25uZWN0aW9uJiBzdHJlYW1DbGllbnRDb25uZWN0aW9uKCkgeyByZXR1cm4gbV9z
dHJlYW1Db25uZWN0aW9uOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVHUFVQcm94eShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9u
JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZUdQVVByb3h5KGNvbnN0IFJlbW90ZUdQVVByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3Rl
R1BVUHJveHkoUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7CkBAIC01NSwxMyArNjQsMjYgQEAg
cHJpdmF0ZToKICAgICBSZW1vdGVHUFVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUdQVVByb3h5JiYp
ID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25k
cyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246
OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0
aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHJlcXVlc3RBZGFwdGVy
KGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXVEY6OkZ1bmN0aW9u
PHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4mJikgZmluYWw7CiAKICAgICBE
ZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYmKT4+
IG1fY2FsbGJhY2tzOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7
CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlvbiBtX3N0cmVhbUNvbm5lY3Rpb247
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcAppbmRleCAxMTcwN2ExOTkxZGM0NGM4NWQ0
YmE4YjU3OGI5Yzk3NzZlZDQzMjY1Li43NDIxYTllMDkxZjI4MTVlZDNkMWIzZDdhYTMxYjNhYzQ0
Yzg0MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNp
bmNsdWRlICJSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAotUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3Rl
UGlwZWxpbmVMYXlvdXRQcm94eTo6UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhp
ZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYs
OCBAQCBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5Ojp+UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eSgpCiAKIHZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChj
b25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUGlwZWxpbmVMYXlvdXQ6OlNldExh
YmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxp
bmVMYXlvdXRQcm94eS5oCmluZGV4IDRkNmVjY2E5MjgwM2I5MDFhNGU5ODVlMjAxZjM1ZWNhYzQ1
NTI4MjMuLjBjOWQzNDdlODFiNjI4NmMzZDc3NGFjYmIzNjNlMjE3NzFiYmJiZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBp
cGVsaW5lTGF5b3V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBA
IGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVQaXBlbGluZUxh
eW91dFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dFByb3h5PiBjcmVhdGUo
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBlbGluZUxh
eW91dFByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVQaXBlbGluZUxheW91dFByb3h5KCk7CiAKKyAg
ICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBS
ZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQo
KTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCi0gICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYpOworICAgIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkoUmVtb3RlRGV2aWNl
UHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShjb25zdCBSZW1vdGVQaXBlbGluZUxheW91dFBy
b3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShSZW1vdGVQaXBl
bGluZUxheW91dFByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6
CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVBpcGVsaW5l
TGF5b3V0UHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmco
KSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQ
Qzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVh
bUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQg
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4
dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+
IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAKaW5kZXggZDAzZTM3MWU5Nzc0M2YwMTBkODQ2
ZGYzOWFiYmUwYWI1MGM2NWE4ZC4uMmZkMTQ4YWM3YWNiMTBiZTdhYWExNjU5MmE3NDY0YjQwYmI3
ZGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAKQEAgLTI4LDEy
ICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3Rl
UXVlcnlTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVF1ZXJ5U2V0UHJv
eHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVF1ZXJ5U2V0UHJveHk6OlJlbW90ZVF1ZXJ5U2V0UHJv
eHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
OiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAK
QEAgLTQzLDExICs0NiwxNCBAQCBSZW1vdGVRdWVyeVNldFByb3h5Ojp+UmVtb3RlUXVlcnlTZXRQ
cm94eSgpCiAKIHZvaWQgUmVtb3RlUXVlcnlTZXRQcm94eTo6ZGVzdHJveSgpCiB7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVlcnlTZXQ6OkRlc3Ryb3koKSk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXJ5
U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBV
TlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVF1ZXJ5U2V0OjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1
ZXJ5U2V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaAppbmRleCBiN2EyYzg2MjZmYWI3ZTI4NTFkMGRjMDQz
MGU2YTg5ZDhiYzNiYjExLi5kOGM2Y2E3MTZhZjM5MTcxOWVmZGNmZWUwYzQwN2U2M2I5ZThlNGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVRdWVyeVNldFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUXVlcnlTZXRQcm94eSBmaW5h
bCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UXVlcnlTZXQgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUXVlcnlTZXRQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXJ5U2V0UHJv
eHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXJ5U2V0UHJv
eHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlUXVlcnlTZXRQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUXVlcnlTZXRQcm94eSgp
OwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9
CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCku
cGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVRdWVyeVNldFByb3h5KFJlbW90ZURldmljZVByb3h5
JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZVF1ZXJ5U2V0UHJveHkoY29uc3QgUmVtb3RlUXVlcnlTZXRQcm94eSYpID0gZGVsZXRlOwog
ICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkoUmVtb3RlUXVlcnlTZXRQcm94eSYmKSA9IGRlbGV0ZTsK
QEAgLTU0LDEzICs1OCwyNiBAQCBwcml2YXRlOgogICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkmIG9w
ZXJhdG9yPShSZW1vdGVRdWVyeVNldFByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRl
bnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAg
c3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9z
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
c2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQm
JiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNz
YWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICB9CiAKICAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRl
cm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNr
aW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVl
dWVQcm94eS5jcHAKaW5kZXggNjNhOGMwNjAwZDIxNzEwNTMwODkyMjEzNzYwNzJlNzcyODYwOTRl
NC4uNjAzMGNlNmUzMzNhYzFkMDgyNjU1NjZhNDkyNzUxMzM1ODZiODFjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUXVldWVQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUXVldWVNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKLVJlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkoQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVF1ZXVlUHJv
eHk6OlJlbW90ZVF1ZXVlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVu
dChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDEyICs0NiwyNSBAQCBSZW1vdGVRdWV1ZVByb3h5Ojp+
UmVtb3RlUXVldWVQcm94eSgpCiAKIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6c3VibWl0KFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4mJiBj
b21tYW5kQnVmZmVycykKIHsKLSAgICBVTlVTRURfUEFSQU0oY29tbWFuZEJ1ZmZlcnMpOworICAg
IFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiBjb252ZXJ0ZWRDb21tYW5kQnVmZmVyczsKKyAgICBj
b252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvbW1hbmRCdWZm
ZXJzLnNpemUoKSk7CisgICAgZm9yIChhdXRvIGNvbW1hbmRCdWZmZXIgOiBjb21tYW5kQnVmZmVy
cykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRCdWZmZXIgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvbW1hbmRCdWZmZXIpOworICAgICAgICBB
U1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcik7CisgICAgICAgIGlmICghY29udmVydGVkQ29t
bWFuZEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29udmVydGVkQ29tbWFu
ZEJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKGNvbnZlcnRlZENvbW1hbmRCdWZmZXIpOworICAgIH0K
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6U3VibWl0
KGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6Om9uU3VibWl0dGVkV29ya0RvbmUoV1RG
OjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxi
YWNrKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlUXVl
dWU6Ok9uU3VibWl0dGVkV29ya0RvbmUoKSwgeyB9KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CisKKyAgICBjYWxsYmFjaygpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6
OndyaXRlQnVmZmVyKApAQCAtNTksMTIgKzc1LDEzIEBAIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6
d3JpdGVCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBkYXRhT2Zmc2V0LAogICAgIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0aCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRhdGFPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNv
bnZlcnRlZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZl
cnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUXVldWU6OldyaXRlQnVmZmVyKGNvbnZlcnRlZEJ1ZmZlciwgYnVm
ZmVyT2Zmc2V0LCBWZWN0b3I8dWludDhfdD4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNv
dXJjZSkgKyBkYXRhT2Zmc2V0LCBzaXplLnZhbHVlX29yKGJ5dGVMZW5ndGggLSBkYXRhT2Zmc2V0
KSkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
UXVldWVQcm94eTo6d3JpdGVUZXh0dXJlKApAQCAtNzQsMTEgKzkxLDE3IEBAIHZvaWQgUmVtb3Rl
UXVldWVQcm94eTo6d3JpdGVUZXh0dXJlKAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZURh
dGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBz
aXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJB
TShkYXRhTGF5b3V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0
ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAg
YXV0byBjb252ZXJ0ZWREYXRhTGF5b3V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyhkYXRhTGF5b3V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkRGF0YUxheW91
dCk7CisgICAgYXV0byBjb252ZXJ0ZWRTaXplID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhzaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkU2l6ZSk7CisgICAg
aWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkRGF0YUxheW91dCB8fCAhY29u
dmVydGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUXVldWU6OldyaXRlVGV4dHVyZSgqY29udmVydGVkRGVzdGluYXRp
b24sIFZlY3Rvcjx1aW50OF90PihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlKSwg
Ynl0ZUxlbmd0aCksICpjb252ZXJ0ZWREYXRhTGF5b3V0LCAqY29udmVydGVkU2l6ZSkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZVByb3h5
Ojpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKQEAgLTg2LDE0ICsxMDksMjMgQEAgdm9pZCBS
ZW1vdGVRdWV1ZVByb3h5Ojpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKICAgICBjb25zdCBQ
QUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgZGVzdGluYXRpb24sCiAgICAgY29u
c3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0o
c291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJB
TShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2UgPSBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHNvdXJjZSk7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChj
b252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWRDb3B5U2l6ZSA9IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoY29weVNpemUpOworICAgIEFT
U0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRTb3VyY2UgfHwgIWNv
bnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRDb3B5U2l6ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVldWU6OkNv
cHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0
aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29u
c3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1ZXVlOjpTZXRMYWJlbChsYWJlbCkp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaAppbmRleCBlNTMwOTQ4
YTViNzQ1MWYzMmRhM2UxMmQ5NWEwNDIxNDJlNDE4ZjJhLi5kODIzMjRkZTE1MjBjYTRjZTIxNGE1
ZGJjNzc2N2M2NTExMTlhOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1v
dGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CkBAIC0zNywxNyArMzgsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAK
IGNsYXNzIFJlbW90ZVF1ZXVlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlF1ZXVl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlUHJveHk+IGNyZWF0ZShDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGlj
IFJlZjxSZW1vdGVRdWV1ZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVRdWV1ZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVF1
ZXVlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBt
X3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQt
PnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVRdWV1ZVByb3h5KENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUXVldWVQcm94eShSZW1vdGVEZXZpY2VQ
cm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAg
ICBSZW1vdGVRdWV1ZVByb3h5KGNvbnN0IFJlbW90ZVF1ZXVlUHJveHkmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVRdWV1ZVByb3h5KFJlbW90ZVF1ZXVlUHJveHkmJikgPSBkZWxldGU7CkBAIC01NSw2
ICs1OSwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVF1ZXVlUHJveHkmIG9wZXJhdG9yPShSZW1v
dGVRdWV1ZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigp
LnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJ
UEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJl
YW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lk
IHN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6Q29tbWFu
ZEJ1ZmZlcj4+JiYpIGZpbmFsOwogCkBAIC04NCw4ICsxMDAsOSBAQCBwcml2YXRlOgogCiAgICAg
RGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJv
eHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuY3BwCmlu
ZGV4IDk3Y2RhMDM3NmJkOWExMTFmMzI1ZWJhNTAwOTNmM2E4N2Y1NWVjOTguLjJiNmQyZDdkOTQx
ZTRmOGJhY2E1MmY1ZDg0ZmM0NDM4YTE3YjIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcApAQCAtMjgsMTMgKzI4LDE2IEBA
CiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6UmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAs
IG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsMzIgKzQ3LDQyIEBAIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXJQcm94eTo6flJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSgpCiAK
IHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZShjb25zdCBQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQogewotICAgIFVOVVNF
RF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGlu
ZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGlw
ZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7CisgICAgaWYgKCFj
b252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6U2V0UGlw
ZWxpbmUoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRJ
bmRleEJ1ZmZlcihjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFBBTDo6V2ViR1BV
OjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhGb3JtYXQpOwotICAgIFVOVVNFRF9Q
QVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYnVm
ZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6U2V0SW5kZXhCdWZmZXIoY29udmVydGVk
QnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6
c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMyIHNsb3QsIGNvbnN0IFBBTDo6V2Vi
R1BVOjpCdWZmZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oc2xv
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7
Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhidWZmZXIpOworICAgIEFT
U0VSVChjb252ZXJ0ZWRCdWZmZXIpOworICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgY29udmVydGVkQnVmZmVy
LCBvZmZzZXQsIHNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3KFBBTDo6V2ViR1BVOjpT
aXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKICAg
ICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGZp
cnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZlcnRleENvdW50KTsKLSAgICBVTlVT
RURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4KTsK
LSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0g
c2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6RHJhdyh2ZXJ0ZXhDb3Vu
dCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5OjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBB
TDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKQEAgLTc3LDMxICs5MCw0MiBAQCB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6
OlNpemUzMiBpbmRleENvdW50LAogICAgIFBBTDo6V2ViR1BVOjpTaWduZWRPZmZzZXQzMiBiYXNl
VmVydGV4LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBV
TlVTRURfUEFSQU0oaW5kZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQp
OwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZl
cnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OkRyYXdJbmRl
eGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZp
cnN0SW5zdGFuY2UpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZv
aWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kaXJlY3QoY29uc3QgUEFM
OjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5k
aXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKLSAgICBV
TlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RC
dWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGluZGly
ZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlm
ICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OkRy
YXdJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZEluZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpC
dWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0
KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpEcmF3SW5kZXhlZElu
ZGlyZWN0KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRpcmVjdE9mZnNldCkpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29u
c3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0
cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3Jv
dXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CisgICAgYXV0byBjb252ZXJ0
ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYgKCFj
b252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlNldEJpbmRHcm91
cChpbmRleCwgY29udmVydGVkQmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0cykpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29uc3Qg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLApAQCAtMTEwLDM3ICsxMzQsNTMgQEAg
dm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6Oldl
YkdQVTo6SW5kZXgzMiBpbmRleCwgY28KICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGR5bmFtaWNP
ZmZzZXRzRGF0YVN0YXJ0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHluYW1pY09mZnNldHNE
YXRhTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXIp
OwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVuZ3RoKTsKLSAg
ICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3RhcnQpOwotICAgIFVOVVNFRF9QQVJB
TShkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOworICAgIGF1dG8gY29udmVydGVkQmluZEdyb3Vw
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhiaW5kR3JvdXAp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlmICghY29udmVydGVkQmlu
ZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRCaW5kR3JvdXAoaW5kZXgsIGNv
bnZlcnRlZEJpbmRHcm91cCwgVmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0
PihkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyICsgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsIGR5
bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3Vs
dCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpwdXNoRGVidWdH
cm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVs
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpQdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eTo6cG9wRGVidWdHcm91cCgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6UG9wRGVidWdHcm91cCgpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJl
bCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6Okluc2VydERlYnVn
TWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZT4gUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5OjpmaW5pc2goY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRs
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3Ip
OwotICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNT
RVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikg
eworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICBy
ZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQor
CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpGaW5pc2goKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpzZXRMYWJl
bEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKaW5kZXggMmEyNGQ4ODZh
MmUyNWZkOGQ2NDRhMWY4OTlhOTY1OTc3N2JmNGQwYi4uMTAwNDVhZTJlYmYyOWU0MWVlOGRlZWI5
MjQ4NGFkMTQxMzg3YTEyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
R1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVu
ZGVyQnVuZGxlRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSBm
aW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlciB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk+IGNyZWF0ZShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
aWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIH5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHkoKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoKTsKKwor
ICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHko
UmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50
aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KGNvbnN0IFJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eShSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkmJikgPSBkZWxl
dGU7CkBAIC01NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSYmKSA9
IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMg
ZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAg
ICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVz
c2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpT
ZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlv
bigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCks
IGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQaXBlbGluZShjb25z
dCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmKSBmaW5hbDsKIApAQCAtODcsOCArMTAzLDkg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJl
ZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAg
ICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5
LmNwcAppbmRleCBmOTI3MzBmY2IwMDdjOTkyZWM1ZmRmOTY5MDRlNjI5YTc2ODM1NGI1Li5hMjUx
YjZkMzE4Yzc3MTM0OGI1YmU4MDA1MTFiMzQ2NDcyNmU0OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OlJlbW90
ZVJlbmRlckJ1bmRsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJCdW5kbGVQcm94eTo6UmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisg
ICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9
CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6On5SZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eSgpCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OnNldExhYmVs
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRs
ZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyQnVuZGxlUHJveHkuaAppbmRleCA5YTA4ZDcwNzEzOGM1MzBmNTc4ZjMzOTEyMWNmZDYx
NjkyZGI1ZmM4Li43YzBkYzVlZTlmNGZkMmQ1NGMxN2MxZDI1NzEwMDc3ZWViYWRiZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJCdW5kbGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBj
bGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVyQnVuZGxl
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlckJ1bmRsZSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVQcm94eT4gY3JlYXRlKENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVm
PFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShwYXJl
bnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiBy
b290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAg
ICBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAg
IFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlckJ1bmRs
ZVByb3h5KGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JikgPSBkZWxldGU7CiAgICAgUmVt
b3RlUmVuZGVyQnVuZGxlUHJveHkoUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkmJikgPSBkZWxldGU7
CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVQcm94
eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAg
V2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9Cisg
ICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVv
dXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCku
c3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBS
ZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cisg
ICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHkuY3BwCmluZGV4IDlkOTMyNjE3ZmUxM2FmNDNhMmY2ODBkMWYxODhmNWFlMTE4
ZmIyZTguLjNlOGY1YTYzZjRhZjEyNDcyYjhmMjNmNThmZGYyZDg3YWJmZDM1MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCkBAIC0y
OCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1v
dGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KFJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAg
OiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAK
QEAgLTQzLDMyICs0Niw0MiBAQCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5Ojp+UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eTo6c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJiByZW5k
ZXJQaXBlbGluZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVuZGVyUGlwZWxpbmUpOworICAgIGF1
dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVkUmVu
ZGVyUGlwZWxpbmUpOworICAgIGlmICghY29udmVydGVkUmVuZGVyUGlwZWxpbmUpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpTZXRQaXBlbGluZShjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5OjpzZXRJbmRleEJ1ZmZlcihjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVy
JiBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpXZWJH
UFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhG
b3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsK
KyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNldElu
ZGV4QnVmZmVyKGNvbnZlcnRlZEJ1ZmZlciwgaW5kZXhGb3JtYXQsIG9mZnNldCwgc2l6ZSkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5OjpzZXRWZXJ0ZXhCdWZmZXIoUEFMOjpXZWJHUFU6OkluZGV4MzIgc2xv
dCwgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0
IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAg
IFVOVVNFRF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVT
RURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252
ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0
ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQo
TWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRWZXJ0ZXhCdWZmZXIoc2xvdCwg
Y29udmVydGVkQnVmZmVyLCBvZmZzZXQsIHNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhdyhQ
QUw6OldlYkdQVTo6U2l6ZTMyIHZlcnRleENvdW50LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGluc3Rh
bmNlQ291bnQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdFZlcnRleCwgUEFMOjpXZWJH
UFU6OlNpemUzMiBmaXJzdEluc3RhbmNlKQogewotICAgIFVOVVNFRF9QQVJBTSh2ZXJ0ZXhDb3Vu
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShm
aXJzdFZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpEcmF3
KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJbnN0YW5jZSkp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4
Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKQEAgLTc2LDMxICs4OSw0
MiBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKFBBTDo6
V2ViR1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUAogICAgIFBBTDo6V2ViR1BVOjpTaWduZWRPZmZz
ZXQzMiBiYXNlVmVydGV4LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3Rh
bmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsKLSAgICBVTlVTRURfUEFS
QU0oYmFzZVZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFuY2UpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpE
cmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdEluZGV4LCBiYXNlVmVy
dGV4LCBmaXJzdEluc3RhbmNlKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRpcmVjdChjb25z
dCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2
NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwot
ICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRp
cmVjdEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
aW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7Cisg
ICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OkRyYXdJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWRJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6
QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNl
dCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJB
TShpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RCdWZmZXIp
OworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkRyYXdJbmRleGVkSW5k
aXJlY3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29uc3Qg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLAogICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykK
IHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3JvdXAp
OwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7CisgICAgYXV0byBjb252ZXJ0ZWRC
aW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJp
bmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYgKCFjb252
ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRCaW5kR3JvdXAoaW5k
ZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgZHluYW1pY09mZnNldHMpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBjb25zdCBQQUw6Oldl
YkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCkBAIC0xMDksOTAgKzEzMywxMjAgQEAgdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6Oklu
ZGV4MzIgaW5kZXgsIGNvbnMKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGR5bmFtaWNPZmZzZXRz
RGF0YVN0YXJ0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZHluYW1pY09mZnNldHNEYXRhTGVu
Z3RoKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpbmRH
cm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXIpOwotICAg
IFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyTGVuZ3RoKTsKLSAgICBVTlVT
RURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3RhcnQpOwotICAgIFVOVVNFRF9QQVJBTShkeW5h
bWljT2Zmc2V0c0RhdGFMZW5ndGgpOworICAgIGF1dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhiaW5kR3JvdXApOworICAg
IEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlmICghY29udmVydGVkQmluZEdyb3Vw
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0QmluZEdyb3VwKGluZGV4LCBjb252ZXJ0ZWRC
aW5kR3JvdXAsIFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVyRHluYW1pY09mZnNldD4oZHluYW1p
Y09mZnNldHNBcnJheUJ1ZmZlciArIGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LCBkeW5hbWljT2Zm
c2V0c0RhdGFMZW5ndGgpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmlu
ZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpQ
dXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnBv
cERlYnVnR3JvdXAoKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyOjpQb3BEZWJ1Z0dyb3VwKCkpOworICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obWFya2VyTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpJbnNlcnREZWJ1Z01hcmtlcihXVEZNb3ZlKG1hcmtl
ckxhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRWaWV3cG9ydChmbG9hdCB4LCBmbG9hdCB5
LAogICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsCiAgICAgZmxvYXQgbWluRGVwdGgsIGZs
b2F0IG1heERlcHRoKQogewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFSQU0o
eSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsK
LSAgICBVTlVTRURfUEFSQU0obWluRGVwdGgpOwotICAgIFVOVVNFRF9QQVJBTShtYXhEZXB0aCk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OlNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQsIG1pbkRlcHRoLCBtYXhEZXB0
aCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTY2lzc29yUmVjdChQQUw6OldlYkdQVTo6SW50ZWdl
ckNvb3JkaW5hdGUgeCwgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHksCiAgICAgUEFM
OjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHdpZHRoLCBQQUw6OldlYkdQVTo6SW50ZWdlckNv
b3JkaW5hdGUgaGVpZ2h0KQogewotICAgIFVOVVNFRF9QQVJBTSh4KTsKLSAgICBVTlVTRURfUEFS
QU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBVTlVTRURfUEFSQU0oaGVpZ2h0
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNz
RW5jb2Rlcjo6U2V0U2Npc3NvclJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5OjpzZXRCbGVuZENvbnN0YW50KFBBTDo6V2ViR1BVOjpDb2xvciBjb2xvcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oY29sb3IpOworICAgIGF1dG8gY29udmVydGVkQ29sb3IgPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvbG9yKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkQ29sb3IpOworICAgIGlmICghY29udmVydGVkQ29sb3IpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyOjpTZXRCbGVuZENvbnN0YW50KCpjb252ZXJ0ZWRDb2xvcikpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5OjpzZXRTdGVuY2lsUmVmZXJlbmNlKFBBTDo6V2ViR1BVOjpTdGVuY2lsVmFsdWUgc3Rl
bmNpbFZhbHVlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGVuY2lsVmFsdWUpOworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRT
dGVuY2lsUmVmZXJlbmNlKHN0ZW5jaWxWYWx1ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpiZWdpbk9j
Y2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVT
RURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkJlZ2luT2NjbHVzaW9uUXVlcnkocXVlcnlJbmRl
eCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRPY2NsdXNpb25RdWVyeSgpCiB7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZE9j
Y2x1c2lvblF1ZXJ5KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVsaW5lU3RhdGlzdGlj
c1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYgcXVlcnlTZXQsIFBBTDo6V2ViR1BV
OjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwotICAg
IFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhxdWVyeVNldCk7Cisg
ICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6QmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShj
b252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQaXBl
bGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5
KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxlcyhWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlPj4mJiByZW5kZXJCdW5kbGVzKQog
ewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCdW5kbGVzKTsKKyAgICBWZWN0b3I8V2ViR1BVSWRl
bnRpZmllcj4gY29udmVydGVkUmVuZGVyQnVuZGxlczsKKyAgICBjb252ZXJ0ZWRSZW5kZXJCdW5k
bGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVyQnVuZGxlcy5zaXplKCkpOworICAgIGZv
ciAoYXV0byByZW5kZXJCdW5kbGUgOiByZW5kZXJCdW5kbGVzKSB7CisgICAgICAgIGF1dG8gY29u
dmVydGVkUmVuZGVyQnVuZGxlID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhyZW5kZXJCdW5kbGUpOworICAgICAgICBBU1NFUlQoY29udmVydGVkUmVuZGVyQnVu
ZGxlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRSZW5kZXJCdW5kbGUpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGNvbnZlcnRlZFJlbmRlckJ1bmRsZXMudW5jaGVja2VkQXBwZW5kKGNv
bnZlcnRlZFJlbmRlckJ1bmRsZSk7CisgICAgfQorCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkV4ZWN1dGVCdW5kbGVzKFdURk1v
dmUoY29udmVydGVkUmVuZGVyQnVuZGxlcykpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJl
c3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kUGFzcygp
CiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXI6OkVuZFBhc3MoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpT
ZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAppbmRleCBmMjA3YjllYTZmNTFiMGU3ZDY4ZTczMGQz
MDgxNjI5MmIxYzM0MzE1Li43NDI3OWQxOTZhNzQ4NzM1ODg3MzBjZTE4ZDExZTFlZWZmN2UyZmZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRl
ICJSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0VuY29k
ZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBB
TDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAg
IH0KIAotICAgIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KCk7CisgICAgdmlydHVhbCB+
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSgpOworCisgICAgUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94
eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsg
fQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCi0gICAgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYpOworICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoUmVtb3RlQ29t
bWFuZEVuY29kZXJQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KGNvbnN0IFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkmJikgPSBkZWxldGU7CkBAIC01
NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkm
IG9wZXJhdG9yPShSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOwogCiAg
ICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9
CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRp
bWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURf
UkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290
KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2lu
ZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0
IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMo
V1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRU
aW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BV
OjpSZW5kZXJQaXBlbGluZSYpIGZpbmFsOwogCkBAIC0xMDQsOCArMTIwLDkgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9C
YWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
LmNwcAppbmRleCA0ODQzMjc5NTQwNjZjYjdlMmZmNjM0OGQ1YTU5MmM4MDNjZDhhYWFkLi4wYWQy
ZjM5ZmVlNjYwNjYwZjliZWVkM2U5ZGE3ZjZkOGVmZmIzZDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmNwcApAQCAtMjksMTIgKzI5LDE1IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlQmluZEdyb3VwTGF5b3V0
UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQaXBlbGluZU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAotUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVtb3RlUmVuZGVyUGlw
ZWxpbmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6
IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApA
QCAtNDQsMTMgKzQ3LDE3IEBAIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6On5SZW1vdGVSZW5k
ZXJQaXBlbGluZVByb3h5KCkKIAogUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+IFJl
bW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OmdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRl
eCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIHJldHVybiBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1
dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGlwZWxpbmU6OkdldEJpbmRH
cm91cExheW91dChpbmRleCwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRl
KG1fcGFyZW50LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQaXBlbGluZTo6U2V0TGFiZWwobGFi
ZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5LmgKaW5kZXggZjkxNDQ4NGJmZjk2MGNmMTRlMjkzMjM2MDI2OTlmYzNiNzlmMmM3Yi4u
MDNjZDRjYzY5NGY1ZjlkYTNhYjIwM2UwNjdiNzA2ZjAxZjQxMjA5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlw
ZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3Mg
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJv
eHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk+IGNyZWF0ZShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJv
eHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0K
IAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoKTsKIAorICAgIFJlbW90
ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQ
VVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisK
IHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Jik7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5KGNvbnN0IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KFJlbW90ZVJlbmRlclBpcGVs
aW5lUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHBy
IFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAg
eworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdU
Rk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25u
ZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6
UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50
Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBi
YWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgUmVmPFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXBMYXlvdXQ+IGdldEJpbmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCkg
ZmluYWw7CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7
CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6Omdl
bmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVm
PFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmNwcAppbmRleCBlMjQw
ODlkNmUzZmRmMTRmZjM4MzJkZmNlMTMxNTlkNjNmMmJhZjdmLi45NTFhMzM5ODZlY2Q4ZmRhNDFl
MjA0Y2MzNDMxZWQ0ZDg1YWZkNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94
eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisj
aW5jbHVkZSAiUmVtb3RlU2FtcGxlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVt
b3RlU2FtcGxlclByb3h5OjpSZW1vdGVTYW1wbGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVNhbXBsZXJQcm94eTo6UmVtb3Rl
U2FtcGxlclByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50
KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVNhbXBsZXJQcm94eTo6flJlbW90ZVNh
bXBsZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlU2FtcGxlclByb3h5OjpzZXRMYWJlbEludGVybmFs
KGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVTYW1wbGVyOjpTZXRMYWJlbChs
YWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmgKaW5k
ZXggMjdkYTQ3MTMxNzkzMjkzZTc2NTk0NGU2ZmZjYmY0ZjhjZjY3NWFjZS4uMWI3MWMwMTgzYTlh
YzI5ZTk5ZjkxZDAyZWUwYTlkNjUxY2M3MTkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxl
clByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlci5oPgogCkBA
IC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNz
IFJlbW90ZVNhbXBsZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2FtcGxlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0ZShDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGlj
IFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVNhbXBsZXJQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVyUHJveHkocGFyZW50LCBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJl
bW90ZVNhbXBsZXJQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsg
cmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBt
X3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVNhbXBsZXJQ
cm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVNhbXBsZXJQcm94eShS
ZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRp
Zmllcik7CiAKICAgICBSZW1vdGVTYW1wbGVyUHJveHkoY29uc3QgUmVtb3RlU2FtcGxlclByb3h5
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlclByb3h5KFJlbW90ZVNhbXBsZXJQcm94eSYm
KSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVNhbXBs
ZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVNhbXBsZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAg
IFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQor
ICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1l
b3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgp
LnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBz
ZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAg
UmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
ICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHkuY3BwCmluZGV4IGUyNzNmMzEzMTVhZTFlNWYzZDQ4ZDhlZmVmZTkyZTNjMWIzNmNjODUuLmEy
YjBhZTE0NzZkMTIxN2E5NzBjMDQ5ODNmNjRiOThjYTNjYzBhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVs
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlU2hhZGVyTW9kdWxlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25JbmZvLmg+CisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KIAog
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OlJl
bW90ZVNoYWRlck1vZHVsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRv
QmFja2luZ0NvbnRleHQpCitSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6UmVtb3RlU2hhZGVyTW9k
dWxlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7
CiB9CiAKQEAgLTQzLDEyICs0OCwyMCBAQCBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6flJlbW90
ZVNoYWRlck1vZHVsZVByb3h5KCkKIAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6Y29t
cGlsYXRpb25JbmZvKFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkNvbXBpbGF0
aW9uSW5mbz4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsK
KyAgICBWZWN0b3I8Q29tcGlsYXRpb25NZXNzYWdlPiBtZXNzYWdlczsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlU2hhZGVyTW9kdWxlOjpDb21waWxhdGlv
bkluZm8oKSwgeyBtZXNzYWdlcyB9KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CisKKyAgICBhdXRvIGJhY2tpbmdNZXNzYWdlcyA9IG1lc3NhZ2VzLm1hcChbXSAoQ29tcGlsYXRp
b25NZXNzYWdlIGNvbXBpbGF0aW9uTWVzc2FnZSkgeworICAgICAgICByZXR1cm4gUEFMOjpXZWJH
UFU6OkNvbXBpbGF0aW9uTWVzc2FnZTo6Y3JlYXRlKFdURk1vdmUoY29tcGlsYXRpb25NZXNzYWdl
Lm1lc3NhZ2UpLCBjb21waWxhdGlvbk1lc3NhZ2UudHlwZSwgY29tcGlsYXRpb25NZXNzYWdlLmxp
bmVOdW0sIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lUG9zLCBjb21waWxhdGlvbk1lc3NhZ2Uub2Zm
c2V0LCBjb21waWxhdGlvbk1lc3NhZ2UubGVuZ3RoKTsKKyAgICB9KTsKKyAgICBjYWxsYmFjayhQ
QUw6OldlYkdQVTo6Q29tcGlsYXRpb25JbmZvOjpjcmVhdGUoV1RGTW92ZShiYWNraW5nTWVzc2Fn
ZXMpKSk7CiB9CiAKIHZvaWQgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OnNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVNoYWRlck1vZHVsZTo6U2V0
TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVy
TW9kdWxlUHJveHkuaAppbmRleCA3NGUwZjE5MzdjYjM4ZmI1ZTAzNWQ0YzdiZWE5OWU5NDE3Zjcx
NzUzLi5mNjFhZDk1NGJjZTM3MWNhYTljMDJjZTllZmI3ODMxMzYxMTBmY2EwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFk
ZXJNb2R1bGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkg
ZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZVNoYWRlck1vZHVsZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdGVTaGFkZXJNb2R1bGVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShwYXJlbnQsIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVTaGFkZXJNb2R1bGVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90
ZVNoYWRlck1vZHVsZVByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5
KGNvbnN0IFJlbW90ZVNoYWRlck1vZHVsZVByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2hh
ZGVyTW9kdWxlUHJveHkoUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkmJikgPSBkZWxldGU7CkBAIC01
NCwxMyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eSYgb3Bl
cmF0b3I9KFJlbW90ZVNoYWRlck1vZHVsZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BV
SWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisg
ICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAz
MF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFt
Q2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdB
Uk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5j
KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGF0aW9uSW5mbyhXVEY6OkZ1bmN0aW9uPHZvaWQoUmVm
PFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQg
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4
dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+
IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwCmluZGV4IGQxZmQzNDI5NWUxZGE4MTE4YWMxNWE1
ODc3MWE4NDg5YzcyMjY1NTEuLjRhZWVkZjc4NmRiN2ZmNmVjMzYwNWE1YTczYTVmMTJjOWE3ZDRl
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcApAQCAtMjgsMTQgKzI4
LDE3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVUZXh0
dXJlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgiCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAot
UmVtb3RlVGV4dHVyZVByb3h5OjpSZW1vdGVUZXh0dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVRleHR1cmVQcm94eTo6UmVt
b3RlVGV4dHVyZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVu
dGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFy
ZW50KQogewogfQogCkBAIC00NSwxNyArNDgsMzIgQEAgUmVtb3RlVGV4dHVyZVByb3h5Ojp+UmVt
b3RlVGV4dHVyZVByb3h5KCkKIAogUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4gUmVtb3Rl
VGV4dHVyZVByb3h5OjpjcmVhdGVWaWV3KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpjcmVhdGUo
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlVmll
d0Rlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7CisgICAgaWYgKGRlc2NyaXB0b3IpIHsK
KyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoKmRlc2NyaXB0b3IpOworICAgICAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxp
bmcuCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlVGV4dHVyZVZpZXdQcm94eTo6Y3JlYXRlKCp0
aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlVGV4dHVyZTo6Q3JlYXRlVmlldygqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRp
ZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBS
ZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVRleHR1cmVQcm94eTo6ZGVzdHJv
eSgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlVGV4dHVy
ZTo6RGVzdHJveSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZv
aWQgUmVtb3RlVGV4dHVyZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFi
ZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVUZXh0dXJlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVRleHR1cmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKaW5kZXggYTM4Y2YzNDNmMzlkZTM1
ODFlNmU0YTkxNjI5ZThhMmNlODk0YTMwNS4uOTQ3ZmViMmE5ZTZmNjNkMTE0NjA0ZTc1MGZmMmY4
YjVkM2JiZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURl
dmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBlcy5oPgogI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgpAQCAtNDAsMTcgKzQxLDIwIEBAIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVUZXh0dXJlUHJveHkgZmlu
YWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlRleHR1cmUgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVtb3RlVGV4dHVyZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVByb3h5
PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlUHJveHko
Y29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UmVtb3RlVGV4dHVyZVByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50
aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlUHJveHkoKTsKIAor
ICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAg
IFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVu
dCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVUZXh0dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmKTsKKyAgICBSZW1vdGVUZXh0dXJlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4
dHVyZVByb3h5KGNvbnN0IFJlbW90ZVRleHR1cmVQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90
ZVRleHR1cmVQcm94eShSZW1vdGVUZXh0dXJlUHJveHkmJikgPSBkZWxldGU7CkBAIC01OCw2ICs2
MiwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVRleHR1cmVQcm94eSYgb3BlcmF0b3I9KFJlbW90
ZVRleHR1cmVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2lu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24o
KS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
SVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgUmVm
PFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4gY3JlYXRlVmlldyhjb25zdCBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+JikgZmluYWw7CiAKQEAgLTY1LDgg
KzgxLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwog
ICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQ
cm94eS5jcHAKaW5kZXggZWUwM2Y1ZWUyMDhmZTA0YTE3MjM1NWQ5MzcwY2U2YTJmZGVjNWViZS4u
NDlhZjg5MmRmNGNjNGExZjU3ZTgxYzBjZjUzZGY4MDU3M2Q0YTE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVZpZXdNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVRleHR1cmVWaWV3UHJveHk6OlJlbW90
ZVRleHR1cmVWaWV3UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKK1JlbW90ZVRleHR1cmVWaWV3UHJveHk6OlJlbW90ZVRleHR1cmVWaWV3UHJv
eHkoUmVtb3RlVGV4dHVyZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQog
CkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVRleHR1cmVWaWV3UHJveHk6On5SZW1vdGVUZXh0dXJl
Vmlld1Byb3h5KCkKIAogdm9pZCBSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVUZXh0dXJlVmlldzo6U2V0
TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJl
Vmlld1Byb3h5LmgKaW5kZXggMTJhNmExOWRmYTQ3NzdlNGI1NDZlMzc2ODkxMTdlZjQ2MDFlMTJh
ZC4uNTdjMWM5OGQ1YzVmZDg2MTZkMzE0MmYzZDI3ZWQ2YmE0MjQ1Njc2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlVGV4dHVyZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVUZXh0dXJlVmlld1Byb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxSZW1vdGVUZXh0dXJlVmlld1Byb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVy
ZVZpZXdQcm94eT4gY3JlYXRlKFJlbW90ZVRleHR1cmVQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVRl
eHR1cmVWaWV3UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShwYXJlbnQsIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3Rl
VGV4dHVyZVZpZXdQcm94eSgpOwogCisgICAgUmVtb3RlVGV4dHVyZVByb3h5JiBwYXJlbnQoKSB7
IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4g
bV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVUZXh0dXJlVmlld1Byb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3Rl
VGV4dHVyZVZpZXdQcm94eShSZW1vdGVUZXh0dXJlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShj
b25zdCBSZW1vdGVUZXh0dXJlVmlld1Byb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eShSZW1vdGVUZXh0dXJlVmlld1Byb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTEg
KzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYgb3BlcmF0b3I9
KFJlbW90ZVRleHR1cmVWaWV3UHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlm
aWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0
aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5k
KFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRD
b25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5k
VGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1l
c3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4g
cm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0K
IAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9C
YWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3Rl
VGV4dHVyZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQuY3BwCmluZGV4IGY4N2ZjZmUzZDRjNTMzYjRiY2UxN2JkZDhiMjk4
MTRmN2U2OTRmYzUuLmQ1Njc2YThiZDY3NDA1NmYzYmVjMmY1NzA5MzFiMDZiYTVmZjM3YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRv
QmFja2luZ0NvbnRleHQuY3BwCkBAIC05OCw2ICs5OCwxMSBAQCBXZWJHUFVJZGVudGlmaWVyIERv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVEZXZpY2VQcm94eSY+KGRl
dmljZSkuYmFja2luZygpOwogfQogCitXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVy
bmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSY+KGV4dGVybmFsVGV4dHVyZSkuYmFja2lu
ZygpOworfQorCiBXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkdQVSYgZ3B1KQogewogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVHUFVQcm94eSY+KGdwdSkuYmFja2luZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oCmluZGV4IGExM2M4ODkwNDY5MjM3YmI2MjljNzI3NWQ1NzBlNTg0Mjc4
M2E4NDguLjQ0NzFkMGVmMDc0OGI2NDVlZWJkNGU5NTBmNWNmNTAwMDUzNjY5NWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIFdlYkdQVUlkZW50aWZpZXIg
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJikg
ZmluYWw7CiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVyIGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZSYpIGZpbmFsOworICAgIFdl
YkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RXh0ZXJu
YWxUZXh0dXJlJikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVyIGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0JikgZmluYWw7
CiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpRdWVyeVNldCYpIGZpbmFsOwo=
</data>
<flag name="commit-queue"
          id="470021"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444906</attachid>
            <date>2021-11-20 13:14:33 -0800</date>
            <delta_ts>2021-11-20 13:47:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233396-20211120131432.patch</filename>
            <type>text/plain</type>
            <size>279740</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUwNTJmYmZhYmY1OTYwZDdi
MDIyNDk5NWI0ZDBjZGIzZWE1ZmY2NjQuLjdjOWY1ZTM4ODNkYmM2YmM0NDYyNzBhYmZjYTU3Njhj
MzVlZmE4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzM5IEBACisyMDIxLTExLTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU2Vu
ZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGhvb2tzIHVwIG91ciBSZW1vdGUqKipQ
cm94eSgpIFdlYkdQVSBpbXBsZW1lbnRhdGlvbiB0byB0aGUgc2VyaWFsaXphYmxlIHN0cnVjdHMu
CisgICAgICAgIFRoZXJlIGFyZSAyIHBpZWNlczogYWRkaW5nIGNvbnZlcnRlciBmdW5jdGlvbnMg
ZnJvbSBQQUw6OldlYkdQVTo6WCB0byBXZWJLaXQ6OldlYkdQVTo6WAorICAgICAgICBzdHJ1Y3Rz
ICh3aGljaCBhcmUgc2VyaWFsaXphYmxlKSBhbmQgYWN0dWFsbHkgY2FsbGluZyB0aGUgc2VuZCgp
IGZ1bmN0aW9uIGl0c2VsZi4KKyAgICAgICAgQmVjYXVzZSBzdHJlYW1pbmcgSVBDIGRvZXNuJ3Qg
c3VwcG9ydCBhc3luYyByZXBsaWVzIHlldCwgYWxsIHRoZSBhc3luYyBjYWxscyBhcmUgY3VycmVu
dGx5CisgICAgICAgIHN5bmMgaW4gdGhpcyBwYXRjaC4gSSdsbCBiZSBhZGRpbmcgc3VwcG9ydCBm
b3IgYXN5bmMgc3RyZWFtaW5nIG1lc3NhZ2VzIGluIGEgc3Vic2VxdWVudAorICAgICAgICBwYXRj
aCwgd2hpY2ggd2lsbCBtaWdyYXRlIGNhbGxlcnMgdG8gdXNlIHNlbmRBc3luYygpIGluc3RlYWQg
b2Ygc2VuZFN5bmMoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UgeWV0LiBUaGlzIGlzIHRoZSBsYXN0IHVudGVzdGVkIGZvdW5kYXRp
b25hbAorICAgICAgICBwYXRjaCBpbiB0aGUgc2VyaWVzLiBBbGwgc3Vic2VxdWVudCBXZWJHUFUg
cGF0Y2hlcyBzaG91bGQgaGF2ZSB0ZXN0cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUdQVS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdQVTo6cmVx
dWVzdEFkYXB0ZXIpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJp
bmRHcm91cEVudHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRp
bmcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZl
ckJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BV
L1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFu
ZEVuY29kZXJEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aDoKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlw
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50
M0QuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVy
bmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQ
VS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29w
eVRleHR1cmVUYWdnZWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BV
L1dlYkdQVUltYWdlRGF0YUxheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0RGVzY3JpcHRvckJhc2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVE
ZXNjcmlwdG9yQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgor
ICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BV
UXVlcnlTZXREZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c0NvbG9yQXR0YWNobWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRl
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9k
dWxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGlt
aXRzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0
aW9uRXJyb3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQ
VVZlcnRleEF0dHJpYnV0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVVmVydGV4QnVmZmVyTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hl
bWU6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQWRhcHRlclByb3h5
OjpSZW1vdGVBZGFwdGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUFk
YXB0ZXJQcm94eTo6cmVxdWVzdERldmljZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OlJlbW90ZUJp
bmRHcm91cExheW91dFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5kR3JvdXBQcm94eTo6UmVt
b3RlQmluZEdyb3VwUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJpbmRH
cm91cFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZmZXJQcm94eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6Om1hcEFzeW5jKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFwcGVkUmFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmRlc3Ryb3kpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVybmFs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVy
UHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
Q29tbWFuZEJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVybmFs
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFu
ZEJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmJlZ2lu
UmVuZGVyUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eTo6YmVnaW5Db21wdXRlUGFzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZlclRvQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9UZXh0
dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cHVzaERlYnVn
R3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJv
eHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojp3cml0ZVRpbWVzdGFtcCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6cmVzb2x2ZVF1ZXJ5
U2V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
OjpmaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNo
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6ZGlzcGF0Y2hJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQ
aXBlbGluZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVi
dWdHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVsSW50
ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OlJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGlwZWxp
bmVQcm94eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmlj
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6
UmVtb3RlRGV2aWNlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmlj
ZVByb3h5OjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVEZXZpY2VQcm94eTo6Y3JlYXRlU2FtcGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFsVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJpbmRHcm91cExheW91dCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVBpcGVsaW5l
TGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3Jl
YXRlQmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94
eTo6Y3JlYXRlU2hhZGVyTW9kdWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVE
ZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyUGlwZWxpbmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxpbmVB
c3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0
ZVJlbmRlclBpcGVsaW5lQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVDb21tYW5kRW5jb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVRdWVyeVNldCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnB1c2hFcnJvclNjb3Bl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6cG9wRXJyb3JT
Y29wZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnNldExh
YmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVEZXZpY2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OlJlbW90ZUV4dGVybmFsVGV4dHVyZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUdQVVByb3h5OjpyZXF1ZXN0QWRhcHRlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHk6OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5
U2V0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXJ5U2V0UHJv
eHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVF1ZXJ5U2V0UHJveHk6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVF1ZXJ5U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OnN1Ym1pdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6b25TdWJtaXR0ZWRXb3JrRG9u
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6d3JpdGVCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OndyaXRlVGV4
dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUXVldWVQcm94eTo6Y29weUV4
dGVybmFsSW1hZ2VUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1
ZXVlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0SW5kZXhC
dWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29k
ZXJQcm94eTo6c2V0VmVydGV4QnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1v
dGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJhd0lu
ZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnB1c2hEZWJ1
Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OnBvcERlYnVnR3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZmluaXNoKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZVByb3h5OjpSZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0SW5kZXhCdWZm
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhdyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRpcmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJh
d0luZGV4ZWRJbmRpcmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6cG9wRGVidWdH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQ
cm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTY2lzc29yUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0
QmxlbmRDb25zdGFudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6c2V0U3RlbmNpbFJlZmVyZW5jZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6YmVnaW5PY2NsdXNpb25RdWVyeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
ZW5kT2NjbHVzaW9uUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxlcyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZW5kUGFzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRl
cm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eTo6Z2V0QmluZEdyb3VwTGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJQaXBlbGluZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNhbXBsZXJQcm94eTo6UmVtb3Rl
U2FtcGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVTYW1wbGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpSZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6
OmNvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2hhZGVy
TW9kdWxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVyZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0
ZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6ZGVz
dHJveSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlVGV4dHVyZVByb3h5OjpzZXRM
YWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlVGV4dHVyZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OlJlbW90ZVRleHR1cmVWaWV3UHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVWaWV3UHJveHk6OnNldExhYmVsSW50
ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlld1Byb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkRvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6CisKIDIwMjEtMTEtMjAgIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlcG9ydCB0
aGUgaW5pdGlhdGluZyB1cmwgaW5zdGVhZCBvZiB0aGUgcmVkaXJlY3RlZCBvbmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNw
cAppbmRleCAzODJmOGUzNmRmZjNjODg4MDc5YTZkNGJmYmVmMjUzNGNhMmM1YWZhLi5kNzJlZWU5
YTg1NzQ2MGZiN2E1YmQ3MTU5MjI0OTljOWU0YjJjODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCkBAIC01MCwx
MiArNTAsMTIgQEAgUmVtb3RlR1BVOjp+UmVtb3RlR1BVKCkKICAgICBtX29iamVjdFJlZ2lzdHJ5
LnJlbW92ZU9iamVjdChtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUdQVTo6cmVxdWVz
dEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdl
YkdQVUlkZW50aWZpZXIgaWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmLCBXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiYsIFdlYkdQVTo6U3VwcG9ydGVkTGlt
aXRzJiYpPiYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RBZGFwdGVyKGNvbnN0
IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BV
OjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBib29sKT4m
JiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGNvbnZlcnRlZE9wdGlvbnMgPSBtX29iamVjdFJlZ2lz
dHJ5LmNvbnZlcnRGcm9tQmFja2luZyhvcHRpb25zKTsKICAgICBBU1NFUlQoY29udmVydGVkT3B0
aW9ucyk7CiAgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKSB7Ci0gICAgICAgIGNhbGxiYWNrKFN0
cmluZ0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSk7CisgICAgICAgIGNhbGxiYWNrKFN0cmlu
Z0ltcGw6OmVtcHR5KCksIHsgeyB9IH0sIHsgfSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihj
b25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViCiAgICAgICAg
ICAgICBsaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCiAgICAgICAgICAgICBsaW1p
dHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaKCksCiAgICAgICAgICAgICBsaW1pdHMubWF4Q29t
cHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24oKSwKLSAgICAgICAgfSk7CisgICAgICAgIH0sIGFk
YXB0ZXItPmlzRmFsbGJhY2tBZGFwdGVyKCkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAppbmRleCBm
MDllOTI1MDQyYjFmMjg3N2RkN2ZhODQyMDk4YWZmOTgxYzVhYjU3Li43NTg1NTQzMzQ1NjBjMTIz
YzNlMWZmYjlhODQxOTc4NGViYWZkMDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVN0cmVhbU1lc3NhZ2UoSVBDOjpTdHJlYW1TZXJ2
ZXJDb25uZWN0aW9uQmFzZSYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCByZXF1
ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYsIFdlYkdQVUlk
ZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwgV2ViR1BVOjpT
dXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmKT4mJik7CisgICAg
dm9pZCByZXF1ZXN0QWRhcHRlcihjb25zdCBXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYs
IFdlYkdQVUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJiwg
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYmLCBi
b29sKT4mJik7CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkdQVT4gbV9iYWNraW5nOwogICAgIFdl
YkdQVTo6T2JqZWN0UmVnaXN0cnkmIG1fb2JqZWN0UmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1l
c3NhZ2VzLmluCmluZGV4IDQ3MDkxMGI5MjM1ZjQxMTUzYTYwZTY0MGM4NzM4NDE0ZDMyYzM5ZGYu
LmU0ZDk1MjY1YWE1ZDAwMzg5NGFjODA2MjkxNDAwMGEyNGNiNTNlMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
R1BVLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiBtZXNzYWdlcyAtPiBSZW1vdGVHUFUgTm90UmVmQ291bnRlZCBTdHJlYW0gewotICAgIHZv
aWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyBv
cHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikgLT4gKFN0cmluZyBu
YW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVhdHVyZXMs
IFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzKSBTeW5jaHJv
bm91cworICAgIHZvaWQgUmVxdWVzdEFkYXB0ZXIoV2ViS2l0OjpXZWJHUFU6OlJlcXVlc3RBZGFw
dGVyT3B0aW9ucyBvcHRpb25zLCBXZWJLaXQ6OldlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikg
LT4gKFN0cmluZyBuYW1lLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9y
dGVkRmVhdHVyZXMsIFdlYktpdDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGlt
aXRzLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyKSBTeW5jaHJvbm91cwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBE
ZXNjcmlwdG9yLmNwcAppbmRleCBlMjY2YmQxYjczNzliMDRkNTJkYjBjZDFiOTQwNjliZTFhOTRm
ZWU5Li5jMmVhYzIyNjMxZmE4Y2EwOTQ0ZTk1ZGNlM2NlYWIyZjcxNGVjMmFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3JpcHRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2Ny
aXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBEZXNjcmlwdG9yPiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdy
b3VwRGVzY3JpcHRvciYgYmluZEdyb3VwRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBj
b252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNj
cmlwdG9yQmFzZSY+KGJpbmRHcm91cERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252ZXJ0
VG9CYWNraW5nKGJpbmRHcm91cERlc2NyaXB0b3IubGF5b3V0KTsKKyAgICBpZiAoIWlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8QmluZEdyb3Vw
RW50cnk+IGVudHJpZXM7CisgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJpbmRH
cm91cERlc2NyaXB0b3IuZW50cmllcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50
cnkgOiBiaW5kR3JvdXBEZXNjcmlwdG9yLmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0
ZWRFbnRyeSA9IGNvbnZlcnRUb0JhY2tpbmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZlcnRl
ZEVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50cmll
cy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBpZGVudGlmaWVyLCBXVEZNb3ZlKGVudHJpZXMp
IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRv
cj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJp
bmRHcm91cERlc2NyaXB0b3ImIGJpbmRHcm91cERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNl
ID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JC
YXNlJj4oYmluZEdyb3VwRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5jcHAKaW5kZXggZDgzMmRkMDU3YjU1OGE5
YjkwMThkMDc2Yzc5MjM0ODYyMjg5N2M0ZC4uMzMyMGZlNWQzZTk2MTZiZTBkMzhhNDI1MjBiMjc3
MDM4Y2MyOGMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cEVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwRW50cnkuY3BwCkBAIC0yOSwxMCArMjksNDAgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cEVudHJ5Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXBFbnRyeSYgYmluZEdyb3VwRW50cnkpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
YmluZEdyb3VwRW50cnkucmVzb3VyY2UsIFsmXSAoc3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6
OldlYkdQVTo6U2FtcGxlcj4gc2FtcGxlcikgLT4gc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRy
eT4geworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBjb252ZXJ0VG9CYWNraW5nKHNhbXBsZXIp
OworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgeyB9LCBp
ZGVudGlmaWVyLCBCaW5kaW5nUmVzb3VyY2VUeXBlOjpTYW1wbGVyIH0gfTsKKyAgICB9LCBbJl0g
KHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiB0ZXh0dXJl
VmlldykgLT4gc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjb252ZXJ0VG9CYWNraW5nKHRleHR1cmVWaWV3KTsKKyAgICAgICAgaWYgKCFp
ZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBy
ZXR1cm4geyB7IGJpbmRHcm91cEVudHJ5LmJpbmRpbmcsIHsgfSwgaWRlbnRpZmllciwgQmluZGlu
Z1Jlc291cmNlVHlwZTo6VGV4dHVyZVZpZXcgfSB9OworICAgIH0sIFsmXSAoY29uc3QgYXV0byYg
YnVmZmVyQmluZGluZykgLT4gc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBFbnRyeT4geworICAgICAg
ICBhdXRvIGNvbnZlcnRlZEJ1ZmZlckJpbmRpbmcgPSBjb252ZXJ0VG9CYWNraW5nKGJ1ZmZlckJp
bmRpbmcpOworICAgICAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlckJpbmRpbmcpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7IHsgYmluZEdyb3VwRW50
cnkuYmluZGluZywgV1RGTW92ZSgqY29udmVydGVkQnVmZmVyQmluZGluZyksIHsgfSwgQmluZGlu
Z1Jlc291cmNlVHlwZTo6VGV4dHVyZVZpZXcgfSB9OworICAgIH0sIFsmXSAoc3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBleHRlcm5hbFRleHR1cmUp
IC0+IHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IHsKKyAgICAgICAgYXV0byBpZGVudGlm
aWVyID0gY29udmVydFRvQmFja2luZyhleHRlcm5hbFRleHR1cmUpOworICAgICAgICBpZiAoIWlk
ZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJl
dHVybiB7IHsgYmluZEdyb3VwRW50cnkuYmluZGluZywgeyB9LCBpZGVudGlmaWVyLCBCaW5kaW5n
UmVzb3VyY2VUeXBlOjpFeHRlcm5hbFRleHR1cmUgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBFbnRyeT4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cEVudHJ5JiBiaW5kR3JvdXBF
bnRyeSkKIHsKICAgICBzd2l0Y2ggKGJpbmRHcm91cEVudHJ5LnR5cGUpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yLmNwcAppbmRleCA5MDY0ODRlOWQyYzBjYjNkZWQ0MmZhMmQwZjFlZjhlOTU4
MDIyOTQ3Li44MWNkOWE4YzRlNTYwMGIxMzdlOTM4NzRhNzAzNzJhZGI2MmIwMjU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVz
Y3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRH
cm91cExheW91dERlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjkgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2NyaXB0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBM
YXlvdXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYgYmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0
YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGJpbmRH
cm91cExheW91dERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8QmluZEdyb3VwTGF5b3V0RW50cnk+IGVudHJpZXM7
CisgICAgZW50cmllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IuZW50cmllcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBiaW5k
R3JvdXBMYXlvdXREZXNjcmlwdG9yLmVudHJpZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRF
bnRyeSA9IGNvbnZlcnRUb0JhY2tpbmcoZW50cnkpOworICAgICAgICBpZiAoIWNvbnZlcnRlZEVu
dHJ5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZW50cmllcy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVydGVkRW50cnkpKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKGVudHJpZXMpIH0gfTsKK30KKwogc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcj4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRHcm91cExh
eW91dERlc2NyaXB0b3ImIGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBi
YXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0
b3JCYXNlJj4oYmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHAK
aW5kZXggODc1NzEyNjEzMTllNTc3ZDdmOTMxMDFlZDhiMGUxYzMzOWJiNzZmYy4uODQ2YzllNTI0
YmM1ZDgyZGMyMzlkODZiYjkxM2UzOGU3YzgzZDBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuY3BwCkBA
IC0yOSwxMCArMjksNTEgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cExheW91dEVudHJ5Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwTGF5b3V0RW50cnk+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRF
bnRyeSYgYmluZEdyb3VwTGF5b3V0RW50cnkpCit7CisgICAgc3RkOjpvcHRpb25hbDxCdWZmZXJC
aW5kaW5nTGF5b3V0PiBidWZmZXI7CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LmJ1ZmZl
cikgeworICAgICAgICBidWZmZXIgPSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlvdXRF
bnRyeS5idWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xh
eW91dD4gc2FtcGxlcjsKKyAgICBpZiAoYmluZEdyb3VwTGF5b3V0RW50cnkuc2FtcGxlcikgewor
ICAgICAgICBzYW1wbGVyID0gY29udmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnku
c2FtcGxlcik7CisgICAgICAgIGlmICghc2FtcGxlcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJlQmluZGluZ0xheW91
dD4gdGV4dHVyZTsKKyAgICBpZiAoYmluZEdyb3VwTGF5b3V0RW50cnkudGV4dHVyZSkgeworICAg
ICAgICB0ZXh0dXJlID0gY29udmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50cnkudGV4
dHVyZSk7CisgICAgICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlVGV4dHVyZUJpbmRpbmdM
YXlvdXQ+IHN0b3JhZ2VUZXh0dXJlOworICAgIGlmIChiaW5kR3JvdXBMYXlvdXRFbnRyeS5zdG9y
YWdlVGV4dHVyZSkgeworICAgICAgICBzdG9yYWdlVGV4dHVyZSA9IGNvbnZlcnRUb0JhY2tpbmco
KmJpbmRHcm91cExheW91dEVudHJ5LnN0b3JhZ2VUZXh0dXJlKTsKKyAgICAgICAgaWYgKCFzdG9y
YWdlVGV4dHVyZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0PiBleHRlcm5hbFRl
eHR1cmU7CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LmV4dGVybmFsVGV4dHVyZSkgewor
ICAgICAgICBleHRlcm5hbFRleHR1cmUgPSBjb252ZXJ0VG9CYWNraW5nKCpiaW5kR3JvdXBMYXlv
dXRFbnRyeS5leHRlcm5hbFRleHR1cmUpOworICAgICAgICBpZiAoIWV4dGVybmFsVGV4dHVyZSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsg
eyBiaW5kR3JvdXBMYXlvdXRFbnRyeS5iaW5kaW5nLCBiaW5kR3JvdXBMYXlvdXRFbnRyeS52aXNp
YmlsaXR5LCBXVEZNb3ZlKGJ1ZmZlciksIFdURk1vdmUoc2FtcGxlciksIFdURk1vdmUodGV4dHVy
ZSksIFdURk1vdmUoc3RvcmFnZVRleHR1cmUpLCBXVEZNb3ZlKGV4dGVybmFsVGV4dHVyZSkgfSB9
OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXRFbnRyeT4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJpbmRH
cm91cExheW91dEVudHJ5JiBiaW5kR3JvdXBMYXlvdXRFbnRyeSkKIHsKICAgICBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpCdWZmZXJCaW5kaW5nTGF5b3V0PiBidWZmZXI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcAppbmRl
eCBjZTc2YjBiZmQwZTRmZTJjMzYxYjUyMDVkYTgwZmU5ZmE3YmEzNTZmLi4xNDA4MzFkODM1YmY1
ZmJjMzlkMzdlZTA0MDU2YmI0Nzc1MWE4YWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBvbmVudC5jcHAKQEAgLTI5LDEwICsyOSwxNiBA
QAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQu
aD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCbGVuZENv
bXBvbmVudD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkJsZW5kQ29tcG9uZW50JiBibGVuZENvbXBvbmVudCkKK3sKKyAgICByZXR1
cm4geyB7IGJsZW5kQ29tcG9uZW50Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3JjRmFjdG9y
LCBibGVuZENvbXBvbmVudC5kc3RGYWN0b3IgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpCbGVuZENvbXBvbmVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IEJsZW5kQ29tcG9uZW50JiBibGVuZENvbXBvbmVudCkKIHsKICAg
ICByZXR1cm4geyB7IGJsZW5kQ29tcG9uZW50Lm9wZXJhdGlvbiwgYmxlbmRDb21wb25lbnQuc3Jj
RmFjdG9yLCBibGVuZENvbXBvbmVudC5kc3RGYWN0b3IgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuY3BwCmluZGV4IGJiNGQyZTc5YTQ4ZTI4
N2E2ODc0MmUyMzE5MGFkNzZhNjcyMzkxN2MuLjlmZWExNzczNjc3M2ZlMmUwYmE0ZmRkODk1YTlh
YTgxYjI3YTNjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVCbGVuZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
QmxlbmRTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQmxlbmRTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCitzdGQ6Om9wdGlvbmFsPEJsZW5kU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCbGVuZFN0YXRlJiBibGVuZFN0
YXRlKQoreworICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9CYWNraW5nKGJsZW5kU3RhdGUuY29s
b3IpOworICAgIGlmICghY29sb3IpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIGFscGhhID0gY29udmVydFRvQmFja2luZyhibGVuZFN0YXRlLmFscGhhKTsKKyAgICBp
ZiAoIWFscGhhKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKCpjb2xvciksIFdURk1vdmUoKmFscGhhKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OkJsZW5kU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBCbGVuZFN0YXRlJiBibGVuZFN0YXRlKQogewogICAgIGF1
dG8gY29sb3IgPSBjb252ZXJ0RnJvbUJhY2tpbmcoYmxlbmRTdGF0ZS5jb2xvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKaW5k
ZXggZWZiYzlkOTRhOGJiZTEzODEyN2E2ZWM2ZTU5ZDUzYWE3ZGEwNWFmZC4uMzE4NmU1ZWFmOTE2
YWQ0ZWRiZTBmZTdlMzAzZWViZDk5YTdjNTNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmNwcApAQCAtMjksMTAgKzI5LDIwIEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVmZmVyQmlu
ZGluZz4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OkJ1ZmZlckJpbmRpbmcmIGJ1ZmZlckJpbmRpbmcpCit7CisgICAgYXV0byBidWZm
ZXIgPSBjb252ZXJ0VG9CYWNraW5nKGJ1ZmZlckJpbmRpbmcuYnVmZmVyKTsKKyAgICBpZiAoIWJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgYnVm
ZmVyLCBidWZmZXJCaW5kaW5nLm9mZnNldCwgYnVmZmVyQmluZGluZy5zaXplIH0gfTsKK30KKwog
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZz4gQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJ1ZmZlckJpbmRpbmcmIGJ1ZmZl
ckJpbmRpbmcpCiB7CiAgICAgYXV0byogYnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5n
KGJ1ZmZlckJpbmRpbmcuYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0LmNwcAppbmRleCA4NjhjMzQ3YTZh
OTk0MTAxNmY4MTVjNjgwNjZiYTkwZjQ4YWFlM2ZiLi42NDY5ODZhNzc5NWRhNjFhMDk3NDc4NDFl
YTIyMmVmOGExYjc1MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQnVmZmVyQmluZGluZ0xheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmdMYXlv
dXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxCdWZm
ZXJCaW5kaW5nTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZ0xheW91dCYgYnVmZmVyQmluZGluZ0xh
eW91dCkKK3sKKyAgICByZXR1cm4geyB7IGJ1ZmZlckJpbmRpbmdMYXlvdXQudHlwZSwgYnVmZmVy
QmluZGluZ0xheW91dC5oYXNEeW5hbWljT2Zmc2V0LCBidWZmZXJCaW5kaW5nTGF5b3V0Lm1pbkJp
bmRpbmdTaXplIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyQmlu
ZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5n
KGNvbnN0IEJ1ZmZlckJpbmRpbmdMYXlvdXQmIGJ1ZmZlckJpbmRpbmdMYXlvdXQpCiB7CiAgICAg
cmV0dXJuIHsgeyBidWZmZXJCaW5kaW5nTGF5b3V0LnR5cGUsIGJ1ZmZlckJpbmRpbmdMYXlvdXQu
aGFzRHluYW1pY09mZnNldCwgYnVmZmVyQmluZGluZ0xheW91dC5taW5CaW5kaW5nU2l6ZSB9IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVz
Y3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVz
Y3JpcHRvci5jcHAKaW5kZXggNzQ1NjY2YWE5ODlkNjNiYjE5OGNmYWIxMTlhODFiOGJhMjhiODJl
OS4uMDBmNmM3ZDc2YWU3ZTg1OTJhNTQ3NTYyY2Y0MTgxMGE5NzcyZmQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2NyaXB0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmNw
cApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8QnVmZmVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGJ1
ZmZlckRlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihidWZmZXJE
ZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgYnVmZmVyRGVzY3JpcHRvci5zaXpl
LCBidWZmZXJEZXNjcmlwdG9yLnVzYWdlLCBidWZmZXJEZXNjcmlwdG9yLm1hcHBlZEF0Q3JlYXRp
b24gfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9y
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQnVm
ZmVyRGVzY3JpcHRvciYgYnVmZmVyRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252
ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihi
dWZmZXJEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggZTY2NjdkYWM0NTZkZjcy
ZmViZDAyY2RlYmMwMTMzMTFiNmZhMWFlNS4uNDgxMzI1MjI2ZGY2OGM5M2E5MTgyN2MyMjNmZTA4
ZmZjNGI4NTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmNwcApAQCAtMjksMTAgKzI5LDI3IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q2FudmFzQ29u
ZmlndXJhdGlvbj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkNhbnZhc0NvbmZpZ3VyYXRpb24mIGNhbnZhc0NvbmZpZ3VyYXRpb24p
Cit7CisgICAgYXV0byBkZXZpY2UgPSBjb252ZXJ0VG9CYWNraW5nKGNhbnZhc0NvbmZpZ3VyYXRp
b24uZGV2aWNlKTsKKyAgICBpZiAoIWRldmljZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RXh0ZW50M0Q+IHNpemU7CisgICAgaWYgKGNhbnZhc0Nv
bmZpZ3VyYXRpb24uc2l6ZSkgeworICAgICAgICBzaXplID0gY29udmVydFRvQmFja2luZygqY2Fu
dmFzQ29uZmlndXJhdGlvbi5zaXplKTsKKyAgICAgICAgaWYgKCFzaXplKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IGRldmljZSwgY2Fu
dmFzQ29uZmlndXJhdGlvbi5mb3JtYXQsIGNhbnZhc0NvbmZpZ3VyYXRpb24udXNhZ2UsIGNhbnZh
c0NvbmZpZ3VyYXRpb24uY29sb3JTcGFjZSwgY2FudmFzQ29uZmlndXJhdGlvbi5jb21wb3NpdGlu
Z0FscGhhTW9kZSwgV1RGTW92ZShzaXplKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OkNhbnZhc0NvbmZpZ3VyYXRpb24+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBDYW52YXNDb25maWd1cmF0aW9uJiBjYW52YXNDb25maWd1
cmF0aW9uKQogewogICAgIGF1dG8qIGRldmljZSA9IGNvbnZlcnREZXZpY2VGcm9tQmFja2luZyhj
YW52YXNDb25maWd1cmF0aW9uLmRldmljZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUNvbG9yLmNwcAppbmRleCBiMWE3MTE5NzhhY2ZlMzUxYmRiYzI4NDFkM2U4M2VmMDNi
NzNmZjlhLi4yNzRkNzgyYzg0MDhkYzA1NTE5ZGM5NjUwMWU2NjU4ZmRmNWFkZGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvci5jcHAKQEAgLTI5LDEwICsyOSwy
OCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29sb3IuaD4KIAog
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb2xvckRpY3Q+IENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpDb2xvckRpY3QmIGNvbG9yRGljdCkKK3sKKyAgICByZXR1cm4geyB7IGNvbG9yRGljdC5yLCBj
b2xvckRpY3QuZywgY29sb3JEaWN0LmIsIGNvbG9yRGljdC5hIH0gfTsKK30KKworc3RkOjpvcHRp
b25hbDxDb2xvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihjb2xvciwgW10gKGNvbnN0IFZlY3Rvcjxkb3VibGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9u
YWw8Q29sb3I+IHsKKyAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0aGlz
XSAoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9wdGlv
bmFsPENvbG9yPiB7CisgICAgICAgIGF1dG8gY29sb3IgPSBjb252ZXJ0VG9CYWNraW5nKGNvbG9y
RGljdCk7CisgICAgICAgIGlmICghY29sb3IpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKmNvbG9yKSB9IH07CisgICAgfSk7Cit9
CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbG9yRGljdD4gQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0
KQogewogICAgIHJldHVybiB7IHsgY29sb3JEaWN0LnIsIGNvbG9yRGljdC5nLCBjb2xvckRpY3Qu
YiwgY29sb3JEaWN0LmEgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuY3BwCmluZGV4IGYzOWNmYmMxZGIwOGVmNzcwZDg0
Y2U1MmJlYWMxYTAyM2RhM2ZmNWIuLjNlZTE4MTNkMTE5NjUwYjg3NjExOThkYzg3ZDgyMWFiMzk4
NjVhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xv
clRhcmdldFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29sb3JUYXJnZXRTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwyMyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0U3RhdGU+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpD
b2xvclRhcmdldFN0YXRlJiBjb2xvclRhcmdldFN0YXRlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
QmxlbmRTdGF0ZT4gYmxlbmQ7CisgICAgaWYgKGNvbG9yVGFyZ2V0U3RhdGUuYmxlbmQpIHsKKyAg
ICAgICAgYmxlbmQgPSBjb252ZXJ0VG9CYWNraW5nKCpjb2xvclRhcmdldFN0YXRlLmJsZW5kKTsK
KyAgICAgICAgaWYgKCFibGVuZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIHsgeyBjb2xvclRhcmdldFN0YXRlLmZvcm1hdCwgV1RGTW92ZShi
bGVuZCksIGNvbG9yVGFyZ2V0U3RhdGUud3JpdGVNYXNrIH0gfTsKK30KKwogc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6Q29sb3JUYXJnZXRTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENvbG9yVGFyZ2V0U3RhdGUmIGNvbG9yVGFyZ2V0
U3RhdGUpCiB7CiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZT4gYmxl
bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yLmNwcAppbmRleCA0MmI5OThlZGRlM2U0YWJjYzk4YTBl
NzIxNGVkMmNkZTAxZWM4YjRmLi5hYjg5ZjVhNjZkMGJmMjViZTY0MThkYjAxMjUwMTkyMGFkOTQw
NDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVDb21tYW5kQnVmZmVyRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21t
YW5kQnVmZmVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBjb21tYW5k
QnVmZmVyRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0
YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1h
bmRCdWZmZXJEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPiBDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tbWFuZEJ1ZmZl
ckRlc2NyaXB0b3ImIGNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9
IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFz
ZSY+KGNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3Bw
CmluZGV4IDA5MjRkNDE3YTUyMTFkMjk4MGFlZTI3NTA5YmU2YjVmNTJjODQyNDcuLjIyMTg3Njkz
OTgwZjE3YThiMWE2YTdlOTRmYmM0OGRmNWM1ZDFmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0
b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4gQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKQorewor
ICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpX
ZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4oY29tbWFuZEVuY29kZXJEZXNjcmlwdG9yKSk7
CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYgY29tbWFu
ZEVuY29kZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2lu
ZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRFbmNvZGVy
RGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbXBpbGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmNwcAppbmRleCBjODRkODhlOTFjNDg2OTM4ZGRkZDRk
ZTg1YWY4YTE0YzRiYjU2MDU5Li44YjA3YWI5ZDgwZWNhNDljZDFjMTcxNWE1NjVjOGI4MzljMjRi
OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcGls
YXRpb25NZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29tcGlsYXRpb25NZXNzYWdlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21waWxhdGlvbk1lc3NhZ2UuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21waWxhdGlvbk1lc3NhZ2U+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpDb21waWxhdGlvbk1lc3NhZ2UmIGNvbXBpbGF0aW9uTWVzc2FnZSkKK3sKKyAgICByZXR1
cm4geyB7IGNvbXBpbGF0aW9uTWVzc2FnZS5tZXNzYWdlKCksIGNvbXBpbGF0aW9uTWVzc2FnZS50
eXBlKCksIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lTnVtKCksIGNvbXBpbGF0aW9uTWVzc2FnZS5s
aW5lUG9zKCksIGNvbXBpbGF0aW9uTWVzc2FnZS5vZmZzZXQoKSwgY29tcGlsYXRpb25NZXNzYWdl
Lmxlbmd0aCgpIH0gfTsKK30KKwogUmVmUHRyPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3Nh
Z2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBD
b21waWxhdGlvbk1lc3NhZ2UmIGNvbXBpbGF0aW9uTWVzc2FnZSkKIHsKICAgICByZXR1cm4gUEFM
OjpXZWJHUFU6OkNvbXBpbGF0aW9uTWVzc2FnZTo6Y3JlYXRlKGNvbXBpbGF0aW9uTWVzc2FnZS5t
ZXNzYWdlLCBjb21waWxhdGlvbk1lc3NhZ2UudHlwZSwgY29tcGlsYXRpb25NZXNzYWdlLmxpbmVO
dW0sIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lUG9zLCBjb21waWxhdGlvbk1lc3NhZ2Uub2Zmc2V0
LCBjb21waWxhdGlvbk1lc3NhZ2UubGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXgg
MTkyOWRiNWY0NDE3ODFiMGM4ZTI3OWY4ZDI5OTU1MTFmYjgzMjkzMC4uNDI2ZjdkMTcwYzAyYzRl
YzdhOGExNjQ4N2MzNWVhNjlmOTZlOTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTI5
LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cHV0ZVBhc3NEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0
ZDo6b3B0aW9uYWw8Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlw
dG9yJiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRv
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJh
c2UmPihjb21wdXRlUGFzc0Rlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHRpbWVzdGFtcFdyaXRlcyA9IGNvbnZlcnRU
b0JhY2tpbmcoY29tcHV0ZVBhc3NEZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYg
KCF0aW1lc3RhbXBXcml0ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCp0aW1lc3RhbXBXcml0ZXMpIH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiBD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tcHV0
ZVBhc3NEZXNjcmlwdG9yJiBjb21wdXRlUGFzc0Rlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNl
ID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JC
YXNlJj4oY29tcHV0ZVBhc3NEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVz
LmNwcAppbmRleCBhNmY5Mjk1ODJkZTNkOGVkMmMyYzg5YzkzYzY2MjRlZjE2M2RmMzkxLi5lYTc5
MTIwOWY1ZjBiOTFkOWI5YjNkZjI2Yzg0ZjllODc4NzM4OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVz
dGFtcFdyaXRlcy5jcHAKQEAgLTI5LDEwICsyOSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFt
cFdyaXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZSYgY29tcHV0ZVBhc3NUaW1lc3Rh
bXBXcml0ZSkKK3sKKyAgICBhdXRvIHF1ZXJ5U2V0ID0gY29udmVydFRvQmFja2luZyhjb21wdXRl
UGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKKyAgICBpZiAoIXF1ZXJ5U2V0KQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBxdWVyeVNldCwgY29tcHV0
ZVBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeUluZGV4LCBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRl
LmxvY2F0aW9uIH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVzdGFtcFdy
aXRlcz4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzJiBjb21wdXRlUGFzc1RpbWVzdGFt
cFdyaXRlcykKK3sKKyAgICBWZWN0b3I8Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gdGltZXN0
YW1wV3JpdGVzOworICAgIHRpbWVzdGFtcFdyaXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNv
bXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0
aW1lc3RhbXBXcml0ZSA6IGNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzKSB7CisgICAgICAgIGF1
dG8gY29udmVydGVkVGltZXN0YW1wV3JpdGUgPSBjb252ZXJ0VG9CYWNraW5nKHRpbWVzdGFtcFdy
aXRlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRUaW1lc3RhbXBXcml0ZSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHRpbWVzdGFtcFdyaXRlcy51bmNoZWNrZWRB
cHBlbmQoV1RGTW92ZSgqY29udmVydGVkVGltZXN0YW1wV3JpdGUpKTsKKyAgICB9CisgICAgcmV0
dXJuIHRpbWVzdGFtcFdyaXRlczsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBhc3NUaW1lc3RhbXBXcml0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVy
dEZyb21CYWNraW5nKGNvbnN0IENvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUmIGNvbXB1dGVQYXNz
VGltZXN0YW1wV3JpdGUpCiB7CiAgICAgYXV0byogcXVlcnlTZXQgPSBjb252ZXJ0UXVlcnlTZXRG
cm9tQmFja2luZyhjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlw
ZWxpbmVEZXNjcmlwdG9yLmNwcAppbmRleCBjNWRlYWUyNWI1YWZiNTIwZDQwYjA4M2IyZjMwZmE4
MmIwNDBiNmM0Li5kZDk5ODgzZTA2N2U2YWY3MzllYWVhZDQwMzc3ZjA4MmZkY2I5NmE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5l
RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21wdXRl
UGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4o
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gY29tcHV0ZSA9IGNvbnZlcnRUb0JhY2tpbmco
Y29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvci5jb21wdXRlKTsKKyAgICBpZiAoIWNvbXB1dGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJh
c2UpLCBXVEZNb3ZlKCpjb21wdXRlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJH
UFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBjb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFj
a2luZyhzdGF0aWNfY2FzdDxjb25zdCBQaXBlbGluZURlc2NyaXB0b3JCYXNlJj4oY29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcikpOwpAQCAtNDMsNyArNTcsNyBAQCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0OgogICAgIGlmICghY29tcHV0ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yIHsgV1RG
TW92ZSgqYmFzZSksIFdURk1vdmUoKmNvbXB1dGUpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoKmJhc2UpLCBXVEZNb3ZlKCpjb21wdXRlKSB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAppbmRleCAzNmJlNjk5ZjM4YmYwNmE2ZmIxYjBhY2Q5
ZWE4NmMwYTlmMmQyZGY3Li5hNTMzODc2NzhjYjlkNzVhMjc2ZTQ2Mzc1NDFkMzE2MDY5YjA3ZDlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtMjcsNDEgKzI3LDI0MiBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiV2ViR1BVQ29sb3IuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5oIgorI2luY2x1ZGUgIldlYkdQVUVycm9y
LmgiCisjaW5jbHVkZSAiV2ViR1BVRXh0ZW50M0QuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSAiV2ViR1BVT3JpZ2luMkQuaCIKKyNpbmNsdWRlICJXZWJHUFVPcmln
aW4zRC5oIgorI2luY2x1ZGUgIldlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuaCIKKyNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbG9yLmg+CisjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5oPgorI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXJyb3IuaD4KKyNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVudDNELmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNz
L1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVT3JpZ2luM0QuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJl
bmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgUEFMOjpXZWJHUFUgewogCiBjbGFzcyBBZGFwdGVyOwogY2xhc3MgQmluZEdy
b3VwOworc3RydWN0IEJpbmRHcm91cERlc2NyaXB0b3I7CitzdHJ1Y3QgQmluZEdyb3VwRW50cnk7
CiBjbGFzcyBCaW5kR3JvdXBMYXlvdXQ7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
cjsKK3N0cnVjdCBCaW5kR3JvdXBMYXlvdXRFbnRyeTsKK3N0cnVjdCBCbGVuZENvbXBvbmVudDsK
K3N0cnVjdCBCbGVuZFN0YXRlOwogY2xhc3MgQnVmZmVyOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7
CitzdHJ1Y3QgQnVmZmVyQmluZGluZ0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOwor
c3RydWN0IENhbnZhc0NvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKIGNs
YXNzIENvbW1hbmRCdWZmZXI7CitzdHJ1Y3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I7CiBjbGFz
cyBDb21tYW5kRW5jb2RlcjsKK3N0cnVjdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I7CitjbGFz
cyBDb21waWxhdGlvbk1lc3NhZ2U7CitzdHJ1Y3QgQ29tcHV0ZVBhc3NEZXNjcmlwdG9yOwogY2xh
c3MgQ29tcHV0ZVBhc3NFbmNvZGVyOwogY2xhc3MgQ29tcHV0ZVBpcGVsaW5lOworc3RydWN0IENv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3I7CitzdHJ1Y3QgRGVwdGhTdGVuY2lsU3RhdGU7CiBjbGFz
cyBEZXZpY2U7CitzdHJ1Y3QgRGV2aWNlRGVzY3JpcHRvcjsKK2NsYXNzIEV4dGVybmFsVGV4dHVy
ZTsKK3N0cnVjdCBFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0Oworc3RydWN0IEV4dGVybmFs
VGV4dHVyZURlc2NyaXB0b3I7CitzdHJ1Y3QgRnJhZ21lbnRTdGF0ZTsKIGNsYXNzIEdQVTsKK3N0
cnVjdCBJZGVudGlmaWVyOworc3RydWN0IEltYWdlQ29weUJ1ZmZlcjsKK3N0cnVjdCBJbWFnZUNv
cHlFeHRlcm5hbEltYWdlOworc3RydWN0IEltYWdlQ29weVRleHR1cmU7CitzdHJ1Y3QgSW1hZ2VD
b3B5VGV4dHVyZVRhZ2dlZDsKK3N0cnVjdCBJbWFnZURhdGFMYXlvdXQ7CitzdHJ1Y3QgTXVsdGlz
YW1wbGVTdGF0ZTsKK3N0cnVjdCBPYmplY3REZXNjcmlwdG9yQmFzZTsKK2NsYXNzIE91dE9mTWVt
b3J5RXJyb3I7CitzdHJ1Y3QgUGlwZWxpbmVEZXNjcmlwdG9yQmFzZTsKIGNsYXNzIFBpcGVsaW5l
TGF5b3V0Oworc3RydWN0IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmltaXRp
dmVTdGF0ZTsKK3N0cnVjdCBQcm9ncmFtbWFibGVTdGFnZTsKIGNsYXNzIFF1ZXJ5U2V0Oworc3Ry
dWN0IFF1ZXJ5U2V0RGVzY3JpcHRvcjsKIGNsYXNzIFF1ZXVlOwotY2xhc3MgUmVuZGVyQnVuZGxl
RW5jb2RlcjsKIGNsYXNzIFJlbmRlckJ1bmRsZTsKK3N0cnVjdCBSZW5kZXJCdW5kbGVEZXNjcmlw
dG9yOworY2xhc3MgUmVuZGVyQnVuZGxlRW5jb2RlcjsKK3N0cnVjdCBSZW5kZXJCdW5kbGVFbmNv
ZGVyRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50Oworc3RydWN0
IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRlclBhc3NEZXNj
cmlwdG9yOwogY2xhc3MgUmVuZGVyUGFzc0VuY29kZXI7CitzdHJ1Y3QgUmVuZGVyUGFzc0xheW91
dDsKIGNsYXNzIFJlbmRlclBpcGVsaW5lOworc3RydWN0IFJlbmRlclBpcGVsaW5lRGVzY3JpcHRv
cjsKK3N0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CiBjbGFzcyBTYW1wbGVyOworc3RydWN0
IFNhbXBsZXJCaW5kaW5nTGF5b3V0Oworc3RydWN0IFNhbXBsZXJEZXNjcmlwdG9yOwogY2xhc3Mg
U2hhZGVyTW9kdWxlOworc3RydWN0IFNoYWRlck1vZHVsZURlc2NyaXB0b3I7CitzdHJ1Y3QgU3Rl
bmNpbEZhY2VTdGF0ZTsKK3N0cnVjdCBTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ7CitjbGFz
cyBTdXBwb3J0ZWRGZWF0dXJlczsKK2NsYXNzIFN1cHBvcnRlZExpbWl0czsKIGNsYXNzIFRleHR1
cmU7CitzdHJ1Y3QgVGV4dHVyZUJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgVGV4dHVyZURlc2NyaXB0
b3I7CiBjbGFzcyBUZXh0dXJlVmlldzsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7Citj
bGFzcyBWYWxpZGF0aW9uRXJyb3I7CitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZl
cnRleEJ1ZmZlckxheW91dDsKK3N0cnVjdCBWZXJ0ZXhTdGF0ZTsKIAogfSAvLyBuYW1lc3BhY2Ug
UEFMOjpXZWJHUFUKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RydWN0IEJpbmRH
cm91cERlc2NyaXB0b3I7CitzdHJ1Y3QgQmluZEdyb3VwRW50cnk7CitzdHJ1Y3QgQmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBCaW5kR3JvdXBMYXlvdXRFbnRyeTsKK3N0cnVjdCBC
bGVuZENvbXBvbmVudDsKK3N0cnVjdCBCbGVuZFN0YXRlOworc3RydWN0IEJ1ZmZlckJpbmRpbmc7
CitzdHJ1Y3QgQnVmZmVyQmluZGluZ0xheW91dDsKK3N0cnVjdCBCdWZmZXJEZXNjcmlwdG9yOwor
c3RydWN0IENhbnZhc0NvbmZpZ3VyYXRpb247CitzdHJ1Y3QgQ29sb3JUYXJnZXRTdGF0ZTsKK3N0
cnVjdCBDb21tYW5kQnVmZmVyRGVzY3JpcHRvcjsKK3N0cnVjdCBDb21tYW5kRW5jb2RlckRlc2Ny
aXB0b3I7CitzdHJ1Y3QgQ29tcGlsYXRpb25NZXNzYWdlOworc3RydWN0IENvbXB1dGVQYXNzRGVz
Y3JpcHRvcjsKK3N0cnVjdCBDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yOworc3RydWN0IERlcHRo
U3RlbmNpbFN0YXRlOworc3RydWN0IERldmljZURlc2NyaXB0b3I7CitzdHJ1Y3QgRXh0ZXJuYWxU
ZXh0dXJlQmluZGluZ0xheW91dDsKK3N0cnVjdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yOwor
c3RydWN0IEZyYWdtZW50U3RhdGU7CitzdHJ1Y3QgSWRlbnRpZmllcjsKK3N0cnVjdCBJbWFnZUNv
cHlCdWZmZXI7CitzdHJ1Y3QgSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZTsKK3N0cnVjdCBJbWFnZUNv
cHlUZXh0dXJlOworc3RydWN0IEltYWdlQ29weVRleHR1cmVUYWdnZWQ7CitzdHJ1Y3QgSW1hZ2VE
YXRhTGF5b3V0Oworc3RydWN0IE11bHRpc2FtcGxlU3RhdGU7CitzdHJ1Y3QgT2JqZWN0RGVzY3Jp
cHRvckJhc2U7CitzdHJ1Y3QgT3V0T2ZNZW1vcnlFcnJvcjsKK3N0cnVjdCBQaXBlbGluZURlc2Ny
aXB0b3JCYXNlOworc3RydWN0IFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcjsKK3N0cnVjdCBQcmlt
aXRpdmVTdGF0ZTsKK3N0cnVjdCBQcm9ncmFtbWFibGVTdGFnZTsKK3N0cnVjdCBRdWVyeVNldERl
c2NyaXB0b3I7CitzdHJ1Y3QgUmVuZGVyQnVuZGxlRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJC
dW5kbGVFbmNvZGVyRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50
Oworc3RydWN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Oworc3RydWN0IFJlbmRl
clBhc3NEZXNjcmlwdG9yOworc3RydWN0IFJlbmRlclBhc3NMYXlvdXQ7CitzdHJ1Y3QgUmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yOworc3RydWN0IFJlcXVlc3RBZGFwdGVyT3B0aW9uczsKK3N0cnVj
dCBTYW1wbGVyQmluZGluZ0xheW91dDsKK3N0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKK3N0cnVj
dCBTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOworc3RydWN0IFN0ZW5jaWxGYWNlU3RhdGU7CitzdHJ1
Y3QgU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Oworc3RydWN0IFN1cHBvcnRlZEZlYXR1cmVz
Oworc3RydWN0IFN1cHBvcnRlZExpbWl0czsKK3N0cnVjdCBUZXh0dXJlQmluZGluZ0xheW91dDsK
K3N0cnVjdCBUZXh0dXJlRGVzY3JpcHRvcjsKK3N0cnVjdCBUZXh0dXJlVmlld0Rlc2NyaXB0b3I7
CitzdHJ1Y3QgVmFsaWRhdGlvbkVycm9yOworc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKK3N0cnVj
dCBWZXJ0ZXhCdWZmZXJMYXlvdXQ7CitzdHJ1Y3QgVmVydGV4U3RhdGU7CisKIGNsYXNzIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0IDogcHVibGljIFJlZkNvdW50ZWQ8Q29udmVydFRvQmFja2luZ0Nv
bnRleHQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db252ZXJ0VG9CYWNraW5nQ29udGV4dCgp
ID0gZGVmYXVsdDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRGVzY3JpcHRvcj4gY29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwRGVzY3JpcHRvciYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkJpbmRHcm91cEVudHJ5Jik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxCaW5kR3JvdXBM
YXlvdXRFbnRyeT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3Vw
TGF5b3V0RW50cnkmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJsZW5kQ29tcG9uZW50PiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCbGVuZENvbXBvbmVudCYpOworICAgIHN0ZDo6
b3B0aW9uYWw8QmxlbmRTdGF0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
QmxlbmRTdGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyQmluZGluZz4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZyYpOworICAgIHN0ZDo6b3B0
aW9uYWw8QnVmZmVyQmluZGluZ0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6QnVmZmVyQmluZGluZ0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyRGVz
Y3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3Jp
cHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q2FudmFzQ29uZmlndXJhdGlvbj4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q2FudmFzQ29uZmlndXJhdGlvbiYpOworICAgIHN0
ZDo6b3B0aW9uYWw8Q29sb3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNv
bG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxDb2xvckRpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkNvbG9yRGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JUYXJn
ZXRTdGF0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29sb3JUYXJnZXRT
dGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJik7
CisgICAgc3RkOjpvcHRpb25hbDxDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvciYpOworICAg
IHN0ZDo6b3B0aW9uYWw8Q29tcGlsYXRpb25NZXNzYWdlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2UmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bXB1dGVQYXNzRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRl
UGFzc1RpbWVzdGFtcFdyaXRlJik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGFzc1RpbWVz
dGFtcFdyaXRlcz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NUaW1lc3RhbXBXcml0ZXMmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPERlcHRoU3RlbmNpbFN0YXRlPiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8RGV2aWNlRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8RXJy
b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkVycm9yJik7CisgICAgc3Rk
OjpvcHRpb25hbDxFeHRlbnQzRD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
RXh0ZW50M0QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEV4dGVudDNERGljdD4gY29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0REaWN0Jik7CisgICAgc3RkOjpvcHRpb25h
bDxFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRp
b25hbDxFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25h
bDxGcmFnbWVudFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpGcmFn
bWVudFN0YXRlJik7CisgICAgc3RkOjpvcHRpb25hbDxJZGVudGlmaWVyPiBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJZGVudGlmaWVyJik7CisgICAgc3RkOjpvcHRpb25hbDxJ
bWFnZUNvcHlCdWZmZXI+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdl
Q29weUJ1ZmZlciYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZT4g
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJuYWxJbWFn
ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5VGV4dHVyZT4gY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZSYpOworICAgIHN0ZDo6b3B0aW9u
YWw8SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1hZ2VE
YXRhTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZURhdGFM
YXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok11bHRpc2FtcGxlU3RhdGUmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPE9iamVjdERlc2NyaXB0b3JCYXNlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2lu
MkQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjJEJik7CisgICAg
c3RkOjpvcHRpb25hbDxPcmlnaW4yRERpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6Ok9yaWdpbjJERGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNEJik7CisgICAgc3RkOjpvcHRp
b25hbDxPcmlnaW4zRERpY3Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9y
aWdpbjNERGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvciYpOworICAgIHN0
ZDo6b3B0aW9uYWw8UGlwZWxpbmVEZXNjcmlwdG9yQmFzZT4gY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSYpOworICAgIHN0ZDo6b3B0aW9u
YWw8UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBy
aW1pdGl2ZVN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQcmltaXRp
dmVTdGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8UHJvZ3JhbW1hYmxlU3RhZ2U+IGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlByb2dyYW1tYWJsZVN0YWdlJik7CisgICAgc3Rk
OjpvcHRpb25hbDxRdWVyeVNldERlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlF1ZXJ5U2V0RGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
QnVuZGxlRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRW5j
b2RlckRlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNz
Q29sb3JBdHRhY2htZW50PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5k
ZXJQYXNzQ29sb3JBdHRhY2htZW50Jik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
bmRlclBhc3NEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0xheW91
dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dCYp
OworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlPiBjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXM+IGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMmKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpv
cHRpb25hbDxSZXF1ZXN0QWRhcHRlck9wdGlvbnM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2Ft
cGxlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNh
bXBsZXJCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTYW1wbGVyRGVzY3JpcHRv
cj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3Im
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNoYWRlck1vZHVsZURlc2NyaXB0b3I+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZURlc2NyaXB0b3ImKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPFN0ZW5jaWxGYWNlU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlN0ZW5jaWxGYWNlU3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0b3JhZ2VU
ZXh0dXJlQmluZGluZ0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxTdXBwb3J0
ZWRGZWF0dXJlcz4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXMmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1cHBvcnRlZExpbWl0cz4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJik7CisgICAgc3RkOjpv
cHRpb25hbDxUZXh0dXJlQmluZGluZ0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6VGV4dHVyZUJpbmRpbmdMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHR1
cmVEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJl
RGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3Im
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbGlkYXRpb25FcnJvcj4gY29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6VmFsaWRhdGlvbkVycm9yJik7CisgICAgc3RkOjpvcHRpb25hbDxW
ZXJ0ZXhBdHRyaWJ1dGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRl
eEF0dHJpYnV0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0PiBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPFZlcnRleFN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpWZXJ0ZXhTdGF0ZSYpOworCiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkFkYXB0ZXImKSA9IDA7CiAgICAgdmly
dHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OkJpbmRHcm91cCYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0JikgPSAwOwpAQCAtNzEs
NiArMjcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXImKSA9IDA7CiAg
ICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYpID0gMDsKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZp
ZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNlJikgPSAwOworICAg
IHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpFeHRlcm5hbFRleHR1cmUmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVy
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkdQVSYpID0gMDsKICAgICB2aXJ0
dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
UGlwZWxpbmVMYXlvdXQmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5j
cHAKaW5kZXggMmJjYmIwNmVhMjQwNzQ1YzA5YjRjNjJiYzAwOGVhYjg5ZDQzYzRlMy4uOTBkMThm
YzE4NjIyYzQ4YWFlODk1NDMxMTE5NGZlZjc5MjlkODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3BwCkBAIC0y
OSwxMCArMjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURl
cHRoU3RlbmNpbFN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6
b3B0aW9uYWw8RGVwdGhTdGVuY2lsU3RhdGU+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZSYgZGVwdGhT
dGVuY2lsU3RhdGUpCit7CisgICAgYXV0byBzdGVuY2lsRnJvbnQgPSBjb252ZXJ0VG9CYWNraW5n
KGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxGcm9udCk7CisgICAgaWYgKCFzdGVuY2lsRnJvbnQp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHN0ZW5jaWxCYWNrID0g
Y29udmVydFRvQmFja2luZyhkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFjayk7CisgICAgaWYg
KCFzdGVuY2lsQmFjaykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgZGVwdGhTdGVuY2lsU3RhdGUuZm9ybWF0LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aFdy
aXRlRW5hYmxlZCwgZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhDb21wYXJlLCBXVEZNb3ZlKCpzdGVu
Y2lsRnJvbnQpLCBXVEZNb3ZlKCpzdGVuY2lsQmFjayksIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5j
aWxSZWFkTWFzaywgZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlTWFzaywgZGVwdGhTdGVu
Y2lsU3RhdGUuZGVwdGhCaWFzLCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEJpYXNTbG9wZVNjYWxl
LCBkZXB0aFN0ZW5jaWxTdGF0ZS5kZXB0aEJpYXNDbGFtcCB9IH07Cit9CisKIHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OkRlcHRoU3RlbmNpbFN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgRGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3Rl
bmNpbFN0YXRlKQogewogICAgIGF1dG8gc3RlbmNpbEZyb250ID0gY29udmVydEZyb21CYWNraW5n
KGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxGcm9udCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHAKaW5kZXggYzBhNGQ2
ZDg2ZWFhZmVmNzM4MThhODE1ZTRjOTUyZGI0NGFlMGUwMy4uNTgwYWEwNmJiZTQ1MDk3MmE3MmVi
YzNjN2RkZWM0YjE5Y2E1Yjc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVURldmljZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RGV2aWNlRGVz
Y3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRldmljZURlc2NyaXB0b3IpCit7CisgICAg
YXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQ
VTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihkZXZpY2VEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFi
YXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCpiYXNlKSwgZGV2aWNlRGVzY3JpcHRvci5yZXF1aXJlZEZlYXR1cmVzIH0gfTsKK30KKwog
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRvcj4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IERldmljZURlc2NyaXB0b3Im
IGRldmljZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5n
KHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oZGV2aWNlRGVzY3JpcHRv
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUVycm9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJvci5jcHAKaW5kZXgg
ZThmN2RiN2RmZjZkZjYyNmE3NTA1OWRlOGJjMTYzN2M2M2FjODgzNy4uMDZkMzFjNWQzMDkwZTRh
OTJmYTA2MTJjOTg5NzZlNjQyNGIzNGU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVRXJyb3IuY3BwCkBAIC0yOSwxMCArMjksMjYgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUVycm9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8RXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFcnJvciYgZXJyb3IpCit7CisgICAgcmV0
dXJuIFdURjo6c3dpdGNoT24oZXJyb3IsIFt0aGlzXSAoY29uc3QgUmVmPFBBTDo6V2ViR1BVOjpP
dXRPZk1lbW9yeUVycm9yPiYgb3V0T2ZNZW1vcnlFcnJvcikgLT4gc3RkOjpvcHRpb25hbDxFcnJv
cj4geworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRUb0JhY2tpbmcob3V0T2ZNZW1vcnlF
cnJvci5nZXQoKSk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyAqcmVzdWx0IH0gfTsKKyAgICB9LCBbdGhp
c10gKGNvbnN0IFJlZjxQQUw6OldlYkdQVTo6VmFsaWRhdGlvbkVycm9yPiYgdmFsaWRhdGlvbkVy
cm9yKSAtPiBzdGQ6Om9wdGlvbmFsPEVycm9yPiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29u
dmVydFRvQmFja2luZyh2YWxpZGF0aW9uRXJyb3IuZ2V0KCkpOworICAgICAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsg
KnJlc3VsdCB9IH07CisgICAgfSk7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVy
cm9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3Qg
RXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGVycm9yLCBbdGhpc10g
KGNvbnN0IE91dE9mTWVtb3J5RXJyb3ImIG91dE9mTWVtb3J5RXJyb3IpIC0+IHN0ZDo6b3B0aW9u
YWw8UEFMOjpXZWJHUFU6OkVycm9yPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUV4dGVudDNELmNwcAppbmRleCA4MDM0ODIwNDE5NTM5NDM5M2VmN2Y0MDlhNTNkNjhk
ODUwNzkzMTdhLi4wNTE4ODQyZWZlMjVlNTIzNTM2NmNmMGIwYTY5MjIyZjFlZTgxYjAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlbnQzRC5jcHAKQEAgLTI5
LDEwICsyOSwyOCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0
ZW50M0QuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxF
eHRlbnQzRERpY3Q+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNv
bnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkKK3sKKyAgICByZXR1
cm4geyB7IGV4dGVudDNERGljdC53aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdodCwgZXh0ZW50M0RE
aWN0LmRlcHRoT3JBcnJheUxheWVycyB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8RXh0ZW50M0Q+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpFeHRlbnQzRCYgZXh0ZW50M0QpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oZXh0
ZW50M0QsIFtdIChjb25zdCBWZWN0b3I8UEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlPiYg
dmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPEV4dGVudDNEPiB7CisgICAgICAgIHJldHVybiB7IHsg
dmVjdG9yIH0gfTsKKyAgICB9LCBbdGhpc10gKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRERp
Y3QmIGV4dGVudDNERGljdCkgLT4gc3RkOjpvcHRpb25hbDxFeHRlbnQzRD4geworICAgICAgICBh
dXRvIGV4dGVudDNEID0gY29udmVydFRvQmFja2luZyhleHRlbnQzRERpY3QpOworICAgICAgICBp
ZiAoIWV4dGVudDNEKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCpleHRlbnQzRCkgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpFeHRlbnQzRERpY3Q+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBFeHRlbnQzRERpY3QmIGV4dGVudDNERGljdCkK
IHsKICAgICByZXR1cm4geyB7IGV4dGVudDNERGljdC53aWR0aCwgZXh0ZW50M0REaWN0LmhlaWdo
dCwgZXh0ZW50M0REaWN0LmRlcHRoT3JBcnJheUxheWVycyB9IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJl
QmluZGluZ0xheW91dC5jcHAKaW5kZXggY2M1YjkxYTVhYTZjYzk1ZDc0ZjI3ZWQ5Y2YxMzcxMzZl
MmU5ZGI5YS4uNTY2NmEzYjcwYTJkYzhlODVlNWNiN2UyNDM3N2UwODI3NDZkMDI3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZUJp
bmRpbmdMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVF
eHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5kaW5n
TGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8
RXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRpbmdM
YXlvdXQmIGV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyB9
IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZUJpbmRp
bmdMYXlvdXQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0JiBleHRlcm5hbFRleHR1cmVCaW5kaW5n
TGF5b3V0KQogewogICAgIHJldHVybiB7IHsgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3Iu
Y3BwCmluZGV4IDYzZTFjNmJkZDUzMzQ5MjFjODgxYmU4ZjNhOGZmOTdmNDI1ZTE0NzIuLjQ3NmNi
ZWI3OGEzNDNlOTdiNGYxM2E2Mzc5NzM1YjNlZmVmMmM0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVz
Y3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1cmVEZXNjcmlw
dG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29u
c3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4oZXh0ZXJuYWxUZXh0dXJlRGVz
Y3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIGV4dGVybmFsVGV4dHVyZURlc2NyaXB0
b3IuY29sb3JTcGFjZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkV4dGVy
bmFsVGV4dHVyZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJiBleHRlcm5hbFRleHR1
cmVEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGV4dGVybmFsVGV4dHVyZURlc2Ny
aXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVG
cmFnbWVudFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFn
bWVudFN0YXRlLmNwcAppbmRleCA0ODA2YjQxMjIyNzA0ZGQwYzFhNDA5ZDJlMTFmZjE3ZGY3N2Fh
NGRjLi41ZjA3MDEzMzNkY2RkMmJkMjc4YmZkZWI4NzNlMDU4YzBjMDU1MjI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRnJhZ21lbnRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCkBA
IC0yOSwxMCArMjksMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUZyYWdtZW50U3RhdGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpv
cHRpb25hbDxGcmFnbWVudFN0YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RnJhZ21lbnRTdGF0ZSYgZnJhZ21lbnRTdGF0ZSkK
K3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBB
TDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKKyAgICBpZiAo
IWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8Q29sb3JU
YXJnZXRTdGF0ZT4gdGFyZ2V0czsKKyAgICB0YXJnZXRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
ZnJhZ21lbnRTdGF0ZS50YXJnZXRzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0YXJn
ZXQgOiBmcmFnbWVudFN0YXRlLnRhcmdldHMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUYXJn
ZXQgPSBjb252ZXJ0VG9CYWNraW5nKHRhcmdldCk7CisgICAgICAgIGlmICghY29udmVydGVkVGFy
Z2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdGFyZ2V0cy51
bmNoZWNrZWRBcHBlbmQoV1RGTW92ZSgqY29udmVydGVkVGFyZ2V0KSk7CisgICAgfQorCisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZSh0YXJnZXRzKSB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkZyYWdtZW50U3RhdGU+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBGcmFnbWVudFN0YXRlJiBmcmFnbWVu
dFN0YXRlKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2Fz
dDxjb25zdCBQcm9ncmFtbWFibGVTdGFnZSY+KGZyYWdtZW50U3RhdGUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKaW5k
ZXggZmQ0NzAwNTUxOGE4MzQ0MTRhOTg1MDIyOWMxMjFhZmQxZGUxMmU1NS4uZTRiNzBhNmVjZjlh
ZmQ0YmI1M2NiNGYyOTc2MTQwYmU0MWUxMTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZlci5jcHAKQEAgLTI5LDE3ICsyOSwz
MSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVm
ZmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1h
Z2VDb3B5QnVmZmVyPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhj
b25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBpbWFnZUNvcHlCdWZmZXIpCit7Cisg
ICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6Oldl
YkdQVTo6SW1hZ2VEYXRhTGF5b3V0Jj4oaW1hZ2VDb3B5QnVmZmVyKSk7CisgICAgaWYgKCFiYXNl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBidWZmZXIgPSBjb252
ZXJ0VG9CYWNraW5nKGltYWdlQ29weUJ1ZmZlci5idWZmZXIpOworICAgIGlmICghYnVmZmVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpi
YXNlKSwgYnVmZmVyIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6SW1hZ2VD
b3B5QnVmZmVyPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmco
Y29uc3QgSW1hZ2VDb3B5QnVmZmVyJiBpbWFnZUNvcHlCdWZmZXIpCiB7CiAgICAgYXV0byBiYXNl
ID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IEltYWdlRGF0YUxheW91dCY+
KGltYWdlQ29weUJ1ZmZlcikpOwogICAgIGlmICghYmFzZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIGF1dG8gYnVmZmVyID0gY29udmVydEJ1ZmZlckZyb21CYWNraW5nKGlt
YWdlQ29weUJ1ZmZlci5idWZmZXIpOworICAgIGF1dG8qIGJ1ZmZlciA9IGNvbnZlcnRCdWZmZXJG
cm9tQmFja2luZyhpbWFnZUNvcHlCdWZmZXIuYnVmZmVyKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCmluZGV4
IGMwY2EzYmYzNTljOWViNjA5MTI4ZWZhZWYyMjZjNjM2ZThkZTdlNDAuLjg2ODY4M2QxZDQ5OGI1
ZmMxMTcyNDkzNzFjNTNiNDE4ZDNjYTMxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAKQEAg
LTI5LDEwICsyOSwyMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
SW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPEltYWdlQ29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlFeHRl
cm5hbEltYWdlJiBpbWFnZUNvcHlFeHRlcm5hbEltYWdlKQoreworICAgIHN0ZDo6b3B0aW9uYWw8
T3JpZ2luMkQ+IG9yaWdpbjsKKyAgICBpZiAoaW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4p
IHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRPcmlnaW4gPSBjb252ZXJ0VG9CYWNraW5nKCppbWFn
ZUNvcHlFeHRlcm5hbEltYWdlLm9yaWdpbik7CisgICAgICAgIGlmICghY29udmVydGVkT3JpZ2lu
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4g
eyB7IFdURk1vdmUob3JpZ2luKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OkltYWdlQ29weUV4dGVybmFsSW1hZ2U+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRGcm9tQmFja2luZyhjb25zdCBJbWFnZUNvcHlFeHRlcm5hbEltYWdlJiBpbWFnZUNvcHlFeHRl
cm5hbEltYWdlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJEPiBv
cmlnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1h
Z2VDb3B5VGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1h
Z2VDb3B5VGV4dHVyZS5jcHAKaW5kZXggNmNkZGQ5ODlhYTA0ZWQxNTcxMmVmMDUxZDMxMzBjNjlh
MjUxMWFmMi4uNjA5MDgxOTU3NTMyZmQzZjI3YmEyMjE5MTZhYjdhNzA2NzMzZGU3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0
dXJlLmNwcApAQCAtMjksMTMgKzI5LDMwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5VGV4dHVyZT4gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1
cmUmIGltYWdlQ29weVRleHR1cmUpCit7CisgICAgYXV0byB0ZXh0dXJlID0gY29udmVydFRvQmFj
a2luZyhpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpOworICAgIGlmICghdGV4dHVyZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IG9y
aWdpbjsKKyAgICBpZiAoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4pIHsKKyAgICAgICAgYXV0byBv
cmlnaW4gPSBjb252ZXJ0VG9CYWNraW5nKCppbWFnZUNvcHlUZXh0dXJlLm9yaWdpbik7CisgICAg
ICAgIGlmICghb3JpZ2luKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
CisKKyAgICByZXR1cm4geyB7IHRleHR1cmUsIGltYWdlQ29weVRleHR1cmUubWlwTGV2ZWwsIFdU
Rk1vdmUob3JpZ2luKSwgaW1hZ2VDb3B5VGV4dHVyZS5hc3BlY3QgfSB9OworfQorCiBzdGQ6Om9w
dGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZSYgaW1hZ2VD
b3B5VGV4dHVyZSkKIHsKLSAgICBhdXRvIHRleHR1cmUgPSBjb252ZXJ0VGV4dHVyZUZyb21CYWNr
aW5nKGltYWdlQ29weVRleHR1cmUudGV4dHVyZSk7CisgICAgYXV0byogdGV4dHVyZSA9IGNvbnZl
cnRUZXh0dXJlRnJvbUJhY2tpbmcoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKTsKICAgICBpZiAo
IXRleHR1cmUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFn
Z2VkLmNwcAppbmRleCA2ZTdlM2ZjY2I0MzI1ZTAzNTMzMjRiYzM4NTIxZTMxN2VlYThkZjM2Li42
NGIzZTI1YTRhODZkMGRiNjI1ZmU5MDI2ZGU2MTgxZjU3ODc0YTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmVU
YWdnZWQuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmVUYWdnZWQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkPiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYgaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkKK3sKKyAgICBh
dXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BV
OjpJbWFnZUNvcHlUZXh0dXJlJj4oaW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkpOworICAgIGlmICgh
YmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqYmFzZSksIGltYWdlQ29weVRleHR1cmVUYWdnZWQuY29sb3JTcGFjZSwgaW1hZ2VDb3B5
VGV4dHVyZVRhZ2dlZC5wcmVtdWx0aXBsaWVkQWxwaGEgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYg
aW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJh
Y2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgSW1hZ2VDb3B5VGV4dHVyZSY+KGltYWdlQ29weVRleHR1
cmVUYWdnZWQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVJbWFnZURhdGFMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUltYWdlRGF0YUxheW91dC5jcHAKaW5kZXggMmIyMTBiOWIxYjM3NDdjMmI0NTAzZDMxNTI4MzFm
NmY3NTQzYmU1NC4uODE2NjYxNTk5YzBiYmRjYmNhYThlMTJhN2UwYzk0OGE1YzkyMGZiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlRGF0YUxh
eW91dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVSW1hZ2VEYXRhTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VEYXRhTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0
JiBpbWFnZURhdGFMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyBpbWFnZURhdGFMYXlvdXQub2Zm
c2V0LCBpbWFnZURhdGFMYXlvdXQuYnl0ZXNQZXJSb3csIGltYWdlRGF0YUxheW91dC5yb3dzUGVy
SW1hZ2UgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlv
dXQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBJ
bWFnZURhdGFMYXlvdXQmIGltYWdlRGF0YUxheW91dCkKIHsKICAgICByZXR1cm4geyB7IGltYWdl
RGF0YUxheW91dC5vZmZzZXQsIGltYWdlRGF0YUxheW91dC5ieXRlc1BlclJvdywgaW1hZ2VEYXRh
TGF5b3V0LnJvd3NQZXJJbWFnZSB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHAKaW5kZXggMDQ2ZTc5MGY4OWJkYzM5
ZWExNTNmMDZiMTgyYzQ3MWY5OGE2MWJjZi4uODljZmI0YzVkYWE5ZTBlYTlhZjQxMmM2ZjJjYWIw
OWYzZTYwNTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VU11bHRpc2FtcGxlU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVNdWx0aXNhbXBsZVN0YXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVNdWx0aXNhbXBsZVN0YXRlLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8TXVsdGlzYW1wbGVTdGF0ZT4g
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6Ok11bHRpc2FtcGxlU3RhdGUmIG11bHRpc2FtcGxlU3RhdGUpCit7CisgICAgcmV0dXJuIHsg
eyBtdWx0aXNhbXBsZVN0YXRlLmNvdW50LCBtdWx0aXNhbXBsZVN0YXRlLm1hc2ssIG11bHRpc2Ft
cGxlU3RhdGUuYWxwaGFUb0NvdmVyYWdlRW5hYmxlZCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6Ok11bHRpc2FtcGxlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBNdWx0aXNhbXBsZVN0YXRlJiBtdWx0aXNhbXBsZVN0
YXRlKQogewogICAgIHJldHVybiB7IHsgbXVsdGlzYW1wbGVTdGF0ZS5jb3VudCwgbXVsdGlzYW1w
bGVTdGF0ZS5tYXNrLCBtdWx0aXNhbXBsZVN0YXRlLmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQgfSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERl
c2NyaXB0b3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmpl
Y3REZXNjcmlwdG9yQmFzZS5jcHAKaW5kZXggZDExNTRlYmQ4NmNkNzMyNThmYTFjNThmZDBiMDhi
NjIwNjJiNzY0ZC4uZjAxOTlmMDg5YzMxOTJiYzliZTM0YjQ2NGNjN2I4Njk1MjhiNzA4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0
b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0
RGVzY3JpcHRvckJhc2UuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T2JqZWN0RGVzY3JpcHRvckJhc2U+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSYgb2JqZWN0RGVzY3JpcHRvckJhc2UpCit7CisgICAg
cmV0dXJuIHsgeyBvYmplY3REZXNjcmlwdG9yQmFzZS5sYWJlbCB9IH07Cit9CisKIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlPiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2Um
IG9iamVjdERlc2NyaXB0b3JCYXNlKQogewogICAgIHJldHVybiB7IHsgb2JqZWN0RGVzY3JpcHRv
ckJhc2UubGFiZWwgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVU9yaWdpbjJELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVP
cmlnaW4yRC5jcHAKaW5kZXggMjgwODhlMzJiY2M4YzAwMDFhYmNjMjI1M2NlNGIxMzZjNjRlNmVm
NS4uZDJmYzI0N2ZlODU0ODQwYzExMTFmYzhhMGM1MDQ3ZjU2ZGQzYjRjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luMkQuY3BwCkBAIC0yOSwxMCArMjks
MjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3JpZ2luMkRE
aWN0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6T3JpZ2luMkREaWN0JiBvcmlnaW4yRERpY3QpCit7CisgICAgcmV0dXJuIHsgeyBv
cmlnaW4yRERpY3QueCwgb3JpZ2luMkREaWN0LnkgfSB9OworfQorCitzdGQ6Om9wdGlvbmFsPE9y
aWdpbjJEPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6T3JpZ2luMkQmIG9yaWdpbjJEKQoreworICAgIHJldHVybiBXVEY6OnN3aXRj
aE9uKG9yaWdpbjJELCBbXSAoY29uc3QgVmVjdG9yPFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRp
bmF0ZT4mIHZlY3RvcikgLT4gc3RkOjpvcHRpb25hbDxPcmlnaW4yRD4geworICAgICAgICByZXR1
cm4geyB7IHZlY3RvciB9IH07CisgICAgfSwgW3RoaXNdIChjb25zdCBQQUw6OldlYkdQVTo6T3Jp
Z2luMkREaWN0JiBvcmlnaW4yRERpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IHsKKyAg
ICAgICAgYXV0byBvcmlnaW4yRCA9IGNvbnZlcnRUb0JhY2tpbmcob3JpZ2luMkREaWN0KTsKKyAg
ICAgICAgaWYgKCFvcmlnaW4yRCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgqb3JpZ2luMkQpIH0gfTsKKyAgICB9KTsKK30KKwog
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6T3JpZ2luMkREaWN0PiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgT3JpZ2luMkREaWN0JiBvcmlnaW4y
RERpY3QpCiB7CiAgICAgcmV0dXJuIHsgeyBvcmlnaW4yRERpY3QueCwgb3JpZ2luMkREaWN0Lnkg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdp
bjNELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHAK
aW5kZXggNzdiYTFiNjViYjIxZmY0OGM1NGJhNjMxMmYyZGE5MzgzYzU0Mzk4OS4uM2Q4YzkzN2Rl
OGExM2JjMjI5N2YwY2M1ZWFiNjFkMWQzNGI4MzM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luM0QuY3BwCkBAIC0yOSwxMCArMjksMjggQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3JpZ2luM0REaWN0PiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6T3Jp
Z2luM0REaWN0JiBvcmlnaW4zRERpY3QpCit7CisgICAgcmV0dXJuIHsgeyBvcmlnaW4zRERpY3Qu
eCwgb3JpZ2luM0REaWN0LnksIG9yaWdpbjNERGljdC56IH0gfTsKK30KKworc3RkOjpvcHRpb25h
bDxPcmlnaW4zRD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6Ok9yaWdpbjNEJiBvcmlnaW4zRCkKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihvcmlnaW4zRCwgW10gKGNvbnN0IFZlY3RvcjxQQUw6OldlYkdQVTo6SW50ZWdlckNv
b3JkaW5hdGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luM0Q+IHsKKyAgICAgICAg
cmV0dXJuIHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6
Ok9yaWdpbjNERGljdCYgb3JpZ2luM0REaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiB7
CisgICAgICAgIGF1dG8gb3JpZ2luM0QgPSBjb252ZXJ0VG9CYWNraW5nKG9yaWdpbjNERGljdCk7
CisgICAgICAgIGlmICghb3JpZ2luM0QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbjNEKSB9IH07CisgICAgfSk7Cit9
CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjNERGljdD4gQ29udmVydEZyb21C
YWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE9yaWdpbjNERGljdCYgb3Jp
Z2luM0REaWN0KQogewogICAgIHJldHVybiB7IHsgb3JpZ2luM0REaWN0LngsIG9yaWdpbjNERGlj
dC55LCBvcmlnaW4zRERpY3QueiB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAKaW5kZXggYTNjNDk1ZjhjODQzNTcz
MDI5N2EyZGNkNWI2YzE3YmM0ZjVhZWI2ZS4uMDhkNGYxODE0NjdlZjkwZTEwMWU1Yzc3YjA3YWJk
MDllYzA5OTU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VU91dE9mTWVtb3J5RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVPdXRPZk1lbW9yeUVycm9yLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPdXRPZk1lbW9yeUVycm9yLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8T3V0T2ZNZW1vcnlFcnJvcj4g
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6Ok91dE9mTWVtb3J5RXJyb3ImIG91dE9mTWVtb3J5RXJyb3IpCit7CisgICAgcmV0dXJuIHsg
eyB9IH07Cit9CisKIFJlZlB0cjxQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlFcnJvcj4gQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE91dE9mTWVtb3J5
RXJyb3ImIG91dE9mTWVtb3J5RXJyb3IpCiB7CiAgICAgcmV0dXJuIHsgUEFMOjpXZWJHUFU6Ok91
dE9mTWVtb3J5RXJyb3I6OmNyZWF0ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKaW5kZXgg
YWJiOGE4Yzk0NmZiYzAzZGE0MTFkMjQ5M2YwY2M5NDJhNzBjMGMyNi4uZWVhYzgzM2NlZWU1Yzkx
ODYzZDg5MmU1MmM2ZjExMWU1ODA4ZTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcApAQCAt
MjksMTAgKzI5LDI3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQ
aXBlbGluZURlc2NyaXB0b3JCYXNlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8UGlwZWxpbmVEZXNjcmlwdG9yQmFzZT4gQ29udmVydFRvQmFja2luZ0Nv
bnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3Jp
cHRvckJhc2UmIHBpcGVsaW5lRGVzY3JpcHRvckJhc2UpCit7CisgICAgYXV0byBiYXNlID0gY29u
dmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3Jp
cHRvckJhc2UmPihwaXBlbGluZURlc2NyaXB0b3JCYXNlKSk7CisgICAgaWYgKCFiYXNlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgV2ViR1BVSWRlbnRpZmllciBsYXlvdXQ7
CisgICAgaWYgKHBpcGVsaW5lRGVzY3JpcHRvckJhc2UubGF5b3V0KSB7CisgICAgICAgIGxheW91
dCA9IGNvbnZlcnRUb0JhY2tpbmcoKnBpcGVsaW5lRGVzY3JpcHRvckJhc2UubGF5b3V0KTsKKyAg
ICAgICAgaWYgKCFsYXlvdXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIGxheW91dCB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2U+IENvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQaXBlbGluZURlc2Ny
aXB0b3JCYXNlJiBwaXBlbGluZURlc2NyaXB0b3JCYXNlKQogewogICAgIGF1dG8gYmFzZSA9IGNv
bnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+
KHBpcGVsaW5lRGVzY3JpcHRvckJhc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKaW5k
ZXggZDdhMjgyMTBmODE0OTFmODQxYTVmMDIwMGYwYjZkNTJjZjMyNzY1MC4uODI5MmUzMDg0MjY2
ZDQ0NTA3ZWUzY2EwZWMyYTIyYzY1Yjk3OTY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5j
cHAKQEAgLTI5LDEwICsyOSwyOSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yPiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBwaXBlbGluZUxheW91dERlc2NyaXB0b3IpCit7CisgICAg
YXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQ
VTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihwaXBlbGluZUxheW91dERlc2NyaXB0b3IpKTsKKyAg
ICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8
V2ViR1BVSWRlbnRpZmllcj4gYmluZEdyb3VwTGF5b3V0czsKKyAgICBiaW5kR3JvdXBMYXlvdXRz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmJpbmRHcm91
cExheW91dHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gYmFja2luZ0JpbmRHcm91cExheW91dCA6
IHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5iaW5kR3JvdXBMYXlvdXRzKSB7CisgICAgICAgIGF1
dG8gZW50cnkgPSBjb252ZXJ0VG9CYWNraW5nKGJhY2tpbmdCaW5kR3JvdXBMYXlvdXQpOworICAg
ICAgICBpZiAoIWVudHJ5KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYmluZEdyb3VwTGF5b3V0cy51bmNoZWNrZWRBcHBlbmQoZW50cnkpOworICAgIH0KKworICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUoYmluZEdyb3VwTGF5b3V0cykgfSB9
OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2NyaXB0
b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQ
aXBlbGluZUxheW91dERlc2NyaXB0b3ImIHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcikKIHsKICAg
ICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0
RGVzY3JpcHRvckJhc2UmPihwaXBlbGluZUxheW91dERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwCmluZGV4
IGRiNWE5M2RiMTdjZDkxZmMyY2Q0MzU5MDM1MzFiOTBmMzAwMWJmYTguLjA2ZTk1YWZiZGRhODBh
ZGVhNjBiNjYzNDNmMDgwYzVmNTBjMTFjNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVByaW1pdGl2ZVN0YXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFByaW1pdGl2
ZVN0YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6UHJpbWl0aXZlU3RhdGUmIHByaW1pdGl2ZVN0YXRlKQoreworICAgIHJldHVy
biB7IHsgcHJpbWl0aXZlU3RhdGUudG9wb2xvZ3ksIHByaW1pdGl2ZVN0YXRlLnN0cmlwSW5kZXhG
b3JtYXQsIHByaW1pdGl2ZVN0YXRlLmZyb250RmFjZSwgcHJpbWl0aXZlU3RhdGUuY3VsbE1vZGUs
IHByaW1pdGl2ZVN0YXRlLnVuY2xpcHBlZERlcHRoIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6UHJpbWl0aXZlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBQcmltaXRpdmVTdGF0ZSYgcHJpbWl0aXZlU3RhdGUpCiB7
CiAgICAgcmV0dXJuIHsgeyBwcmltaXRpdmVTdGF0ZS50b3BvbG9neSwgcHJpbWl0aXZlU3RhdGUu
c3RyaXBJbmRleEZvcm1hdCwgcHJpbWl0aXZlU3RhdGUuZnJvbnRGYWNlLCBwcmltaXRpdmVTdGF0
ZS5jdWxsTW9kZSwgcHJpbWl0aXZlU3RhdGUudW5jbGlwcGVkRGVwdGggfSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5j
cHAKaW5kZXggNmJjMzM1ZmYxZDg0MjE2ZWUwNzE0M2E4ZTVkNWU3YTIyNDAyMWZmMC4uODlkMzhm
NmU4ZmYwMDA1MTIwNTEyMDE5NzU2M2QxNTRkMjMwOTFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3BwCkBAIC0y
OSwxMyArMjksMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVBy
b2dyYW1tYWJsZVN0YWdlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6
b3B0aW9uYWw8UHJvZ3JhbW1hYmxlU3RhZ2U+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSYgcHJvZ3Jh
bW1hYmxlU3RhZ2UpCit7CisgICAgYXV0byBtb2R1bGUgPSBjb252ZXJ0VG9CYWNraW5nKHByb2dy
YW1tYWJsZVN0YWdlLm1vZHVsZSk7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IG1vZHVsZSwgcHJvZ3JhbW1hYmxlU3RhZ2Uu
ZW50cnlQb2ludCwgcHJvZ3JhbW1hYmxlU3RhZ2UuY29uc3RhbnRzIH0gfTsKK30KKwogc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6UHJvZ3JhbW1hYmxlU3RhZ2U+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBQcm9ncmFtbWFibGVTdGFnZSYgcHJv
Z3JhbW1hYmxlU3RhZ2UpCiB7Ci0gICAgYXV0byBtb2R1bGUgPSBjb252ZXJ0U2hhZGVyTW9kdWxl
RnJvbUJhY2tpbmcocHJvZ3JhbW1hYmxlU3RhZ2UubW9kdWxlKTsKKyAgICBhdXRvKiBtb2R1bGUg
PSBjb252ZXJ0U2hhZGVyTW9kdWxlRnJvbUJhY2tpbmcocHJvZ3JhbW1hYmxlU3RhZ2UubW9kdWxl
KTsKICAgICBpZiAoIW1vZHVsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNj
cmlwdG9yLmNwcAppbmRleCAzYThlMzcxYzU1ZjY4ZTcyYjU1YWQ1ZDM2YjdjMGVjYzdjMmIzNmZi
Li5hMDc2MTgyMzEzOWUyOTJmMDUwNmQ3ZGZlNmJhNjdjNWI5MDkxNDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUXVlcnlTZXREZXNjcmlwdG9y
LmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVRdWVyeVNldERlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxRdWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldERlc2Ny
aXB0b3ImIHF1ZXJ5U2V0RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9C
YWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFz
ZSY+KHF1ZXJ5U2V0RGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHF1ZXJ5U2V0
RGVzY3JpcHRvci50eXBlLCBxdWVyeVNldERlc2NyaXB0b3IuY291bnQsIHF1ZXJ5U2V0RGVzY3Jp
cHRvci5waXBlbGluZVN0YXRpc3RpY3MgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpRdWVyeVNldERlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRGcm9tQmFja2luZyhjb25zdCBRdWVyeVNldERlc2NyaXB0b3ImIHF1ZXJ5U2V0RGVzY3JpcHRv
cikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29u
c3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihxdWVyeVNldERlc2NyaXB0b3IpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlw
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVE
ZXNjcmlwdG9yLmNwcAppbmRleCAwN2RlOTJlYzE2ZTQxMDI3ZWVhM2QxYjZiNjQ2OTczZWVmNGI4
YTZjLi5jOWExNzliMjUxM2Y2NWZkNTczMGJjMjYxNWU1YTBkYmVmOTU3N2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRs
ZURlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJCdW5kbGVEZXNjcmlwdG9y
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRGVzY3JpcHRvcikKK3sK
KyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6
V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpKTsK
KyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoKmJhc2UpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIHJlbmRlckJ1bmRs
ZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRp
Y19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4ocmVuZGVyQnVuZGxlRGVzY3JpcHRv
cikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5jcHAKaW5kZXggMjY3NDFlMmIx
ZmYzYmJiMzM3M2M0OTdlMDg1ZWExYzIyMzUwYzhhYi4uYTgzZWI5MjdiMzNiNWQ1ODZlYjgwZjRl
NjZkYzE4NmUxYTk4ZDE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuY3Bw
CkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYgcmVuZGVyQnVuZGxlRW5jb2RlckRl
c2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2Fz
dDxjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0xheW91dCY+KHJlbmRlckJ1bmRsZUVuY29k
ZXJEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgcmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3IuZGVwdGhSZWFkT25seSwgcmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3Iu
c3RlbmNpbFJlYWRPbmx5IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvciYgcmVu
ZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZy
b21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFJlbmRlclBhc3NMYXlvdXQmPihyZW5kZXJCdW5k
bGVFbmNvZGVyRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY3BwCmluZGV4
IDM4ODczOGI1MDlhYTRiNzE3NTcwODg3ZDA5NTI5OGNiNmRmNDI5YjIuLmM0NzUwYmY3ZjVlNjBk
ZjY5ZjY0NjYyNzQ5ZTg0NzUzZWEwYWMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5j
cHAKQEAgLTI5LDEzICsyOSw0MyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50JiByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50KQorewor
ICAgIGF1dG8gdmlldyA9IGNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGFzc0NvbG9yQXR0YWNobWVu
dC52aWV3KTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBXZWJHUFVJZGVudGlmaWVyIHJlc29sdmVUYXJnZXQ7CisgICAgaWYgKHJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQucmVzb2x2ZVRhcmdldCkgeworICAgICAgICByZXNvbHZlVGFyZ2V0ID0g
Y29udmVydFRvQmFja2luZygqcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5yZXNvbHZlVGFyZ2V0
KTsKKyAgICAgICAgaWYgKCFyZXNvbHZlVGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRvIGxvYWRWYWx1ZSA9IFdURjo6c3dpdGNoT24ocmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudC5sb2FkVmFsdWUsIFtdIChQQUw6OldlYkdQVTo6TG9hZE9w
IGxvYWRPcCkgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRP
cCwgVmVjdG9yPGRvdWJsZT4sIENvbG9yRGljdD4+IHsKKyAgICAgICAgcmV0dXJuIHsgeyBsb2Fk
T3AgfSB9OworICAgIH0sIFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91Ymxl
PiwgQ29sb3JEaWN0Pj4geworICAgICAgICByZXR1cm4geyB7IHZlY3RvciB9IH07CisgICAgfSwg
W3RoaXNdIChjb25zdCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0JiBjb2xvckRpY3QpIC0+IHN0ZDo6
b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rvcjxkb3VibGU+
LCBDb2xvckRpY3Q+PiB7CisgICAgICAgIGF1dG8gYmFja2luZ0NvbG9yRGljdCA9IGNvbnZlcnRU
b0JhY2tpbmcoY29sb3JEaWN0KTsKKyAgICAgICAgaWYgKCFiYWNraW5nQ29sb3JEaWN0KQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYWNraW5nQ29sb3JEaWN0KSB9IH07CisgICAgfSk7CisgICAgaWYgKCFsb2FkVmFsdWUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlc29s
dmVUYXJnZXQsIFdURk1vdmUoKmxvYWRWYWx1ZSksIHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQu
c3RvcmVPcCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFj
a2luZyhjb25zdCBSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50JiByZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50KQogewotICAgIGF1dG8gdmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5n
KHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQudmlldyk7CisgICAgYXV0byogdmlldyA9IGNvbnZl
cnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQudmlldyk7
CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC01MCwx
MSArODAsMTEgQEAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0NvbG9yQXR0
YWNobWVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDoKICAgICAgICAgcmV0dXJuIHsgeyBs
b2FkT3AgfSB9OwogICAgIH0sIFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91
YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4+IHsKICAgICAgICAgcmV0dXJuIHsgeyB2ZWN0
b3IgfSB9OwotICAgIH0sIFt0aGlzXSAoY29uc3QgQ29sb3JEaWN0JiBvcmlnaW5Db2xvckRpY3Qp
IC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3AsIFZlY3Rv
cjxkb3VibGU+LCBQQUw6OldlYkdQVTo6Q29sb3JEaWN0Pj4gewotICAgICAgICBhdXRvIGNvbG9y
RGljdCA9IGNvbnZlcnRGcm9tQmFja2luZyhvcmlnaW5Db2xvckRpY3QpOwotICAgICAgICBpZiAo
IWNvbG9yRGljdCkKKyAgICB9LCBbdGhpc10gKGNvbnN0IENvbG9yRGljdCYgY29sb3JEaWN0KSAt
PiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4+IHsKKyAgICAgICAgYXV0byBiYWNraW5n
Q29sb3JEaWN0ID0gY29udmVydEZyb21CYWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlmICgh
YmFja2luZ0NvbG9yRGljdCkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqY29sb3JEaWN0KSB9IH07CisgICAgICAgIHJldHVybiB7
IHsgV1RGTW92ZSgqYmFja2luZ0NvbG9yRGljdCkgfSB9OwogICAgIH0pOwogICAgIGlmICghbG9h
ZFZhbHVlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5jcHAKaW5kZXggMzhjYTQyZjJkMzc2MjI4NWYyMmZmNjIwMWNi
YWM0NGY4OWUxMDM5OC4uMzY2NDFjZDY3NzY4MGM4ZmVjZjMxYmZlNjkzZjE5NTAzODEyYWFiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuY3BwCkBAIC0yOSwxMyAr
MjksMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBh
c3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQ+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCYgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnQpCit7CisgICAgYXV0byB2aWV3ID0gY29udmVydFRvQmFja2luZyhyZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudC52aWV3KTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IHZpZXcsIHJlbmRlclBhc3NEZXB0
aFN0ZW5jaWxBdHRhY2htZW50LmRlcHRoTG9hZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2ls
QXR0YWNobWVudC5kZXB0aFN0b3JlT3AsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmRlcHRoUmVhZE9ubHksIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxM
b2FkVmFsdWUsIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LnN0ZW5jaWxTdG9yZU9w
LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsUmVhZE9ubHkgfSB9Owor
fQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0
YWNobWVudD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50JiByZW5kZXJQYXNzRGVwdGhTdGVu
Y2lsQXR0YWNobWVudCkKIHsKLSAgICBhdXRvIHZpZXcgPSBjb252ZXJ0VGV4dHVyZVZpZXdGcm9t
QmFja2luZyhyZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC52aWV3KTsKKyAgICBhdXRv
KiB2aWV3ID0gY29udmVydFRleHR1cmVWaWV3RnJvbUJhY2tpbmcocmVuZGVyUGFzc0RlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQudmlldyk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcAppbmRleCAwNGJkZmNhMDU3ODM5YzVhZTM5
OWNiM2IwOWNiNTc2YmI5YmI2ODBlLi42MTc2M2Y5OGJiNGZkNjk1ZWY0ZTJiMjI1ZTkxODkxNGYy
OWFiOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVu
ZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSw0OCBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNz
RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yJiByZW5kZXJQYXNzRGVzY3JpcHRv
cikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9y
KSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
VmVjdG9yPFJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQ+IGNvbG9yQXR0YWNobWVudHM7CisgICAg
Y29sb3JBdHRhY2htZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlbmRlclBhc3NEZXNjcmlw
dG9yLmNvbG9yQXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNvbG9y
QXR0YWNobWVudCA6IHJlbmRlclBhc3NEZXNjcmlwdG9yLmNvbG9yQXR0YWNobWVudHMpIHsKKyAg
ICAgICAgYXV0byBiYWNraW5nQ29sb3JBdHRhY2htZW50ID0gY29udmVydFRvQmFja2luZyhjb2xv
ckF0dGFjaG1lbnQpOworICAgICAgICBpZiAoIWJhY2tpbmdDb2xvckF0dGFjaG1lbnQpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBjb2xvckF0dGFjaG1lbnRzLnVu
Y2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpiYWNraW5nQ29sb3JBdHRhY2htZW50KSk7CisgICAgfQor
CisgICAgYXV0byBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9wdGlv
bmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiB7CisgICAgICAgIGlmIChyZW5k
ZXJQYXNzRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWxBdHRhY2htZW50KQorICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb0JhY2tpbmcoKnJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAg
aWYgKHJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgJiYgIWRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBX
ZWJHUFVJZGVudGlmaWVyIG9jY2x1c2lvblF1ZXJ5U2V0OworICAgIGlmIChyZW5kZXJQYXNzRGVz
Y3JpcHRvci5vY2NsdXNpb25RdWVyeVNldCkgeworICAgICAgICBvY2NsdXNpb25RdWVyeVNldCA9
IGNvbnZlcnRUb0JhY2tpbmcoKnJlbmRlclBhc3NEZXNjcmlwdG9yLm9jY2x1c2lvblF1ZXJ5U2V0
KTsKKyAgICAgICAgaWYgKCFvY2NsdXNpb25RdWVyeVNldCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgYXV0byB0aW1lc3RhbXBXcml0ZXMgPSBjb252ZXJ0
VG9CYWNraW5nKHJlbmRlclBhc3NEZXNjcmlwdG9yLnRpbWVzdGFtcFdyaXRlcyk7CisgICAgaWYg
KCF0aW1lc3RhbXBXcml0ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKGNvbG9yQXR0YWNobWVudHMpLCBXVEZN
b3ZlKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpLCBvY2NsdXNpb25RdWVyeVNldCwgV1RGTW92ZSgq
dGltZXN0YW1wV3JpdGVzKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJl
bmRlclBhc3NEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgUmVuZGVyUGFzc0Rlc2NyaXB0b3ImIHJlbmRlclBhc3NEZXNjcmlwdG9y
KQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25z
dCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBhc3NEZXNjcmlwdG9yKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0xheW91dC5j
cHAKaW5kZXggZGI0ODcxZjBiNTk4OTRhMGU4ZTY2N2FlOGI5NDZiYzczNzkyNjE2Ny4uYzBlOGI3
MmUyZmQxNDg4Yjc2NjFmZGUyM2FmMjNhZjQ2YmZjZjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmNwcApAQCAtMjks
MTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0
aW9uYWw8UmVuZGVyUGFzc0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQmIHJlbmRlclBhc3NM
YXlvdXQpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxj
b25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJQYXNzTGF5b3V0
KSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgcmVuZGVyUGFzc0xheW91dC5jb2xvckZvcm1hdHMs
IHJlbmRlclBhc3NMYXlvdXQuZGVwdGhTdGVuY2lsRm9ybWF0LCByZW5kZXJQYXNzTGF5b3V0LnNh
bXBsZUNvdW50IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFz
c0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFJlbmRlclBhc3NMYXlvdXQmIHJlbmRlclBhc3NMYXlvdXQpCiB7CiAgICAgYXV0byBiYXNl
ID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JC
YXNlJj4ocmVuZGVyUGFzc0xheW91dCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCmlu
ZGV4IDE2ODQ3ZDE1MzM5YzQyNjBmNGE4NWM2ZWI1YmYwOGJjOGE0OGFmODYuLjJiNjFjYjNkMTVh
Mzg4NzYzZDljMmUwMzhjNzZmMmQwY2ZiNDY0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRl
cy5jcHAKQEAgLTI5LDEwICsyOSwzMyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZSYgcmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlKQorewor
ICAgIGF1dG8gcXVlcnlTZXQgPSBjb252ZXJ0VG9CYWNraW5nKHJlbmRlclBhc3NUaW1lc3RhbXBX
cml0ZS5xdWVyeVNldCk7CisgICAgaWYgKCFxdWVyeVNldCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgcXVlcnlTZXQsIHJlbmRlclBhc3NUaW1lc3RhbXBX
cml0ZS5xdWVyeUluZGV4LCByZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUubG9jYXRpb24gfSB9Owor
fQorCitzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXM+IENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQ
YXNzVGltZXN0YW1wV3JpdGVzJiByZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzKQoreworICAgIFZl
Y3RvcjxSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGU+IHRpbWVzdGFtcFdyaXRlczsKKyAgICB0aW1l
c3RhbXBXcml0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZW5kZXJQYXNzVGltZXN0YW1wV3Jp
dGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0aW1lc3RhbXBXcml0ZSA6IHJlbmRl
clBhc3NUaW1lc3RhbXBXcml0ZXMpIHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRUaW1lc3RhbXBX
cml0ZSA9IGNvbnZlcnRUb0JhY2tpbmcodGltZXN0YW1wV3JpdGUpOworICAgICAgICBpZiAoIWNv
bnZlcnRlZFRpbWVzdGFtcFdyaXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgdGltZXN0YW1wV3JpdGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpjb252ZXJ0
ZWRUaW1lc3RhbXBXcml0ZSkpOworICAgIH0KKyAgICByZXR1cm4gdGltZXN0YW1wV3JpdGVzOwor
fQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGU+
IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5k
ZXJQYXNzVGltZXN0YW1wV3JpdGUmIHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZSkKIHsKICAgICBh
dXRvKiBxdWVyeVNldCA9IGNvbnZlcnRRdWVyeVNldEZyb21CYWNraW5nKHJlbmRlclBhc3NUaW1l
c3RhbXBXcml0ZS5xdWVyeVNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCmluZGV4IGYz
MWM0NmYwNWZhMTg2YjcyZGNkYzcwNWI4MTY4MjY0MGY5NzJmNDguLjAxZDkwYzhhMTc5ZjAzMGI5
OTEyZDNlZmJmOTYyMzkzMGQzMjgxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuY3BwCkBA
IC0yOSwxMCArMjksNTMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJX
ZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCitzdGQ6Om9wdGlvbmFsPFJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcj4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYgcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yKQoreworICAgIGF1dG8g
YmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6OlBp
cGVsaW5lRGVzY3JpcHRvckJhc2UmPihyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKKyAgICBp
ZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIHZlcnRl
eCA9IGNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnZlcnRleCk7Cisg
ICAgaWYgKCF2ZXJ0ZXgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFByaW1pdGl2ZVN0YXRlPiBwcmltaXRpdmU7CisgICAgaWYgKHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5wcmltaXRpdmUpIHsKKyAgICAgICAgcHJpbWl0aXZlID0gY29udmVydFRv
QmFja2luZygqcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnByaW1pdGl2ZSk7CisgICAgICAgIGlm
ICghcHJpbWl0aXZlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBzdGQ6Om9wdGlvbmFsPERlcHRoU3RlbmNpbFN0YXRlPiBkZXB0aFN0ZW5jaWw7CisgICAg
aWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5kZXB0aFN0ZW5jaWwpIHsKKyAgICAgICAgZGVw
dGhTdGVuY2lsID0gY29udmVydFRvQmFja2luZygqcmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLmRl
cHRoU3RlbmNpbCk7CisgICAgICAgIGlmICghZGVwdGhTdGVuY2lsKQorICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPE11bHRpc2FtcGxl
U3RhdGU+IG11bHRpc2FtcGxlOworICAgIGlmIChyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IubXVs
dGlzYW1wbGUpIHsKKyAgICAgICAgbXVsdGlzYW1wbGUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IubXVsdGlzYW1wbGUpOworICAgICAgICBpZiAoIW11bHRpc2Ft
cGxlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBhdXRv
IGZyYWdtZW50ID0gKFsmXSAoKSAtPiBzdGQ6Om9wdGlvbmFsPEZyYWdtZW50U3RhdGU+IHsKKyAg
ICAgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudCkKKyAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9CYWNraW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZnJhZ21l
bnQpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0pKCk7CisgICAgaWYgKHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudCAmJiAhZnJhZ21lbnQpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZN
b3ZlKCp2ZXJ0ZXgpLCBXVEZNb3ZlKHByaW1pdGl2ZSksIFdURk1vdmUoZGVwdGhTdGVuY2lsKSwg
V1RGTW92ZShtdWx0aXNhbXBsZSksIFdURk1vdmUoZnJhZ21lbnQpIH0gfTsKK30KKwogc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVyUGlwZWxpbmVE
ZXNjcmlwdG9yJiByZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0g
Y29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBpcGVsaW5lRGVzY3JpcHRvckJh
c2UmPihyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKaW5k
ZXggZmYxNGU3OTgyYzQ0M2IxYzQwZTJlMGMwOTc4YjcxYWQ3NDE3ZTc2Ni4uYjIyYjFiZmY1ZTRk
ZmVjNDZhZGNlZTNjNzFmNDljMDliNmJjYzlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAKQEAg
LTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
UmVxdWVzdEFkYXB0ZXJPcHRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAK
K3N0ZDo6b3B0aW9uYWw8UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVxdWVzdEFkYXB0ZXJP
cHRpb25zJiByZXF1ZXN0QWRhcHRlck9wdGlvbnMpCit7CisgICAgcmV0dXJuIHsgeyByZXF1ZXN0
QWRhcHRlck9wdGlvbnMucG93ZXJQcmVmZXJlbmNlLCByZXF1ZXN0QWRhcHRlck9wdGlvbnMuZm9y
Y2VGYWxsYmFja0FkYXB0ZXIgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpS
ZXF1ZXN0QWRhcHRlck9wdGlvbnM+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIHJlcXVlc3RBZGFwdGVyT3B0
aW9ucykKIHsKICAgICByZXR1cm4geyB7IHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5wb3dlclByZWZl
cmVuY2UsIHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlciB9IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRp
bmdMYXlvdXQuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJC
aW5kaW5nTGF5b3V0LmNwcAppbmRleCAzOTg0Mjc0OTRiNDU1ODgxYjM0NWI3NDAzNjEwZDg3MDJm
MjdjZjQ4Li45ZjFlYWZkZmVjNDY3ZDM3OGE4ZDkwMjMxMzlkNzk0NzY5OGRlOTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmlu
ZGluZ0xheW91dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxTYW1wbGVyQmluZGluZ0xheW91dD4gQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6
OlNhbXBsZXJCaW5kaW5nTGF5b3V0JiBzYW1wbGVyQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1
cm4geyB7IHNhbXBsZXJCaW5kaW5nTGF5b3V0LnR5cGUgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpTYW1wbGVyQmluZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFNhbXBsZXJCaW5kaW5nTGF5b3V0JiBzYW1w
bGVyQmluZGluZ0xheW91dCkKIHsKICAgICByZXR1cm4geyB7IHNhbXBsZXJCaW5kaW5nTGF5b3V0
LnR5cGUgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVNhbXBsZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVTYW1wbGVyRGVzY3JpcHRvci5jcHAKaW5kZXggY2Y2NGFhZDBmZjNjYjFlMDI1MGM3MWY0NDIy
YmM3MGE2MmI1NmEzNC4uZjI3MWZiZTZlZjhhNzZjYzNiNDJhM2I0YmU3YmZmZTkxMzgyOWFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNj
cmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxl
ckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U2FtcGxlckRlc2NyaXB0b3I+IENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTYW1w
bGVyRGVzY3JpcHRvciYgc2FtcGxlckRlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29u
dmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3Jp
cHRvckJhc2UmPihzYW1wbGVyRGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHNh
bXBsZXJEZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSwgc2FtcGxlckRlc2NyaXB0b3IuYWRkcmVzc01v
ZGVWLCBzYW1wbGVyRGVzY3JpcHRvci5hZGRyZXNzTW9kZVcsIHNhbXBsZXJEZXNjcmlwdG9yLm1h
Z0ZpbHRlciwgc2FtcGxlckRlc2NyaXB0b3IubWluRmlsdGVyLCBzYW1wbGVyRGVzY3JpcHRvci5t
aXBtYXBGaWx0ZXIsIHNhbXBsZXJEZXNjcmlwdG9yLmxvZE1pbkNsYW1wLCBzYW1wbGVyRGVzY3Jp
cHRvci5sb2RNYXhDbGFtcCwgc2FtcGxlckRlc2NyaXB0b3IuY29tcGFyZSwgc2FtcGxlckRlc2Ny
aXB0b3IubWF4QW5pc290cm9weSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNhbXBsZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgU2FtcGxlckRlc2NyaXB0b3ImIHNhbXBsZXJEZXNjcmlwdG9yKQogewog
ICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmpl
Y3REZXNjcmlwdG9yQmFzZSY+KHNhbXBsZXJEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRv
ci5jcHAKaW5kZXggZjU0YWM3ZGQ0ZmNiZWFlMTUwOGJhODc0YWMyZmM5OWQxZWNjNjdhMi4uMjZk
YmQ2NzhlZWQ2OWVjN2E1MDM1NGQ1ODdjZGRlYzZmYWNlZGI3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlw
dG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZURlc2NyaXB0b3ImIHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCit7CisgICAgYXV0
byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6
T2JqZWN0RGVzY3JpcHRvckJhc2UmPihzaGFkZXJNb2R1bGVEZXNjcmlwdG9yKSk7CisgICAgaWYg
KCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCpiYXNlKSwgc2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jb2RlIH0gfTsKK30KKwogc3Rk
OjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvcj4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFNoYWRlck1vZHVsZURl
c2NyaXB0b3ImIHNoYWRlck1vZHVsZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29u
dmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4o
c2hhZGVyTW9kdWxlRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3BwCmluZGV4IDE3YmQ4NTdjNjhlY2Uw
MTA0YjlhNmMyMmVlNWYyNzVhYmJkNTQ1OWQuLjgxMTQ4OTFiMjBlYjE0YzcwMjg2MzJhYzhlMDU4
ZDM0MzU4Y2FmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVTdGVuY2lsRmFjZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3RlbmNpbEZhY2VTdGF0ZS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFN0ZW5jaWxGYWNlU3RhdGU+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpTdGVuY2lsRmFjZVN0YXRlJiBzdGVuY2lsRmFjZVN0YXRlKQoreworICAgIHJldHVybiB7
IHsgc3RlbmNpbEZhY2VTdGF0ZS5jb21wYXJlLCBzdGVuY2lsRmFjZVN0YXRlLmZhaWxPcCwgc3Rl
bmNpbEZhY2VTdGF0ZS5kZXB0aEZhaWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5wYXNzT3AgfSB9Owor
fQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlPiBDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU3RlbmNpbEZhY2VT
dGF0ZSYgc3RlbmNpbEZhY2VTdGF0ZSkKIHsKICAgICByZXR1cm4geyB7IHN0ZW5jaWxGYWNlU3Rh
dGUuY29tcGFyZSwgc3RlbmNpbEZhY2VTdGF0ZS5mYWlsT3AsIHN0ZW5jaWxGYWNlU3RhdGUuZGVw
dGhGYWlsT3AsIHN0ZW5jaWxGYWNlU3RhdGUucGFzc09wIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmlu
ZGluZ0xheW91dC5jcHAKaW5kZXggYjNhNmYwMjljYjgzNTYzOGY1YTEyZmU0OTcxN2JjMjY3NzA5
NjY2NC4uMmRjZThiZWUzZThiOWY1ZjBhMzE4MTQ4MmIzNzlkNjk2MzY2YWQxNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGlu
Z0xheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0b3Jh
Z2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3RvcmFn
ZVRleHR1cmVCaW5kaW5nTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0JiBz
dG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQpCit7CisgICAgcmV0dXJuIHsgeyBzdG9yYWdlVGV4
dHVyZUJpbmRpbmdMYXlvdXQuYWNjZXNzLCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuZm9y
bWF0LCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQudmlld0RpbWVuc2lvbiB9IH07Cit9CisK
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dD4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFN0b3Jh
Z2VUZXh0dXJlQmluZGluZ0xheW91dCYgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0KQogewog
ICAgIHJldHVybiB7IHsgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmFjY2Vzcywgc3RvcmFn
ZVRleHR1cmVCaW5kaW5nTGF5b3V0LmZvcm1hdCwgc3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
LnZpZXdEaW1lbnNpb24gfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5jcHAKaW5kZXggZDBkNmRjMmMzYTZmNmI1NDg2
YWE1OWRjN2JkNmM2NDQ1NTJjYjk0MS4uMjUxOGJmNDNhZDBlMDkwMjRjNjRjZWI1NjE2MDNlNGY3
MjBjNzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1
cHBvcnRlZEZlYXR1cmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVU3VwcG9ydGVkRmVhdHVyZXMuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZlYXR1cmVzLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkRmVhdHVyZXM+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYgc3VwcG9ydGVkRmVhdHVyZXMpCit7CisgICAgcmV0dXJu
IHsgeyBzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcygpIH0gfTsKK30KKwogUmVmUHRyPFBBTDo6
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29u
dmVydEZyb21CYWNraW5nKGNvbnN0IFN1cHBvcnRlZEZlYXR1cmVzJiBzdXBwb3J0ZWRGZWF0dXJl
cykKIHsKICAgICByZXR1cm4geyBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM6OmNyZWF0
ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRMaW1pdHMuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5jcHAKaW5kZXggOGUyYzA0MWY5
YzA2M2IxM2UwOWEzNzVlMDY1ZmU5ZmYxYjYwODY1Yi4uNjA4NzQzMDJlOTNhNzc4ZDY0ZjE1NTQ1
ZmNmZTUxY2RlYzY4YmNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVN1cHBvcnRlZExpbWl0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5jcHAKQEAgLTI5LDEwICsyOSw0MyBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGltaXRzLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8U3VwcG9ydGVkTGltaXRz
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6U3VwcG9ydGVkTGltaXRzJiBzdXBwb3J0ZWRMaW1pdHMpCit7CisgICAgcmV0dXJuIHsg
eworICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFEKCksCisgICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQoKSwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCgpLAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhCaW5kR3JvdXBzKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9y
bUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQoKSwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSgpLAorICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSgpLAorICAg
ICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplKCksCisgICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUoKSwKKyAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwKKyAg
ICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQoKSwK
KyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlcnMoKSwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heFZlcnRleEF0dHJpYnV0ZXMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhJbnRlclN0YWdlU2hhZGVyQ29tcG9uZW50cygpLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VTaXplKCksCisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAoKSwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCgpLAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVooKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKCksCisgICAgfSB9OworfQorCiBSZWZQdHI8
UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6
Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFN1cHBvcnRlZExpbWl0cyYgc3VwcG9ydGVkTGltaXRz
KQogewogICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM6OmNyZWF0ZSgK
QEAgLTYxLDcgKzk0LDggQEAgUmVmUHRyPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+IENv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2kKICAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWCwKICAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSwKICAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKLSAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1
dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKSB9OworICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4
Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24KKyAgICApIH07CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKaW5kZXggNTVkNDUxMzBmNTM1ZDFkNGVhOTAw
N2IyZGMxNjFiYWE3MzdiMDk1Ni4uOTk1NGJiNzdiMmVkNzVjNGE3MGMyNDQxZjc0MjQ4MmMzZWZm
NGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1
cmVCaW5kaW5nTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5b3V0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8VGV4dHVyZUJpbmRp
bmdMYXlvdXQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpUZXh0dXJlQmluZGluZ0xheW91dCYgdGV4dHVyZUJpbmRpbmdMYXlvdXQp
Cit7CisgICAgcmV0dXJuIHsgeyB0ZXh0dXJlQmluZGluZ0xheW91dC5zYW1wbGVUeXBlLCB0ZXh0
dXJlQmluZGluZ0xheW91dC52aWV3RGltZW5zaW9uLCB0ZXh0dXJlQmluZGluZ0xheW91dC5tdWx0
aXNhbXBsZWQgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlQmlu
ZGluZ0xheW91dD4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5n
KGNvbnN0IFRleHR1cmVCaW5kaW5nTGF5b3V0JiB0ZXh0dXJlQmluZGluZ0xheW91dCkKIHsKICAg
ICByZXR1cm4geyB7IHRleHR1cmVCaW5kaW5nTGF5b3V0LnNhbXBsZVR5cGUsIHRleHR1cmVCaW5k
aW5nTGF5b3V0LnZpZXdEaW1lbnNpb24sIHRleHR1cmVCaW5kaW5nTGF5b3V0Lm11bHRpc2FtcGxl
ZCB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4
dHVyZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRl
eHR1cmVEZXNjcmlwdG9yLmNwcAppbmRleCA1ZGYzMTY3YjlhNmQyMmIyMmRhNmE4NGQ4ZjRkYzM0
NDkxNDliMGE5Li5iZjZiNGQzNTYyZTcwNzhhMWE0ZTU0YWNkZWRjMDVkOTBkNWYxZWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVz
Y3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxUZXh0dXJlRGVzY3JpcHRvcj4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVE
ZXNjcmlwdG9yJiB0ZXh0dXJlRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0
VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9y
QmFzZSY+KHRleHR1cmVEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBzaXplID0gY29udmVydFRvQmFja2luZyh0ZXh0
dXJlRGVzY3JpcHRvci5zaXplKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKCpzaXpl
KSwgdGV4dHVyZURlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZURlc2NyaXB0b3Iuc2Ft
cGxlQ291bnQsIHRleHR1cmVEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZURlc2NyaXB0b3Iu
Zm9ybWF0LCB0ZXh0dXJlRGVzY3JpcHRvci51c2FnZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlRleHR1cmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVGV4dHVyZURlc2NyaXB0b3ImIHRleHR1cmVEZXNj
cmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2Fz
dDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVEZXNjcmlwdG9yKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3IuY3BwCmluZGV4IGQxY2M1NTFjYjc3MDUxNjk2ZmU3OWRiMDRlYjQ5YTQ5NDg0
YjQ2MDcuLjc2YWM2YTU4MWE3ZmY2NGRmYzMwYjk4M2NiYjc0NDg3MDg0NjU1MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFRleHR1cmVWaWV3RGVzY3JpcHRvcj4g
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvciYgdGV4dHVyZVZpZXdEZXNjcmlwdG9yKQoreworICAg
IGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJH
UFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4odGV4dHVyZVZpZXdEZXNjcmlwdG9yKSk7CisgICAg
aWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKCpiYXNlKSwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmZvcm1hdCwgdGV4dHVyZVZp
ZXdEZXNjcmlwdG9yLmRpbWVuc2lvbiwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLmFzcGVjdCwgdGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCwgdGV4dHVyZVZpZXdEZXNjcmlwdG9yLm1p
cExldmVsQ291bnQsIHRleHR1cmVWaWV3RGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciwgdGV4dHVy
ZVZpZXdEZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFRleHR1cmVWaWV3RGVzY3JpcHRvciYgdGV4
dHVyZVZpZXdEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2lu
ZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHRleHR1cmVWaWV3RGVz
Y3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVZhbGlkYXRpb25FcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
VmFsaWRhdGlvbkVycm9yLmNwcAppbmRleCAyYjFiY2ZhZDA0MzgyN2U5NDViMjVkNGVhMDI1Mjdj
NjQwYjk2OGE0Li4wNjIyNmU1ZjQ5YzQ2MTVlYTVhNGU3ZWUzMmZhYmNiOGFmMzE0NmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVy
cm9yLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVWYWxpZGF0aW9uRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxWYWxpZGF0aW9uRXJyb3I+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJyb3Im
IHZhbGlkYXRpb25FcnJvcikKK3sKKyAgICByZXR1cm4geyB7IHZhbGlkYXRpb25FcnJvci5tZXNz
YWdlKCkgfSB9OworfQorCiBSZWZQdHI8UEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcj4gQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFZhbGlkYXRp
b25FcnJvciYgdmFsaWRhdGlvbkVycm9yKQogewogICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpW
YWxpZGF0aW9uRXJyb3I6OmNyZWF0ZSh2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5j
cHAKaW5kZXggMTVlZDVkYjY5M2UwMzVkZWMwMDA3MDhhNTg0OGQwNTNjMDZmMzlmZS4uYzcxOGJl
MTU0MWU5N2EyZWNlZDNjMjE0N2ZiM2E3MDA4ZTAxNWVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAKQEAgLTI5LDEw
ICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVmVydGV4
QXR0cmlidXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8VmVydGV4QXR0cmlidXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6VmVydGV4QXR0cmlidXRlJiB2ZXJ0ZXhBdHRyaWJ1dGUp
Cit7CisgICAgcmV0dXJuIHsgeyB2ZXJ0ZXhBdHRyaWJ1dGUuZm9ybWF0LCB2ZXJ0ZXhBdHRyaWJ1
dGUub2Zmc2V0LCB2ZXJ0ZXhBdHRyaWJ1dGUuc2hhZGVyTG9jYXRpb24gfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpWZXJ0ZXhBdHRyaWJ1dGU+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIHZlcnRl
eEF0dHJpYnV0ZSkKIHsKICAgICByZXR1cm4geyB7IHZlcnRleEF0dHJpYnV0ZS5mb3JtYXQsIHZl
cnRleEF0dHJpYnV0ZS5vZmZzZXQsIHZlcnRleEF0dHJpYnV0ZS5zaGFkZXJMb2NhdGlvbiB9IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QnVm
ZmVyTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhC
dWZmZXJMYXlvdXQuY3BwCmluZGV4IDg1NDgyZDA2NWFlYTVmOGI2NzJlNzQ2MTc4ZjZkOGNkZjIx
YzcwNzEuLjU2YWY1YmUxYjExMmNmMWQ0NWE2ZDYwZmY4YzEwYmQyNzkzODBiNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJM
YXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMjUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFZlcnRleEJ1ZmZlckxheW91dD4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZlcnRleEJ1
ZmZlckxheW91dCYgdmVydGV4QnVmZmVyTGF5b3V0KQoreworICAgIFZlY3RvcjxWZXJ0ZXhBdHRy
aWJ1dGU+IGF0dHJpYnV0ZXM7CisgICAgYXR0cmlidXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHZlcnRleEJ1ZmZlckxheW91dC5hdHRyaWJ1dGVzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBh
dXRvJiBhdHRyaWJ1dGUgOiB2ZXJ0ZXhCdWZmZXJMYXlvdXQuYXR0cmlidXRlcykgeworICAgICAg
ICBhdXRvIGNvbnZlcnRlZEF0dHJpYnV0ZSA9IGNvbnZlcnRUb0JhY2tpbmcoYXR0cmlidXRlKTsK
KyAgICAgICAgaWYgKCFjb252ZXJ0ZWRBdHRyaWJ1dGUpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICBhdHRyaWJ1dGVzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKCpj
b252ZXJ0ZWRBdHRyaWJ1dGUpKTsKKyAgICB9CisKKyAgICByZXR1cm4geyB7IHZlcnRleEJ1ZmZl
ckxheW91dC5hcnJheVN0cmlkZSwgdmVydGV4QnVmZmVyTGF5b3V0LnN0ZXBNb2RlLCBXVEZNb3Zl
KGF0dHJpYnV0ZXMpIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VmVydGV4
QnVmZmVyTGF5b3V0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgVmVydGV4QnVmZmVyTGF5b3V0JiB2ZXJ0ZXhCdWZmZXJMYXlvdXQpCiB7CiAgICAg
VmVjdG9yPFBBTDo6V2ViR1BVOjpWZXJ0ZXhBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleFN0YXRlLmNwcAppbmRleCAz
YjI0MjgxNzI5ZWZjYWZjODkyNzlhNjVhNDAzN2M5OTUyMDAyOGY2Li5iN2VlZWRjOGNmNzE5NDE0
ODIzYWY3MGZiY2FkMjliNDY5OTI1Y2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwzMiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxWZXJ0ZXhTdGF0ZT4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlZl
cnRleFN0YXRlJiB2ZXJ0ZXhTdGF0ZSkKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSY+KHZl
cnRleFN0YXRlKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8VmVydGV4QnVmZmVyTGF5b3V0Pj4gYnVmZmVy
czsKKyAgICBidWZmZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmVydGV4U3RhdGUuYnVmZmVy
cy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgYnVmZmVyIDogdmVydGV4U3RhdGUuYnVm
ZmVycykgeworICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAgICAgICBhdXRvIGNvbnZlcnRl
ZEJ1ZmZlciA9IGNvbnZlcnRUb0JhY2tpbmcoKmJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIWNv
bnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICAgICAgYnVmZmVycy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShjb252ZXJ0ZWRCdWZmZXIp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBidWZmZXJzLnVuY2hlY2tlZEFwcGVuZChz
dGQ6Om51bGxvcHQpOworICAgIH0KKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdU
Rk1vdmUoYnVmZmVycykgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpWZXJ0
ZXhTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IFZlcnRleFN0YXRlJiB2ZXJ0ZXhTdGF0ZSkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0
RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUHJvZ3JhbW1hYmxlU3RhZ2UmPih2ZXJ0ZXhT
dGF0ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5jcHAKaW5kZXggZGE0YmQx
MTBiYzM3ZmEwYWIyMjU5Zjc3ODFmMGFjMzlmN2ZkNDE3Mi4uNTkwOGU4YmZmNGRlNzc0Y2IwOWY0
OTA3MjRlYjY4YjEyM2I1NWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRhcHRlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHku
Y3BwCkBAIC0yOCwxMyArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlJlbW90ZUFkYXB0ZXJNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlJlbW90ZURldmljZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQWRhcHRlclByb3h5OjpSZW1vdGVBZGFw
dGVyUHJveHkoU3RyaW5nJiYgbmFtZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBm
ZWF0dXJlcywgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFs
bGJhY2tBZGFwdGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0Nv
bnRleHQpCitSZW1vdGVBZGFwdGVyUHJveHk6OlJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBu
YW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQ
VTo6U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIFJlbW90
ZUdQVVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogQWRhcHRlcihX
VEZNb3ZlKG5hbWUpLCBmZWF0dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlcikKKyAgICAs
IG1fYmFja2luZyhpZGVudGlmaWVyKQogICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApA
QCAtNDQsOCArNDgsNDggQEAgUmVtb3RlQWRhcHRlclByb3h5Ojp+UmVtb3RlQWRhcHRlclByb3h5
KCkKIAogdm9pZCBSZW1vdGVBZGFwdGVyUHJveHk6OnJlcXVlc3REZXZpY2UoY29uc3QgUEFMOjpX
ZWJHUFU6OkRldmljZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChS
ZWY8UEFMOjpXZWJHUFU6OkRldmljZT4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGRlc2NyaXB0b3IpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBj
b252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7Cisg
ICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIFN1cHBvcnRl
ZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVzOworICAgIFN1cHBvcnRlZExpbWl0cyBzdXBwb3J0
ZWRMaW1pdHM7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90
ZUFkYXB0ZXI6OlJlcXVlc3REZXZpY2UoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIp
LCB7IHN1cHBvcnRlZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMgfSk7CisgICAgaWYgKCFzZW5k
UmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1
cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBw
b3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOworICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRz
ID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6Y3JlYXRlKAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4VGV4dHVyZURpbWVuc2lvbjJELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjNELAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5
ZXJzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4QmluZEdyb3VwcywKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAor
ICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxp
bmVMYXlvdXQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJT
aGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVy
U3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRl
clN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hh
ZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNo
YWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRp
bmdTaXplLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdT
aXplLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdu
bWVudCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGln
bm1lbnQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJzLAorICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QXR0cmlidXRlcywKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3RyaWRlLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVudHMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNpemUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3JrZ3JvdXAsCisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21w
dXRlV29ya2dyb3VwU2l6ZVosCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29y
a2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICk7CisgICAgY2FsbGJhY2soUmVtb3RlRGV2aWNlUHJv
eHk6OmNyZWF0ZShXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzKSwgV1RGTW92ZShyZXN1
bHRTdXBwb3J0ZWRMaW1pdHMpLCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRl
bnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQWRh
cHRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVBZGFwdGVyUHJveHkuaAppbmRleCA4MzNiYjNlZTM1OWQxYmI4ODRiZjc5OWU5NTlh
ZmVhNTk0Nzc4NjM0Li45YzNkOTU3MTVmZjQxM2RiOWM1Mzk0MjVjN2I1OTZlZmUzNjY3OWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVBZGFwdGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlR1BVUHJveHkuaCIKICNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVBZGFwdGVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNCwyMCArMzUs
MjQgQEAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OworY2xhc3MgUmVtb3RlR1BVUHJveHk7CiAKIGNsYXNzIFJlbW90ZUFkYXB0ZXJQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QWRhcHRlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxSZW1vdGVBZGFwdGVyUHJveHk+IGNyZWF0ZShTdHJpbmcmJiBuYW1lLCBQQUw6
OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6U3VwcG9y
dGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90
ZUFkYXB0ZXJQcm94eT4gY3JlYXRlKFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0
ZWRGZWF0dXJlcyYgZmVhdHVyZXMsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmIGxpbWl0
cywgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlciwgUmVtb3RlR1BVUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVBZGFwdGVyUHJveHkoV1RGTW92ZShuYW1lKSwgZmVhdHVyZXMsIGxpbWl0cywgaXNGYWxsYmFj
a0FkYXB0ZXIsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUFkYXB0ZXJQcm94eShXVEZNb3ZlKG5hbWUpLCBmZWF0dXJlcywgbGlt
aXRzLCBpc0ZhbGxiYWNrQWRhcHRlciwgcGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
aWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUFkYXB0ZXJQcm94eSgp
OwogCisgICAgUmVtb3RlR1BVUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Cisg
ICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudDsgfQorCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0g
ICAgUmVtb3RlQWRhcHRlclByb3h5KFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0
ZWRGZWF0dXJlcyYsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmLCBib29sIGlzRmFsbGJh
Y2tBZGFwdGVyLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUFkYXB0ZXJQ
cm94eShTdHJpbmcmJiBuYW1lLCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmLCBQQUw6
OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzJiwgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlciwgUmVtb3Rl
R1BVUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlQWRhcHRlclByb3h5KGNvbnN0IFJlbW90ZUFkYXB0ZXJQcm94eSYpID0gZGVs
ZXRlOwogICAgIFJlbW90ZUFkYXB0ZXJQcm94eShSZW1vdGVBZGFwdGVyUHJveHkmJikgPSBkZWxl
dGU7CkBAIC01NSwxMyArNjAsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVBZGFwdGVyUHJveHkm
IG9wZXJhdG9yPShSZW1vdGVBZGFwdGVyUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJ
ZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAg
ICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMw
X3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9v
bCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1D
bGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMo
VCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICBy
ZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgIH0KIAogICAgIHZvaWQgcmVxdWVzdERldmljZShjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNl
RGVzY3JpcHRvciYsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkRldmljZT4m
Jik+JiYpIGZpbmFsOwogCiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6Oldl
YkdQVTo6RGV2aWNlPik+PiBtX2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9i
YWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlR1BVUHJveHk+IG1fcGFyZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91
dFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmNwcAppbmRleCAzZWIxN2FmODU4M2RmN2JiZGFm
YTQ2YzQ1ZTk3N2Q2MDkwNzMyNjNhLi5lOGIwMmYxOGEzYmRlNThlZWJmZTI2YjcxYTM2MWNmYmZl
Y2FhYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJv
eHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIlJlbW90ZUJpbmRHcm91cExheW91dE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAotUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OlJlbW90ZUJpbmRHcm91cExheW91dFBy
b3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAg
ICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitS
ZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2Jh
Y2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQz
LDcgKzQ2LDggQEAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6On5SZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eSgpCiAKIHZvaWQgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk6OnNldExhYmVs
SW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUJpbmRHcm91cExh
eW91dDo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlv
dXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaAppbmRleCBhYWY5NTcwY2IwMWU1ZTE4ZDczYzk2
NWE1NWNkN2M2NWFhZWIzMDdiLi5kNDdkN2VjNzBiOGE2ZDFmOWJhMTUwNzE4NTFiYmVjN2MyZDY5
YmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0Lmg+CiAKQEAg
LTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3Mg
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkJp
bmRHcm91cExheW91dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5PiBj
cmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdy
b3VwTGF5b3V0UHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJl
dHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUJpbmRHcm91
cExheW91dFByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
LCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KGNv
bnN0IFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQmlu
ZEdyb3VwTGF5b3V0UHJveHkoUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkmJikgPSBkZWxldGU7
CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eSYgb3BlcmF0b3I9KFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5JiYpID0gZGVsZXRlOwog
CiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5n
OyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2Vu
ZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBy
b290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFj
a2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5
bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsK
ICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94
eS5jcHAKaW5kZXggNzc4NDgxZTBmZDU4ODc2ODkzYzQyYzM1NTAwN2I3MWJmYjIwYjJlNS4uZmEw
MzdiMGExYTNlY2M4YTZjOTI4YmYyZjQ0NWY2NDQxYzk4YjFmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cFByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVCaW5kR3JvdXBNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUJpbmRHcm91cFByb3h5OjpSZW1vdGVCaW5kR3JvdXBQ
cm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0g
ICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
UmVtb3RlQmluZEdyb3VwUHJveHk6OlJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZURldmljZVBy
b3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50
aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBA
IFJlbW90ZUJpbmRHcm91cFByb3h5Ojp+UmVtb3RlQmluZEdyb3VwUHJveHkoKQogCiB2b2lkIFJl
bW90ZUJpbmRHcm91cFByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVCaW5kR3JvdXA6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKaW5kZXggNGRiZDM4MGQ4NmRh
MjhkNjhlZWM0MDI5MTNiMmE4NmFmMzE0MTMyOS4uOGRjYTEyYjhjNzE2YzIxODhlNmE4Y2U0MGE2
ODM0ZmRmZjkwZjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJpbmRHcm91cC5oPgogCkBAIC0zNiwxNyAr
MzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJp
bmRHcm91cFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQmluZEdyb3VwUHJveHk+IGNyZWF0ZShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVCaW5kR3JvdXBQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlQmluZEdyb3VwUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQmluZEdyb3VwUHJveHkocGFyZW50LCBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZUJpbmRHcm91cFByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0
dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQmlu
ZEdyb3VwUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVCaW5kR3Jv
dXBQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVCaW5kR3JvdXBQcm94eShjb25zdCBSZW1vdGVC
aW5kR3JvdXBQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90
ZUJpbmRHcm91cFByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6
CiAgICAgUmVtb3RlQmluZEdyb3VwUHJveHkmIG9wZXJhdG9yPShSZW1vdGVCaW5kR3JvdXBQcm94
eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNl
Y29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1v
dmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29u
bmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNr
aW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2Jh
Y2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QnVmZmVyUHJveHkuY3BwCmluZGV4IDdhMzBlYjQ2NDI1ZjU2MWYxMzc3MjhhOGU2ZmEwZWQ5Y2Fh
ZWMyYTYuLjhiODVkYzhmY2JmM2FiNmEwODI0M2ZmMWY5ZWY1YTRhYjgwNjdkYzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1
ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQnVmZmVyTWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVCdWZmZXJQcm94eTo6UmVtb3RlQnVmZmVyUHJveHko
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDog
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90
ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAg
ICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAg
ICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsMjkgKzQ2LDU1IEBAIFJlbW90ZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlQnVmZmVyUHJveHkoKQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5
OjptYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzIG1hcE1vZGVGbGFncywgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemU2ND4gc2l6ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKG1hcE1vZGVGbGFncyk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNl
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZGF0YTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlQnVmZmVyOjpNYXBBc3luYyhtYXBNb2RlRmxhZ3MsIG9mZnNldCwgc2l6ZSksIHsg
ZGF0YSB9KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisgICAgaWYgKCFkYXRh
KSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2RhdGEgPSBXVEZNb3ZlKGRhdGEpOworICAgIG1fbWFw
TW9kZUZsYWdzID0gbWFwTW9kZUZsYWdzOworICAgIGNhbGxiYWNrKCk7CiB9CiAKIGF1dG8gUmVt
b3RlQnVmZmVyUHJveHk6OmdldE1hcHBlZFJhbmdlKHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IHNpemUp
IC0+IE1hcHBlZFJhbmdlCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNpemUpOwotICAgIHJldHVybiB7IH07CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBl
cnJvciBoYW5kbGluZy4KKyAgICBpZiAoIW1fZGF0YSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGF1dG8gdXNlZE9mZnNldCA9IG9mZnNldC52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4geyBt
X2RhdGEtPmRhdGEoKSArIHVzZWRPZmZzZXQsIHNpemUudmFsdWVfb3IobV9kYXRhLT5zaXplKCkg
LSB1c2VkT2Zmc2V0KSB9OwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5Ojp1bm1hcCgpCiB7
CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICBpZiAoIW1fZGF0
YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7CisgICAgaWYg
KG1fbWFwTW9kZUZsYWdzICYgUEFMOjpXZWJHUFU6Ok1hcE1vZGU6OldSSVRFKQorICAgICAgICBk
YXRhID0gV1RGTW92ZSgqbV9kYXRhKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVCdWZmZXI6OlVubWFwKFdURk1vdmUoZGF0YSkpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICBtX2RhdGEgPSBzdGQ6Om51bGxvcHQ7CisgICAgbV9t
YXBNb2RlRmxhZ3MgPSAwOwogfQogCiB2b2lkIFJlbW90ZUJ1ZmZlclByb3h5OjpkZXN0cm95KCkK
IHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6OkRl
c3Ryb3koKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJl
bW90ZUJ1ZmZlclByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVCdWZmZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKaW5kZXggMjg2MmVlY2JkMjdjMmUwY2ExZThhODJl
ZDU5NzEwN2E2NmQwYmQ5Yy4uYTdiZmY3M2RjNGQ1ZTUxMTI5ZmEwMGUzZDNmOGRhYTk2YzVmMzA3
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5o
IgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUJ1ZmZlci5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtMzcsMTcg
KzM4LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVC
dWZmZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QnVmZmVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZUJ1ZmZlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3Rl
QnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIg
aWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJ1
ZmZlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUJ1ZmZlclByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCdWZmZXJQcm94
eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50
OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50
KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUJ1ZmZlclByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlQnVmZmVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkm
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlQnVmZmVyUHJveHkoY29uc3QgUmVtb3RlQnVmZmVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBS
ZW1vdGVCdWZmZXJQcm94eShSZW1vdGVCdWZmZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU1LDYg
KzU5LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQnVmZmVyUHJveHkmIG9wZXJhdG9yPShSZW1v
dGVCdWZmZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2lu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUg
Y29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3Nh
Z2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24o
KS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsK
KyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
SVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlw
ZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9p
ZCBtYXBBc3luYyhQQUw6OldlYkdQVTo6TWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0
PiBzaXplRm9yTWFwLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CiAgICAgTWFwcGVk
UmFuZ2UgZ2V0TWFwcGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBv
ZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4pIGZpbmFsOwpAQCAtNjYs
OCArODIsMTEgQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZCgpPj4g
bV9jYWxsYmFja3M7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsK
ICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKKyAgICBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gbV9kYXRhOworICAgIFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxh
Z3MgbV9tYXBNb2RlRmxhZ3MgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHAKaW5k
ZXggOGJiOGQ3NWRhNmQ3YmM2ZTljMzM0NTlmNDZkOTY4NTliMjdjZWIyNi4uZjMzZmM2MzM0YjZk
NDkxOGY5YWYxZWZlNzAxNTc4ODBlZWZlMTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVDb21tYW5kQnVmZmVyUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXJNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6UmVtb3RlQ29t
bWFuZEJ1ZmZlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCitSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OlJlbW90ZUNvbW1hbmRCdWZmZXJQ
cm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAg
ICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0K
IApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6On5SZW1vdGVDb21t
YW5kQnVmZmVyUHJveHkoKQogCiB2b2lkIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6c2V0TGFi
ZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJl
bCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEJ1
ZmZlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oCmluZGV4IDI0OTNjODQ3NTU4NmM5NjY5NjVhMGRhOWFh
YjhiZTI3YWIzMTAwNGQuLjMzYWM1MzQzZDA2Yjg5OTM0NWIyNmJhYjAxZWExMGJmZmYyODE2M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVE
ZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxw
YWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXIuaD4KIApAQCAtMzYsMTcgKzM3
LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21t
YW5kQnVmZmVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5PiBjcmVh
dGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAg
IHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNl
UHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoY29udmVydFRvQmFja2lu
Z0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQ29tbWFuZEJ1
ZmZlclByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoKTsKIAorICAg
IFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJl
bW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgp
OyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKLSAgICBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmKTsKKyAgICBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoUmVtb3RlRGV2aWNlUHJv
eHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAg
UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KGNvbnN0IFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShSZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBS
ZW1vdGVDb21tYW5kQnVmZmVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVDb21tYW5kQnVmZmVyUHJv
eHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBT
ZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZN
b3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENv
bm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFj
a2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJ
bnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9i
YWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5jcHAKaW5kZXggMDk5YzYzZDdjMTEyNmUwMWE5
NGM5ZDEwN2Y0MzNlZTIyMTczY2M0NC4uZmVhMjlkOTkyODE2N2UyYjJhNGRmNDU1ZDlmODdhZjFm
OGJmNmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eS5jcHAKQEAgLTI5LDE0ICsyOSwxNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZUNvbW1h
bmRFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0
OjpXZWJHUFUgewogCi1SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCitSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDog
bV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBA
IC00NiwxMiArNDksMzUgQEAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6flJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHkoKQogCiBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyPiBS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpiZWdpblJlbmRlclBhc3MoY29uc3QgUEFMOjpXZWJH
UFU6OlJlbmRlclBhc3NEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIHJldHVybiBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4K
KyAgICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhp
cywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21t
YW5kRW5jb2Rlcjo6QmVnaW5SZW5kZXJQYXNzKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlm
aWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NFbmNvZGVyPiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpiZWdpbkNvbXB1dGVQYXNzKGNv
bnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4mIGRl
c2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpj
cmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgc3RkOjpvcHRpb25hbDxXZWJL
aXQ6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiBjb252ZXJ0ZWREZXNjcmlwdG9yOwor
ICAgIGlmIChkZXNjcmlwdG9yKSB7CisgICAgICAgIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKCpkZXNjcmlwdG9yKTsKKyAg
ICAgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICAgICAgcmV0dXJuIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6QmVn
aW5Db21wdXRlUGFzcyhjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZm
ZXJUb0J1ZmZlcigKQEAgLTYxLDExICs4NywxNSBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OmNvcHlCdWZmZXJUb0J1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3Rp
bmF0aW9uT2Zmc2V0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlT2Zmc2V0KTsKLSAgICBV
TlVTRURfUEFSQU0oZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9m
ZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNl
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhzb3VyY2UpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRp
b24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0
aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGlmICghY29udmVy
dGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6
OkNvcHlCdWZmZXJUb0J1ZmZlcihjb252ZXJ0ZWRTb3VyY2UsIHNvdXJjZU9mZnNldCwgY29udmVy
dGVkRGVzdGluYXRpb24sIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6
OmNvcHlCdWZmZXJUb1RleHR1cmUoCkBAIC03Myw5ICsxMDMsMTcgQEAgdm9pZCBSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5Ojpjb3B5QnVmZmVyVG9UZXh0dXJlKAogICAgIGNvbnN0IFBBTDo6V2Vi
R1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICBjb25zdCBQQUw6OldlYkdQ
VTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAg
IFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsK
KyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNv
bnZlcnRUb0JhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3Rp
bmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGlu
YXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Q29weUJ1
ZmZlclRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24sICpj
b252ZXJ0ZWRDb3B5U2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKApA
QCAtODMsOSArMTIxLDE3IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weVRl
eHR1cmVUb0J1ZmZlcigKICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5QnVmZmVyJiBk
ZXN0aW5hdGlvbiwKICAgICBjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQog
ewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJj
ZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNlKTsK
KyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0
aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5h
dGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZl
cnRlZENvcHlTaXplID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
Zyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNv
bnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlT
aXplKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6Q29weVRleHR1cmVUb0J1ZmZlcigqY29udmVydGVk
U291cmNlLCAqY29udmVydGVkRGVzdGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZSgKQEAgLTkzLDkgKzEzOSwxNyBAQCB2b2lk
IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKAogICAgIGNv
bnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwKICAgICBjb25z
dCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQogewotICAgIFVOVVNFRF9QQVJBTShz
b3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFN
KGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJjZSA9IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNlKTsKKyAgICBBU1NFUlQoY29udmVydGVk
U291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNv
bnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZENvcHlTaXplID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhjb3B5U2l6ZSk7CisgICAgQVNT
RVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZFNvdXJjZSB8fCAhY29u
dmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlTaXplKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5j
b2Rlcjo6Q29weVRleHR1cmVUb1RleHR1cmUoKmNvbnZlcnRlZFNvdXJjZSwgKmNvbnZlcnRlZERl
c3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6ZmlsbEJ1ZmZl
cigKQEAgLTEwMywyOSArMTU3LDQyIEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6
ZmlsbEJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0LAog
ICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGlu
YXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NF
UlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGlmICghY29udmVydGVkRGVzdGluYXRpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpGaWxsQnVmZmVyKGNvbnZlcnRlZERlc3RpbmF0aW9uLCBk
ZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpwdXNoRGVidWdHcm91cChT
dHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6
UHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91cExhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpwb3BE
ZWJ1Z0dyb3VwKCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDb21tYW5kRW5jb2Rlcjo6UG9wRGVidWdHcm91cCgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6aW5zZXJ0
RGVidWdNYXJrZXIoU3RyaW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1h
cmtlckxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
b21tYW5kRW5jb2Rlcjo6SW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eTo6d3JpdGVUaW1lc3RhbXAoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0
JiBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIFVOVVNF
RF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1
dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAg
IGlmICghY29udmVydGVkUXVlcnlTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpXcml0ZVRpbWVz
dGFtcChjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpyZXNv
bHZlUXVlcnlTZXQoCkBAIC0xMzUsMjEgKzIwMiwzNiBAQCB2b2lkIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHk6OnJlc29sdmVRdWVyeVNldCgKICAgICBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVy
JiBkZXN0aW5hdGlvbiwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0IGRlc3RpbmF0aW9uT2Zmc2V0
KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0
UXVlcnkpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUNvdW50KTsKLSAgICBVTlVTRURfUEFSQU0o
ZGVzdGluYXRpb24pOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlvbk9mZnNldCk7CisgICAg
YXV0byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcocXVlcnlTZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7Cisg
ICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0
aW5hdGlvbik7CisgICAgaWYgKCFjb252ZXJ0ZWRRdWVyeVNldCB8fCAhY29udmVydGVkRGVzdGlu
YXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpSZXNvbHZlUXVlcnlTZXQoY29udmVydGVkUXVl
cnlTZXQsIGZpcnN0UXVlcnksIHF1ZXJ5Q291bnQsIGNvbnZlcnRlZERlc3RpbmF0aW9uLCBkZXN0
aW5hdGlvbk9mZnNldCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
UmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPiBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
OjpmaW5pc2goY29uc3QgUEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewotICAgIHJldHVybiBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OmNyZWF0ZSht
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3Ig
PSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3Ip
OworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlQ29tbWFuZEJ1ZmZl
clByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9
IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OkZpbmlzaCgqY29udmVydGVkRGVzY3Jp
cHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKwor
ICAgIHJldHVybiBSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29t
bWFuZEVuY29kZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCmluZGV4
IGVkOTc4ZTc2MzNkYzBjNTBmMThjYTA3ODIxZDFjN2MyNDY5M2JmODQuLjgzYjVkMGJmMDkyZmEz
NjBjYjdlNDEwNWU3YmM5NmUzN2I1YjJhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
R1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
bWFuZEVuY29kZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5IGZpbmFsIDogcHVi
bGljIFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KHBhcmVudCwgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IH5SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYg
cGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgp
IHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eShjb25zdCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JikgPSBkZWxldGU7CiAgICAg
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiYpID0g
ZGVsZXRlOwpAQCAtNTQsNiArNTgsMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21tYW5kRW5j
b2RlclByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYmKSA9IGRlbGV0
ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVs
dFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1
cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSks
IGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3lu
Y1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkK
KyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1
bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNz
RW5jb2Rlcj4gYmVnaW5SZW5kZXJQYXNzKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVz
Y3JpcHRvciYpIGZpbmFsOwogICAgIFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVy
PiBiZWdpbkNvbXB1dGVQYXNzKGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1
dGVQYXNzRGVzY3JpcHRvcj4mKSBmaW5hbDsKQEAgLTEwMiw4ICsxMTgsOSBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAg
V2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVE
ZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHku
Y3BwCmluZGV4IDNlMmU1YjZiOTg4MjNmYTBjNmQ5ZTY1ZTc3ODdkNTYwYTA2ODJmNTMuLjcxZjY3
OTU1YWI3ZDU2OTdhYTNjNmMxOGIwNjYzM2QwMjkyYWI5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwx
NSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJQcm94eTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9i
YWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00
Myw0MiArNDYsNjUgQEAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6On5SZW1vdGVDb21w
dXRlUGFzc0VuY29kZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHk6OnNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmIGNvbXB1
dGVQaXBlbGluZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBh
dXRvIGNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBpcGVsaW5lKTsKKyAgICBBU1NFUlQoY29udmVydGVk
Q29tcHV0ZVBpcGVsaW5lKTsKKyAgICBpZiAoIWNvbnZlcnRlZENvbXB1dGVQaXBlbGluZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpTZXRQaXBlbGluZShjb252ZXJ0ZWRDb21wdXRlUGlwZWxp
bmUpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNoKFBBTDo6V2ViR1BVOjpTaXplMzIgeCwg
c3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5LCBzdGQ6Om9wdGlvbmFsPFBBTDo6
V2ViR1BVOjpTaXplMzI+IHopCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgpOwotICAgIFVOVVNFRF9Q
QVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0oeik7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpEaXNwYXRjaCh4LCB5LCB6KSk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5OjpkaXNwYXRjaEluZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpC
dWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0
KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFN
KGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7
CisgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQg
PSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OkRpc3BhdGNoSW5kaXJl
Y3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGlyZWN0T2Zmc2V0KSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
clByb3h5OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpR
dWVyeVNldCYgcXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsK
KyAgICBhdXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0
KTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6
OkJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29udmVydGVkUXVlcnlTZXQsIHF1ZXJ5SW5k
ZXgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKIHsK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0Vu
Y29kZXI6OkVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6
ZW5kUGFzcygpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
Q29tcHV0ZVBhc3NFbmNvZGVyOjpFbmRQYXNzKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0Qmlu
ZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwJiBiaW5kR3JvdXAsCiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6
OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+PiYmIG9mZnNldHMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zm
c2V0cyk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZEJpbmRHcm91cCk7CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2Rlcjo6U2V0QmluZEdyb3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIFdURk1v
dmUob2Zmc2V0cykpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZv
aWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQ
VTo6SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3Vw
LApAQCAtODcsMzEgKzExMywzNyBAQCB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5
OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIGNvbgogICAgIFBBTDo6
V2ViR1BVOjpTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCiAgICAgUEFMOjpXZWJHUFU6
OlNpemUzMiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHlu
YW1pY09mZnNldHNBcnJheUJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRz
QXJyYXlCdWZmZXJMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFT
dGFydCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7CisgICAg
YXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7
CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
U2V0QmluZEdyb3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIFZlY3RvcjxQQUw6OldlYkdQ
VTo6QnVmZmVyRHluYW1pY09mZnNldD4oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciArIGR5bmFt
aWNPZmZzZXRzRGF0YVN0YXJ0LCBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5j
b2RlclByb3h5OjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVO
VVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3Jv
dXBMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQogeworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
UG9wRGVidWdHcm91cCgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAK
IHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0
cmluZyYmIG1hcmtlckxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyOjpJbnNlcnREZWJ1Z01hcmtlcihXVEZNb3ZlKG1hcmtlckxhYmVsKSkpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVO
VVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCmlu
ZGV4IGJhZDQxNTMwZWM2ODU0YWNmNzEyNTI5ZmY0NTBhYjc5NzI1NDI4ODIuLmQ2OTgwYjg3MjRj
Y2JiNjY1NTViZTE1MmZkMTQ4NDJiZGY2Mjg1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcsMjAg
QEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0Vu
Y29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
UHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0Nv
bnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eT4gY3Jl
YXRlKFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFz
c0VuY29kZXJQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShwYXJlbnQsIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoKTsKIAorICAgIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAotICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShjb25zdCBSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JiYpID0gZGVsZXRl
OwpAQCAtNTQsNiArNTgsMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JiYpID0gZGVs
ZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZh
dWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldFBpcGVsaW5lKGNvbnN0IFBB
TDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoKFBB
TDo6V2ViR1BVOjpTaXplMzIgeCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTMyPiB5
LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+KSBmaW5hbDsKQEAgLTc5LDggKzk1
LDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcm
KSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAg
IFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
KyAgICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBpcGVsaW5lUHJveHkuY3BwCmluZGV4IDBmMTFiYzc0N2JmNDdjMTA4MTJlN2JhMzU2NWI5
OWVjNjMwZmI4YzcuLjY4ZGM3M2Q4NzQ3Yjc2NjJiM2UxNjI4OWNmMTgyYTM5NjIwNTBjOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHAKQEAg
LTI5LDEyICsyOSwxNSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIlJl
bW90ZUJpbmRHcm91cExheW91dFByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVDb21wdXRlUGlwZWxpbmVQ
cm94eTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpS
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1f
cGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsMTMgKzQ3LDE3IEBAIFJlbW90ZUNvbXB1dGVQ
aXBlbGluZVByb3h5Ojp+UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoKQogCiBSZWY8UEFMOjpX
ZWJHUFU6OkJpbmRHcm91cExheW91dD4gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OmdldEJp
bmRHcm91cExheW91dCh1aW50MzJfdCBpbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgp
OwotICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlQ29tcHV0ZVBpcGVsaW5lOjpHZXRCaW5kR3JvdXBMYXlvdXQoaW5kZXgsIGlkZW50aWZpZXIp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUNvbXB1dGVQaXBlbGluZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVD
b21wdXRlUGlwZWxpbmVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuaAppbmRleCAzMDkwZWFjNjA1
YmUyNzAzMzYxZmYyNDJkOGUxZDZlZTY4NjNiY2Q3Li42YjczYjlkNjA0ZDU4MTIyYjVlODc3Nzhk
Y2YzOTQwYmJlOWRmNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkgZmluYWwgOiBwdWJsaWMgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShwYXJlbnQsIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVDb21wdXRlUGlwZWxpbmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQaXBl
bGluZVByb3h5KGNvbnN0IFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5JikgPSBkZWxldGU7CiAg
ICAgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkm
JikgPSBkZWxldGU7CkBAIC01NCwxMyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5JiYp
ID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25k
cyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Cisg
ICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246
OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0
aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmco
KSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJp
bmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4KSBmaW5hbDsK
IAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9C
YWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3Rl
RGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZURldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmNwcAppbmRleCA4MjlmODU1NTQ0ZjI4
Zjg0MGZmYzFmMDBiMWY5NWYxM2IwNGE2Y2Q5Li4yYjQ0YjNlNzdlOTRmOTE1YWVhNjI4ZDZiZTQw
MzlhMTQ3ODhiY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVtb3RlQnVmZmVyUHJveHkuaCIKICNpbmNsdWRlICJS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUGlwZWxpbmVM
YXlvdXRQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVF1ZXJ5U2V0UHJveHkuaCIKQEAgLTQ2LDkg
KzQ3LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZURldmljZVBy
b3h5OjpSZW1vdGVEZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
PiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4mJiBsaW1pdHMs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90
ZURldmljZVByb3h5OjpSZW1vdGVEZXZpY2VQcm94eShSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRl
ZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4m
JiBsaW1pdHMsIFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IERldmljZShXVEZNb3ZlKGZlYXR1cmVzKSwgV1RGTW92ZShsaW1pdHMpKQorICAg
ICwgbV9iYWNraW5nKGlkZW50aWZpZXIpCiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQog
CkBAIC02MiwxMDcgKzY1LDI2MCBAQCB2b2lkIFJlbW90ZURldmljZVByb3h5OjpkZXN0cm95KCkK
IAogUmVmPFBBTDo6V2ViR1BVOjpCdWZmZXI+IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCdWZm
ZXIoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVCdWZmZXJQcm94
eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVC
dWZmZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIg
PSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlQnVmZmVyKCpjb252ZXJ0ZWREZXNjcmlw
dG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisg
ICAgcmV0dXJuIFJlbW90ZUJ1ZmZlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmU+
IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVUZXh0dXJlKGNvbnN0IFBBTDo6V2ViR1BVOjpUZXh0
dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRv
cik7Ci0gICAgcmV0dXJuIFJlbW90ZVRleHR1cmVQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFj
b252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3Ig
aGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0ZSgqdGhp
cywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZp
Y2U6OkNyZWF0ZVRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlVGV4dHVy
ZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlNhbXBsZXI+IFJlbW90ZURldmljZVByb3h5Ojpj
cmVhdGVTYW1wbGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90
ZVNhbXBsZXJQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1
dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7
CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJl
dHVybiBSZW1vdGVTYW1wbGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0
byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVNhbXBsZXIoKmNv
bnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlU2FtcGxlclByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpX
ZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4gUmVtb3RlRGV2aWNlUHJveHk6OmltcG9ydEV4dGVybmFs
VGV4dHVyZShjb25zdCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJl
bW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERl
c2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4K
KyAgICAgICAgcmV0dXJuIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkp
OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNl
OjpJbXBvcnRFeHRlcm5hbFRleHR1cmUoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIp
KTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3Rl
RXh0ZXJuYWxUZXh0dXJlUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0
PiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQmluZEdyb3VwTGF5b3V0KGNvbnN0IFBBTDo6V2Vi
R1BVOjpCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNF
RF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJv
eHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRl
ZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUJpbmRHcm91cExheW91
dCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6
Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0K
IAogUmVmPFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dD4gUmVtb3RlRGV2aWNlUHJveHk6OmNy
ZWF0ZVBpcGVsaW5lTGF5b3V0KGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZUxheW91dERlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAg
IHJldHVybiBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBo
YW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OmNyZWF0
ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVEZXZpY2U6OkNyZWF0ZVBpcGVsaW5lTGF5b3V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVu
dGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJu
IFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6QmluZEdyb3Vw
PiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwUHJveHk6OmNyZWF0ZShtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAg
IGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlQmluZEdyb3VwUHJveHk6OmNy
ZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVEZXZpY2U6OkNyZWF0ZUJpbmRHcm91cCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRp
ZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBS
ZW1vdGVCaW5kR3JvdXBQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGU+IFJl
bW90ZURldmljZVByb3h5OjpjcmVhdGVTaGFkZXJNb2R1bGUoY29uc3QgUEFMOjpXZWJHUFU6OlNo
YWRlck1vZHVsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRl
c2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6Y3JlYXRlKG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7
CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJH
UFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlU2hhZGVyTW9kdWxlKCpjb252ZXJ0ZWREZXNjcmlw
dG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisg
ICAgcmV0dXJuIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkNv
bXB1dGVQaXBlbGluZT4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZShj
b25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAg
YXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3Ip
IHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAg
cmV0dXJuIFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0K
KworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVD
b21wdXRlUGlwZWxpbmUoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRl
bnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+IFJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVSZW5kZXJQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNj
cmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6Y3JlYXRlKG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7
CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVSZW5kZXJQaXBlbGlu
ZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdl
YkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVSZW5kZXJQaXBlbGluZSgqY29udmVydGVkRGVz
Y3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsK
KworICAgIHJldHVybiBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZURl
dmljZVByb3h5OjpjcmVhdGVDb21wdXRlUGlwZWxpbmVBc3luYyhjb25zdCBQQUw6OldlYkdQVTo6
Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lk
KFJlZjxQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsK
KyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNj
cmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3Jl
YXRlQ29tcHV0ZVBpcGVsaW5lQXN5bmMoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIp
LCB7IH0pOworICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fs
bGJhY2soUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogfQogCiB2b2lkIFJlbW90ZURldmljZVBy
b3h5OjpjcmVhdGVSZW5kZXJQaXBlbGluZUFzeW5jKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFdURjo6RnVuY3Rpb248dm9pZChSZWY8UEFM
OjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURf
UEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlUmVuZGVy
UGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllciksIHsgfSk7Cisg
ICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsYmFjayhSZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIGlkZW50aWZpZXIpKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2Rl
cj4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUNvbW1hbmRFbmNvZGVyKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4mIGRlc2NyaXB0b3Ip
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAg
c3RkOjpvcHRpb25hbDxDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0
b3I7CisgICAgaWYgKGRlc2NyaXB0b3IpIHsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2NyaXB0b3Ip
OworICAgICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgICAgICByZXR1cm4gUmVtb3Rl
Q29tbWFuZEVuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVDb21t
YW5kRW5jb2RlcihXVEZNb3ZlKGNvbnZlcnRlZERlc2NyaXB0b3IpLCBpZGVudGlmaWVyKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
aWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxlRW5jb2Rlcj4g
UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlckJ1bmRsZUVuY29kZXIoY29uc3QgUEFMOjpX
ZWJHUFU6OlJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsK
KyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0
dXJuIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9
CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRl
UmVuZGVyQnVuZGxlRW5jb2RlcigqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6UXVlcnlTZXQ+IFJlbW90
ZURldmljZVByb3h5OjpjcmVhdGVRdWVyeVNldChjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXRE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsK
LSAgICByZXR1cm4gUmVtb3RlUXVlcnlTZXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252
ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFu
ZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVRdWVyeVNldFByb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkp
OworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVy
YXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNl
OjpDcmVhdGVRdWVyeVNldCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVRdWVyeVNl
dFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpOwogfQogCiB2b2lkIFJlbW90ZURldmljZVByb3h5OjpwdXNoRXJyb3JTY29wZShQQUw6Oldl
YkdQVTo6RXJyb3JGaWx0ZXIgZXJyb3JGaWx0ZXIpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGVycm9y
RmlsdGVyKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZp
Y2U6OlB1c2hFcnJvclNjb3BlKGVycm9yRmlsdGVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNl
bmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZURldmljZVByb3h5Ojpwb3BFcnJvclNjb3BlKFdU
Rjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFcnJvcj4mJik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEVycm9yPiBlcnJvcjsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlRGV2aWNlOjpQb3BFcnJvclNjb3BlKCksIHsgZXJyb3IgfSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgaWYgKCFlcnJvcikgeworICAgICAgICBjYWxs
YmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgV1RGOjpz
d2l0Y2hPbihXVEZNb3ZlKCplcnJvciksIFsmXSAoT3V0T2ZNZW1vcnlFcnJvciYmIG91dE9mTWVt
b3J5RXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soeyBQQUw6OldlYkdQVTo6T3V0T2ZNZW1vcnlF
cnJvcjo6Y3JlYXRlKCkgfSk7CisgICAgfSwgWyZdIChWYWxpZGF0aW9uRXJyb3ImJiB2YWxpZGF0
aW9uRXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soeyBQQUw6OldlYkdQVTo6VmFsaWRhdGlvbkVy
cm9yOjpjcmVhdGUoV1RGTW92ZSh2YWxpZGF0aW9uRXJyb3IubWVzc2FnZSkpIH0pOworICAgIH0p
OwogfQogCiB2b2lkIFJlbW90ZURldmljZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OlNldExhYmVsKGxhYmVsKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmgKaW5kZXggNjYyNjk0YTMw
OThjMDFhMzZlY2NjZTU5N2QyYjc1MWFiOTczZGFiYi4uOGViZTM1YzVkOTA5YjRlNTZhMWVjYjJh
MjkzNTQ3OWQxZWUyNjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1v
dGVBZGFwdGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4K
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURldmljZS5oPgpAQCAtMzgsMTcg
KzM5LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVE
ZXZpY2VQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RGV2aWNlIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlbW90ZURldmljZVByb3h5PiBjcmVhdGUoUmVmPFBBTDo6V2ViR1BV
OjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJlcywgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0
ZWRMaW1pdHM+JiYgbGltaXRzLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gY3JlYXRlKFJl
ZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+JiYgZmVhdHVyZXMsIFJlZjxQQUw6Oldl
YkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmIGxpbWl0cywgUmVtb3RlQWRhcHRlclByb3h5JiBwYXJl
bnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgUmVtb3RlRGV2aWNlUHJveHkoV1RGTW92ZShmZWF0dXJlcyksIFdURk1vdmUobGltaXRz
KSwgY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlRGV2aWNlUHJveHkoV1RGTW92ZShmZWF0dXJlcyksIFdURk1vdmUobGltaXRzKSwg
cGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAot
ICAgIH5SZW1vdGVEZXZpY2VQcm94eSgpOworICAgIHZpcnR1YWwgflJlbW90ZURldmljZVByb3h5
KCk7CisKKyAgICBSZW1vdGVBZGFwdGVyUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50
OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50
KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKIAotICAgIFJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQVTo6U3Vw
cG9ydGVkRmVhdHVyZXM+JiYsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmLCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6
OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+JiYsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVk
TGltaXRzPiYmLCBSZW1vdGVBZGFwdGVyUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYs
IFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlRGV2aWNlUHJveHkoY29uc3QgUmVtb3Rl
RGV2aWNlUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVEZXZpY2VQcm94eShSZW1vdGVEZXZp
Y2VQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU2LDYgKzYwLDE4IEBAIHByaXZhdGU6CiAgICAgUmVt
b3RlRGV2aWNlUHJveHkmIG9wZXJhdG9yPShSZW1vdGVEZXZpY2VQcm94eSYmKSA9IGRlbGV0ZTsK
IAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNl
bmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4g
cm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJh
Y2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jl
c3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAg
ICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRT
eW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBkZXN0cm95KCkgZmluYWw7CiAKQEAgLTg4
LDggKzEwNCw5IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQ
QUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYpPj4gbV9jcmVhdGVSZW5kZXJQaXBlbGluZUFz
eW5jQ2FsbGJhY2tzOwogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpFcnJvcj4mJik+PiBtX3BvcEVycm9yU2NvcGVDYWxsYmFja3M7CiAKLSAg
ICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRl
KCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRv
QmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90
ZUFkYXB0ZXJQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuY3Bw
CmluZGV4IGU4OGU0ZDllYTY3MTg2NmE5ZmU0YzMwNWIwZTlhYTgwMzk5ZmMyY2QuLmFiODcyZjE2
NGU3MzI4ZmJlMTIwYWJiZTE3NDljZTNiOTU0YzIwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRXh0ZXJuYWxUZXh0dXJl
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVFeHRlcm5hbFRleHR1
cmVQcm94eTo6flJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KCkKIAogdm9pZCBSZW1vdGVFeHRl
cm5hbFRleHR1cmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCmlu
ZGV4IGMzOGY0YzZhYzkwNTg5ODg0ZDljMDg5MGQzNTQyMTFkZDI1NDQ2NTcuLmZlNGI4YzM5YzZm
NzYwNjEyNjA5OTVlOWYxMmQxODAzMWNmNWRjNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVFeHRlcm5hbFRleHR1cmUuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSBmaW5h
bCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5
KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSgpOwogCisgICAgUmVtb3Rl
RGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BV
UHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwog
cHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKIAotICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Jik7CisgICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkm
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoY29uc3QgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkm
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eShSZW1vdGVFeHRlcm5h
bFRleHR1cmVQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgog
ICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlRXh0ZXJuYWxU
ZXh0dXJlUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmco
KSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNv
bnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7Cisg
ICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQ
Qzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVh
bUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQg
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50
aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4
dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+
IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUdQVVByb3h5LmNwcAppbmRleCA5ZTM4ZDdmZjNlODhhNWJiZDk0ZTZlN2NjMTJlNDE0
YTZlZDFkMmM5Li42NDkyMjgzOGQ5YzZhZWMzZTFiOGJkZTEzNjI3NzFmOGFkNTcyNmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlR1BVUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMjEgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiUmVtb3RlQWRhcHRlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlR1BVTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0cy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVHUFVQcm94eTo6UmVtb3RlR1BVUHJveHko
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDog
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK3N0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IGRlZmF1bHRTdHJlYW1TaXplID0gMSA8PCAyMTsKKworUmVtb3Rl
R1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNz
Q29ubmVjdGlvbiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRp
ZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0Nv
bnRleHQpCisgICAgLCBtX3N0cmVhbUNvbm5lY3Rpb24oZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLCBkZWZhdWx0U3RyZWFtU2l6ZSkKIHsKIH0KIApAQCAtNDMsOCArNTIsNTAgQEAg
UmVtb3RlR1BVUHJveHk6On5SZW1vdGVHUFVQcm94eSgpCiAKIHZvaWQgUmVtb3RlR1BVUHJveHk6
OnJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMm
IG9wdGlvbnMsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+
JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTShvcHRpb25zKTsKLSAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gY29udmVydGVkT3B0aW9ucyA9IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcob3B0aW9ucyk7CisgICAgQVNTRVJU
KGNvbnZlcnRlZE9wdGlvbnMpOworICAgIGlmICghY29udmVydGVkT3B0aW9ucykKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKKyAgICBTdHJpbmcgbmFtZTsKKyAgICBTdXBwb3J0ZWRGZWF0dXJlcyBzdXBwb3J0ZWRG
ZWF0dXJlczsKKyAgICBTdXBwb3J0ZWRMaW1pdHMgc3VwcG9ydGVkTGltaXRzOworICAgIGJvb2wg
aXNGYWxsYmFja0FkYXB0ZXI7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZFN5bmMoTWVzc2Fn
ZXM6OlJlbW90ZUdQVTo6UmVxdWVzdEFkYXB0ZXIoKmNvbnZlcnRlZE9wdGlvbnMsIGlkZW50aWZp
ZXIpLCB7IG5hbWUsIHN1cHBvcnRlZEZlYXR1cmVzLCBzdXBwb3J0ZWRMaW1pdHMsIGlzRmFsbGJh
Y2tBZGFwdGVyIH0pOworICAgIGlmICghc2VuZFJlc3VsdCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byByZXN1bHRTdXBwb3J0ZWRGZWF0dXJlcyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRG
ZWF0dXJlczo6Y3JlYXRlKFdURk1vdmUoc3VwcG9ydGVkRmVhdHVyZXMuZmVhdHVyZXMpKTsKKyAg
ICBhdXRvIHJlc3VsdFN1cHBvcnRlZExpbWl0cyA9IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1p
dHM6OmNyZWF0ZSgKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24x
RCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24yRCwKKyAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1heFRleHR1cmVEaW1lbnNpb24zRCwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heFRleHR1cmVBcnJheUxheWVycywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1heEJpbmRHcm91cHMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljVW5pZm9y
bUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5
bmFtaWNTdG9yYWdlQnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4U2FtcGxlZFRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhTYW1wbGVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4U3RvcmFnZUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heFN0b3JhZ2VUZXh0dXJlc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4VW5pZm9ybUJ1ZmZlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5nU2l6ZSwKKyAgICAgICAgc3VwcG9ydGVkTGlt
aXRzLm1heFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1pblVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5taW5TdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50LAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4VmVydGV4QnVmZmVycywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEF0
dHJpYnV0ZXMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhWZXJ0ZXhCdWZmZXJBcnJheVN0
cmlkZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJDb21wb25l
bnRzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFN0b3JhZ2VT
aXplLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZUludm9jYXRpb25zUGVyV29y
a2dyb3VwLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVY
LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVZLAorICAg
ICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVaLAorICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNpb24KKyAgICApOwor
ICAgIGNhbGxiYWNrKFJlbW90ZUFkYXB0ZXJQcm94eTo6Y3JlYXRlKFdURk1vdmUobmFtZSksIFdU
Rk1vdmUocmVzdWx0U3VwcG9ydGVkRmVhdHVyZXMpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExp
bWl0cyksIGlzRmFsbGJhY2tBZGFwdGVyLCAqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZUdQVVByb3h5LmgKaW5kZXggNWE5NGIzMDlhM2RkYjhhMDVhZTYxYmE5ZmJlY2Jl
YWNiYjkwM2IxNS4uMGZmZWEzOGNmOGM2ZmJhNzg4YWE5MGVjYmFiZGEzZjIwNTYwNDg5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlR1BVUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oCkBAIC0yNywyNyArMjcsMzYgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlN0cmVhbUNsaWVudENvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFUuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBHUFVQcm9jZXNzQ29ubmVjdGlvbjsKK30KKwogbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIAogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUdQ
VVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpHUFUgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlR1BVUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVHUFVQcm94eT4g
Y3JlYXRlKEdQVVByb2Nlc3NDb25uZWN0aW9uJiBncHVQcm9jZXNzQ29ubmVjdGlvbiwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVHUFVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZW1vdGVHUFVQcm94eShncHVQcm9jZXNzQ29ubmVjdGlvbiwgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1v
dGVHUFVQcm94eSgpOwogCisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiAqdGhp
czsgfQorCisgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9uJiBzdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCkgeyByZXR1cm4gbV9zdHJlYW1Db25uZWN0aW9uOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVHUFVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUdQVVByb3h5
KEdQVVByb2Nlc3NDb25uZWN0aW9uJiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZUdQVVByb3h5KGNvbnN0IFJlbW90ZUdQVVByb3h5Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlR1BVUHJveHkoUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7
CkBAIC01NSwxMyArNjQsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVHUFVQcm94eSYgb3BlcmF0
b3I9KFJlbW90ZUdQVVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBi
YWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlu
bGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYg
bWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVj
dGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVv
dXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JF
VFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3Qo
KS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAg
ICB2b2lkIHJlcXVlc3RBZGFwdGVyKGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9w
dGlvbnMmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6V2ViR1BVOjpBZGFwdGVyPiYm
KT4mJikgZmluYWw7CiAKICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmUHRyPFBBTDo6
V2ViR1BVOjpBZGFwdGVyPiYmKT4+IG1fY2FsbGJhY2tzOwogCi0gICAgV2ViR1BVSWRlbnRpZmll
ciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BV
SWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIElQQzo6U3RyZWFtQ2xpZW50Q29ubmVjdGlv
biBtX3N0cmVhbUNvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcAppbmRl
eCAxMTcwN2ExOTkxZGM0NGM4NWQ0YmE4YjU3OGI5Yzk3NzZlZDQzMjY1Li43NDIxYTllMDkxZjI4
MTVlZDNkMWIzZDdhYTMxYjNhYzQ0Yzg0MmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVQaXBlbGluZUxheW91dFByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVQaXBlbGluZUxheW91dE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6UmVtb3Rl
UGlwZWxpbmVMYXlvdXRQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6UmVtb3RlUGlwZWxpbmVM
YXlvdXRQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkK
IHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5Ojp+UmVt
b3RlUGlwZWxpbmVMYXlvdXRQcm94eSgpCiAKIHZvaWQgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94
eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
UGlwZWxpbmVMYXlvdXQ6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNl
bmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlw
ZWxpbmVMYXlvdXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCmluZGV4IDRkNmVjY2E5MjgwM2I5
MDFhNGU5ODVlMjAxZjM1ZWNhYzQ1NTI4MjMuLjBjOWQzNDdlODFiNjI4NmMzZDc3NGFjYmIzNjNl
MjE3NzFiYmJiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFBy
b3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXQuaD4K
IApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBj
bGFzcyBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BV
OjpQaXBlbGluZUxheW91dCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGlu
ZUxheW91dFByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eT4g
Y3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUGlwZWxpbmVMYXlvdXRQ
cm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVQaXBlbGlu
ZUxheW91dFByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1
cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFy
ZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBE
b3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVBpcGVsaW5lTGF5
b3V0UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdl
YkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eShjb25zdCBS
ZW1vdGVQaXBlbGluZUxheW91dFByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUGlwZWxpbmVM
YXlvdXRQcm94eShSZW1vdGVQaXBlbGluZUxheW91dFByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQs
MTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSYgb3Bl
cmF0b3I9KFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJH
UFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAK
KyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9
IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJl
YW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAg
ICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBS
ZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAKaW5kZXgg
ZDAzZTM3MWU5Nzc0M2YwMTBkODQ2ZGYzOWFiYmUwYWI1MGM2NWE4ZC4uMmZkMTQ4YWM3YWNiMTBi
ZTdhYWExNjU5MmE3NDY0YjQwYmI3ZGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlT
ZXRQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCisjaW5jbHVkZSAiUmVtb3RlUXVlcnlTZXRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKLVJlbW90ZVF1ZXJ5U2V0UHJveHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVF1ZXJ5U2V0UHJv
eHk6OlJlbW90ZVF1ZXJ5U2V0UHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3Bh
cmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDExICs0NiwxNCBAQCBSZW1vdGVRdWVyeVNldFBy
b3h5Ojp+UmVtb3RlUXVlcnlTZXRQcm94eSgpCiAKIHZvaWQgUmVtb3RlUXVlcnlTZXRQcm94eTo6
ZGVzdHJveSgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
UXVlcnlTZXQ6OkRlc3Ryb3koKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVF1ZXJ5U2V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1ZXJ5U2V0OjpTZXRMYWJlbChsYWJlbCkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaAppbmRleCBiN2Ey
Yzg2MjZmYWI3ZTI4NTFkMGRjMDQzMGU2YTg5ZDhiYzNiYjExLi5kOGM2Y2E3MTZhZjM5MTcxOWVm
ZGNmZWUwYzQwN2U2M2I5ZThlNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94
eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0Lmg+CiAKQEAgLTM2
LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlUXVlcnlTZXRQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UXVlcnlTZXQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVlcnlTZXRQcm94eT4gY3JlYXRlKENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMg
UmVmPFJlbW90ZVF1ZXJ5U2V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVF1ZXJ5U2V0UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVlcnlTZXRQcm94eShwYXJlbnQsIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
UmVtb3RlUXVlcnlTZXRQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgp
IHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVy
biBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQg
Y2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVF1ZXJ5
U2V0UHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVRdWVyeVNldFBy
b3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJ
ZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkoY29uc3QgUmVtb3RlUXVlcnlT
ZXRQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVF1ZXJ5U2V0UHJveHkoUmVtb3RlUXVlcnlT
ZXRQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDEzICs1OCwyNiBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVF1ZXJ5U2V0UHJveHkmIG9wZXJhdG9yPShSZW1vdGVRdWVyeVNldFByb3h5JiYpID0gZGVs
ZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZh
dWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdl
KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRT
eW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCku
c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKIAog
ICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2
aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVF1ZXVlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5jcHAKaW5kZXggNjNhOGMwNjAwZDIxNzEwNTMw
ODkyMjEzNzYwNzJlNzcyODYwOTRlNC4uNjAzMGNlNmUzMzNhYzFkMDgyNjU1NjZhNDkyNzUxMzM1
ODZiODFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5jcHAKQEAgLTI4LDEyICsy
OCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUXVl
dWVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVF1ZXVlUHJveHk6OlJlbW90
ZVF1ZXVlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKK1JlbW90ZVF1ZXVlUHJveHk6OlJlbW90ZVF1ZXVlUHJveHkoUmVtb3RlRGV2aWNlUHJv
eHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRp
ZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0Nv
bnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDEyICs0NiwyNSBA
QCBSZW1vdGVRdWV1ZVByb3h5Ojp+UmVtb3RlUXVldWVQcm94eSgpCiAKIHZvaWQgUmVtb3RlUXVl
dWVQcm94eTo6c3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BV
OjpDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kQnVmZmVycykKIHsKLSAgICBVTlVTRURfUEFSQU0o
Y29tbWFuZEJ1ZmZlcnMpOworICAgIFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiBjb252ZXJ0ZWRD
b21tYW5kQnVmZmVyczsKKyAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGNvbW1hbmRCdWZmZXJzLnNpemUoKSk7CisgICAgZm9yIChhdXRvIGNvbW1hbmRC
dWZmZXIgOiBjb21tYW5kQnVmZmVycykgeworICAgICAgICBhdXRvIGNvbnZlcnRlZENvbW1hbmRC
dWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvbW1h
bmRCdWZmZXIpOworICAgICAgICBBU1NFUlQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcik7CisgICAg
ICAgIGlmICghY29udmVydGVkQ29tbWFuZEJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY29udmVydGVkQ29tbWFuZEJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKGNvbnZlcnRlZENv
bW1hbmRCdWZmZXIpOworICAgIH0KKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVRdWV1ZTo6U3VibWl0KGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6Om9u
U3VibWl0dGVkV29ya0RvbmUoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlUXVldWU6Ok9uU3VibWl0dGVkV29ya0RvbmUoKSwgeyB9KTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICBjYWxsYmFjaygpOwogfQogCiB2
b2lkIFJlbW90ZVF1ZXVlUHJveHk6OndyaXRlQnVmZmVyKApAQCAtNTksMTIgKzc1LDEzIEBAIHZv
aWQgUmVtb3RlUXVldWVQcm94eTo6d3JpdGVCdWZmZXIoCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2
NCBkYXRhT2Zmc2V0LAogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVy
T2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oYnl0
ZUxlbmd0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGFPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJB
TShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVm
ZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVldWU6OldyaXRlQnVmZmVy
KGNvbnZlcnRlZEJ1ZmZlciwgYnVmZmVyT2Zmc2V0LCBWZWN0b3I8dWludDhfdD4oc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZSkgKyBkYXRhT2Zmc2V0LCBzaXplLnZhbHVlX29yKGJ5
dGVMZW5ndGggLSBkYXRhT2Zmc2V0KSkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3Vs
dCk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6d3JpdGVUZXh0dXJlKApAQCAtNzQsMTEg
KzkxLDE3IEBAIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6d3JpdGVUZXh0dXJlKAogICAgIGNvbnN0
IFBBTDo6V2ViR1BVOjpJbWFnZURhdGFMYXlvdXQmIGRhdGFMYXlvdXQsCiAgICAgY29uc3QgUEFM
OjpXZWJHUFU6OkV4dGVudDNEJiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ5dGVMZW5n
dGgpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhTGF5b3V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6
ZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0
ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252ZXJ0ZWREYXRhTGF5b3V0ID0gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkYXRhTGF5b3V0KTsKKyAgICBBU1NF
UlQoY29udmVydGVkRGF0YUxheW91dCk7CisgICAgYXV0byBjb252ZXJ0ZWRTaXplID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhzaXplKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkU2l6ZSk7CisgICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVy
dGVkRGF0YUxheW91dCB8fCAhY29udmVydGVkU2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVldWU6OldyaXRlVGV4dHVy
ZSgqY29udmVydGVkRGVzdGluYXRpb24sIFZlY3Rvcjx1aW50OF90PihzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oc291cmNlKSwgYnl0ZUxlbmd0aCksICpjb252ZXJ0ZWREYXRhTGF5b3V0LCAq
Y29udmVydGVkU2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVRdWV1ZVByb3h5Ojpjb3B5RXh0ZXJuYWxJbWFnZVRvVGV4dHVyZSgKQEAgLTg2
LDE0ICsxMDksMjMgQEAgdm9pZCBSZW1vdGVRdWV1ZVByb3h5Ojpjb3B5RXh0ZXJuYWxJbWFnZVRv
VGV4dHVyZSgKICAgICBjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZCYg
ZGVzdGluYXRpb24sCiAgICAgY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNEJiBjb3B5U2l6ZSkK
IHsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oZGVzdGluYXRp
b24pOwotICAgIFVOVVNFRF9QQVJBTShjb3B5U2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3Vy
Y2UgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHNvdXJjZSk7
CisgICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5h
dGlvbiA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGlu
YXRpb24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgYXV0byBjb252
ZXJ0ZWRDb3B5U2l6ZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tp
bmcoY29weVNpemUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb3B5U2l6ZSk7CisgICAgaWYgKCFj
b252ZXJ0ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0ZWRDb3B5
U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlUXVldWU6OkNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKCpjb252ZXJ0ZWRT
b3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6
OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFS
QU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVF1
ZXVlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVl
UHJveHkuaAppbmRleCBlNTMwOTQ4YTViNzQ1MWYzMmRhM2UxMmQ5NWEwNDIxNDJlNDE4ZjJhLi5k
ODIzMjRkZTE1MjBjYTRjZTIxNGE1ZGJjNzc2N2M2NTExMTlhOGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUXVldWVQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVF1ZXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNywxNyArMzgsMjAgQEAgY2xhc3MgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVF1ZXVlUHJveHkgZmluYWwgOiBwdWJs
aWMgUEFMOjpXZWJHUFU6OlF1ZXVlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVF1
ZXVlUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVRdWV1ZVByb3h5PiBjcmVhdGUoUmVtb3Rl
RGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWV1ZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlUHJveHko
cGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgflJlbW90ZVF1ZXVlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5
JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290
KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBS
ZW1vdGVRdWV1ZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUXVl
dWVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVRdWV1ZVByb3h5KGNvbnN0IFJlbW90ZVF1ZXVl
UHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVRdWV1ZVByb3h5KFJlbW90ZVF1ZXVlUHJveHkm
JikgPSBkZWxldGU7CkBAIC01NSw2ICs1OSwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVF1ZXVl
UHJveHkmIG9wZXJhdG9yPShSZW1vdGVRdWV1ZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2Vi
R1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAg
CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQg
PSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICB9CiAKICAgICB2b2lkIHN1Ym1pdChWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlcj4+JiYpIGZpbmFsOwogCkBAIC04NCw4ICsxMDAs
OSBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBtX2NhbGxi
YWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJl
ZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAg
ICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyUHJveHkuY3BwCmluZGV4IDk3Y2RhMDM3NmJkOWExMTFmMzI1ZWJhNTAwOTNmM2E4
N2Y1NWVjOTguLjJiNmQyZDdkOTQxZTRmOGJhY2E1MmY1ZDg0ZmM0NDM4YTE3YjIxNTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNw
cApAQCAtMjgsMTMgKzI4LDE2IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNs
dWRlICJSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1v
dGVSZW5kZXJCdW5kbGVQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyUHJveHk6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2lu
ZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsMzIg
KzQ3LDQyIEBAIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6flJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
OjpzZXRQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBp
cGVsaW5lKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJQaXBlbGluZSk7CisgICAgYXV0byBj
b252ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcocmVuZGVyUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQ
aXBlbGluZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2Rlcjo6U2V0UGlwZWxpbmUoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5OjpzZXRJbmRleEJ1ZmZlcihjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVy
JiBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBpbmRleEZvcm1hdCwgUEFMOjpXZWJH
UFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6
ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhG
b3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVyKTsK
KyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rlcjo6U2V0
SW5kZXhCdWZmZXIoY29udmVydGVkQnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zmc2V0LCBzaXplKSk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0VmVydGV4QnVmZmVyKFBBTDo6V2ViR1BVOjpJbmRleDMy
IHNsb3QsIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OlNp
emU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsK
LSAgICBVTlVTRURfUEFSQU0oc2xvdCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7Ci0gICAg
VU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8g
Y29udmVydGVkQnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOworICAgIGlmICghY29u
dmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBz
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRWZXJ0ZXhCdWZmZXIo
c2xvdCwgY29udmVydGVkQnVmZmVyLCBvZmZzZXQsIHNpemUpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5
OjpkcmF3KFBBTDo6V2ViR1BVOjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXpl
MzIgaW5zdGFuY2VDb3VudCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0VmVydGV4LCBQ
QUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHZl
cnRleENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGZpcnN0VmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5jZSk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2Rlcjo6RHJhdyh2ZXJ0ZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0
SW5zdGFuY2UpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZChQQUw6OldlYkdQVTo6
U2l6ZTMyIGluZGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKQEAg
LTc3LDMxICs5MCw0MiBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6ZHJh
d0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LAogICAgIFBBTDo6V2ViR1BV
OjpTaWduZWRPZmZzZXQzMiBiYXNlVmVydGV4LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmly
c3RJbnN0YW5jZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7Ci0gICAgVU5VU0VE
X1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluZGV4KTsKLSAg
ICBVTlVTRURfUEFSQU0oYmFzZVZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5zdGFu
Y2UpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXI6OkRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0
SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Ojpk
cmF3SW5kaXJlY3QoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBB
TDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlu
ZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAgIGF1
dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5k
aXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXI6OkRyYXdJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwg
aW5kaXJlY3RPZmZzZXQpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAK
IHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZEluZGlyZWN0
KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6
U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVy
KTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyOjpEcmF3SW5kZXhlZEluZGlyZWN0KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBpbmRp
cmVjdE9mZnNldCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9p
ZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQ
VTo6SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3Vw
LAogICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zm
c2V0Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAg
IFVOVVNFRF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0
cyk7CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJp
bmRHcm91cCk7CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6OlNldEJpbmRHcm91cChpbmRleCwgY29udmVydGVkQmluZEdyb3VwLCBkeW5hbWlj
T2Zmc2V0cykpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6
SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLApA
QCAtMTEwLDM3ICsxMzQsNTMgQEAgdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY28KICAgICBQQUw6Oldl
YkdQVTo6U2l6ZTY0IGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LAogICAgIFBBTDo6V2ViR1BVOjpT
aXplMzIgZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRl
eCk7Ci0gICAgVU5VU0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFt
aWNPZmZzZXRzQXJyYXlCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0Fy
cmF5QnVmZmVyTGVuZ3RoKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3Rh
cnQpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOworICAgIGF1
dG8gY29udmVydGVkQmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOwor
ICAgIGlmICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpT
ZXRCaW5kR3JvdXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgVmVjdG9yPFBBTDo6V2ViR1BV
OjpCdWZmZXJEeW5hbWljT2Zmc2V0PihkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyICsgZHluYW1p
Y09mZnNldHNEYXRhU3RhcnQsIGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCkpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5OjpwdXNoRGVidWdHcm91cChTdHJpbmcmJiBncm91cExhYmVsKQogewotICAgIFVO
VVNFRF9QQVJBTShncm91cExhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpQdXNoRGVidWdHcm91cChXVEZNb3ZlKGdy
b3VwTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6cG9wRGVidWdHcm91cCgpCiB7CisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
cjo6UG9wRGVidWdHcm91cCgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtl
cihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwp
OworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXI6Okluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZT4gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpmaW5pc2goY29uc3QgUEFM
OjpXZWJHUFU6OlJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVQcm94
eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOworICAgIGlmICgh
Y29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9y
IGhhbmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OmNyZWF0
ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpGaW5pc2goKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlk
ZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1
cm4gUmVtb3RlUmVuZGVyQnVuZGxlUHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclBy
b3h5LmgKaW5kZXggMmEyNGQ4ODZhMmUyNWZkOGQ2NDRhMWY4OTlhOTY1OTc3N2JmNGQwYi4uMTAw
NDVhZTJlYmYyOWU0MWVlOGRlZWI5MjQ4NGFkMTQxMzg3YTEyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcg
QEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcs
MjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVyQnVu
ZGxlRW5jb2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkocGFyZW50LCBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIH5SZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyUHJveHkoKTsKKworICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJl
dHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVSZW5k
ZXJCdW5kbGVFbmNvZGVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5j
b2RlclByb3h5KGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSYpID0gZGVsZXRl
OwogICAgIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAg
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFj
a2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxp
bmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1l
c3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rp
b24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRV
Uk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCku
c3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1v
dmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAg
dm9pZCBzZXRQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmUmKSBmaW5h
bDsKIApAQCAtODcsOCArMTAzLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRl
cm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNr
aW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcAppbmRleCBmOTI3MzBmY2IwMDdjOTkyZWM1ZmRmOTY5
MDRlNjI5YTc2ODM1NGI1Li5hMjUxYjZkMzE4Yzc3MTM0OGI1YmU4MDA1MTFiMzQ2NDcyNmU0OTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwCkBAIC0y
OCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJl
bW90ZVJlbmRlckJ1bmRsZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUmVu
ZGVyQnVuZGxlUHJveHk6OlJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJCdW5kbGVQcm94
eTo6UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBt
X3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHk6On5SZW1vdGVSZW5kZXJCdW5kbGVQcm94eSgpCiAKIHZvaWQgUmVtb3RlUmVuZGVy
QnVuZGxlUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlckJ1bmRsZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaAppbmRleCA5YTA4ZDcwNzEz
OGM1MzBmNTc4ZjMzOTEyMWNmZDYxNjkyZGI1ZmM4Li43YzBkYzVlZTlmNGZkMmQ1NGMxN2MxZDI1
NzEwMDc3ZWViYWRiZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVBy
b3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlLmg+CiAK
QEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xh
c3MgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJl
bmRlckJ1bmRsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJCdW5kbGVQ
cm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5PiBjcmVhdGUoUmVt
b3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShjb252ZXJ0
VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVS
ZW5kZXJCdW5kbGVQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlm
aWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoKTsK
IAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQor
ICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBh
cmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KFJlbW90ZURldmlj
ZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAog
ICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KGNvbnN0IFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5
JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoUmVtb3RlUmVuZGVyQnVu
ZGxlUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBS
ZW1vdGVSZW5kZXJCdW5kbGVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5
JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vj
b25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rp
b246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tp
bmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50
ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFj
a2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlm
aWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCmluZGV4IDlkOTMyNjE3ZmUxM2Fm
NDNhMmY2ODBkMWYxODhmNWFlMTE4ZmIyZTguLjNlOGY1YTYzZjRhZjEyNDcyYjhmMjNmNThmZGYy
ZDg3YWJmZDM1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUgewogCi1SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5KFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3Bh
cmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDMyICs0Niw0MiBAQCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5Ojp+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSgpCiAKIHZvaWQgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6
OlJlbmRlclBpcGVsaW5lJiByZW5kZXJQaXBlbGluZSkKIHsKLSAgICBVTlVTRURfUEFSQU0ocmVu
ZGVyUGlwZWxpbmUpOworICAgIGF1dG8gY29udmVydGVkUmVuZGVyUGlwZWxpbmUgPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHJlbmRlclBpcGVsaW5lKTsKKyAg
ICBBU1NFUlQoY29udmVydGVkUmVuZGVyUGlwZWxpbmUpOworICAgIGlmICghY29udmVydGVkUmVu
ZGVyUGlwZWxpbmUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRQaXBlbGluZShjb252ZXJ0
ZWRSZW5kZXJQaXBlbGluZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRJbmRleEJ1ZmZlcihjb25z
dCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIsIFBBTDo6V2ViR1BVOjpJbmRleEZvcm1hdCBp
bmRleEZvcm1hdCwgUEFMOjpXZWJHUFU6OlNpemU2NCBvZmZzZXQsIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAg
ICBVTlVTRURfUEFSQU0oaW5kZXhGb3JtYXQpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwot
ICAgIFVOVVNFRF9QQVJBTShzaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NF
UlQoY29udmVydGVkQnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OlNldEluZGV4QnVmZmVyKGNvbnZlcnRlZEJ1ZmZlciwgaW5kZXhGb3Jt
YXQsIG9mZnNldCwgc2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRWZXJ0ZXhCdWZmZXIoUEFM
OjpXZWJHUFU6OkluZGV4MzIgc2xvdCwgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6
U2l6ZTY0PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFS
QU0oYnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
c2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZl
cik7CisgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpT
ZXRWZXJ0ZXhCdWZmZXIoc2xvdCwgY29udmVydGVkQnVmZmVyLCBvZmZzZXQsIHNpemUpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFz
c0VuY29kZXJQcm94eTo6ZHJhdyhQQUw6OldlYkdQVTo6U2l6ZTMyIHZlcnRleENvdW50LCBQQUw6
OldlYkdQVTo6U2l6ZTMyIGluc3RhbmNlQ291bnQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBm
aXJzdFZlcnRleCwgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJzdEluc3RhbmNlKQogewotICAgIFVO
VVNFRF9QQVJBTSh2ZXJ0ZXhDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQp
OwotICAgIFVOVVNFRF9QQVJBTShmaXJzdFZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0
SW5zdGFuY2UpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpEcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZl
cnRleCwgZmlyc3RJbnN0YW5jZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsK
IH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZChQQUw6
OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsIFBBTDo6V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VD
b3VudCwKQEAgLTc2LDMxICs4OSw0MiBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUAogICAgIFBB
TDo6V2ViR1BVOjpTaWduZWRPZmZzZXQzMiBiYXNlVmVydGV4LAogICAgIFBBTDo6V2ViR1BVOjpT
aXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXhDb3VudCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlQ291bnQpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdElu
ZGV4KTsKLSAgICBVTlVTRURfUEFSQU0oYmFzZVZlcnRleCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZp
cnN0SW5zdGFuY2UpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpEcmF3SW5kZXhlZChpbmRleENvdW50LCBpbnN0YW5jZUNvdW50
LCBmaXJzdEluZGV4LCBiYXNlVmVydGV4LCBmaXJzdEluc3RhbmNlKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OmRyYXdJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZl
ciwgUEFMOjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFS
QU0oaW5kaXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7Cisg
ICAgYXV0byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlUmVuZGVyUGFzc0VuY29kZXI6OkRyYXdJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
ciwgaW5kaXJlY3RPZmZzZXQpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9
CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6ZHJhd0luZGV4ZWRJbmRpcmVj
dChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFMOjpXZWJHUFU6
OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RCdWZm
ZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZlcik7CisgICAgYXV0byBjb252ZXJ0
ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0Jh
Y2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZl
cik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXI6OkRyYXdJbmRleGVkSW5kaXJlY3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGly
ZWN0T2Zmc2V0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6
SW5kZXgzMiBpbmRleCwgY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCYgYmluZEdyb3VwLAog
ICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJEeW5hbWljT2Zmc2V0
Pj4mJiBkeW5hbWljT2Zmc2V0cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAgIFVO
VVNFRF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0cyk7
CisgICAgYXV0byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LT5jb252ZXJ0VG9CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRH
cm91cCk7CisgICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyOjpTZXRCaW5kR3JvdXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgZHluYW1pY09mZnNl
dHMpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMy
IGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCkBAIC0xMDks
OTAgKzEzMywxMjAgQEAgdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5k
R3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIGNvbnMKICAgICBQQUw6OldlYkdQVTo6
U2l6ZTY0IGR5bmFtaWNPZmZzZXRzRGF0YVN0YXJ0LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIg
ZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZz
ZXRzQXJyYXlCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0FycmF5QnVm
ZmVyTGVuZ3RoKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhU3RhcnQpOwot
ICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpOworICAgIGF1dG8gY29u
dmVydGVkQmluZEdyb3VwID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhiaW5kR3JvdXApOworICAgIEFTU0VSVChjb252ZXJ0ZWRCaW5kR3JvdXApOworICAgIGlm
ICghY29udmVydGVkQmluZEdyb3VwKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0QmluZEdy
b3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIFZlY3RvcjxQQUw6OldlYkdQVTo6QnVmZmVy
RHluYW1pY09mZnNldD4oZHluYW1pY09mZnNldHNBcnJheUJ1ZmZlciArIGR5bmFtaWNPZmZzZXRz
RGF0YVN0YXJ0LCBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpKSk7CisgICAgVU5VU0VEX1ZBUklB
QkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6
OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KGdyb3VwTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpQdXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKSk7
CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OnBvcERlYnVnR3JvdXAoKQogeworICAgIGF1dG8gc2VuZFJlc3Vs
dCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpQb3BEZWJ1Z0dyb3Vw
KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJM
YWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFya2VyTGFiZWwpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpJbnNlcnREZWJ1
Z01hcmtlcihXVEZNb3ZlKG1hcmtlckxhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRWaWV3
cG9ydChmbG9hdCB4LCBmbG9hdCB5LAogICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsCiAg
ICAgZmxvYXQgbWluRGVwdGgsIGZsb2F0IG1heERlcHRoKQogewotICAgIFVOVVNFRF9QQVJBTSh4
KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAgICBV
TlVTRURfUEFSQU0oaGVpZ2h0KTsKLSAgICBVTlVTRURfUEFSQU0obWluRGVwdGgpOwotICAgIFVO
VVNFRF9QQVJBTShtYXhEZXB0aCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNldFZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWln
aHQsIG1pbkRlcHRoLCBtYXhEZXB0aCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTY2lzc29yUmVj
dChQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgeCwgUEFMOjpXZWJHUFU6OkludGVnZXJD
b29yZGluYXRlIHksCiAgICAgUEFMOjpXZWJHUFU6OkludGVnZXJDb29yZGluYXRlIHdpZHRoLCBQ
QUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgaGVpZ2h0KQogewotICAgIFVOVVNFRF9QQVJB
TSh4KTsKLSAgICBVTlVTRURfUEFSQU0oeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHdpZHRoKTsKLSAg
ICBVTlVTRURfUEFSQU0oaGVpZ2h0KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0U2Npc3NvclJlY3QoeCwgeSwgd2lkdGgs
IGhlaWdodCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRCbGVuZENvbnN0YW50KFBBTDo6V2ViR1BV
OjpDb2xvciBjb2xvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY29sb3IpOworICAgIGF1dG8gY29u
dmVydGVkQ29sb3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KGNvbG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29sb3IpOworICAgIGlmICghY29udmVydGVk
Q29sb3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRCbGVuZENvbnN0YW50KCpjb252ZXJ0
ZWRDb2xvcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRTdGVuY2lsUmVmZXJlbmNlKFBBTDo6V2Vi
R1BVOjpTdGVuY2lsVmFsdWUgc3RlbmNpbFZhbHVlKQogewotICAgIFVOVVNFRF9QQVJBTShzdGVu
Y2lsVmFsdWUpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyOjpTZXRTdGVuY2lsUmVmZXJlbmNlKHN0ZW5jaWxWYWx1ZSkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjpiZWdpbk9jY2x1c2lvblF1ZXJ5KFBBTDo6V2ViR1BVOjpTaXplMzIgcXVl
cnlJbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkJlZ2luT2Nj
bHVzaW9uUXVlcnkocXVlcnlJbmRleCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRPY2NsdXNpb25R
dWVyeSgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OkVuZE9jY2x1c2lvblF1ZXJ5KCkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5Ojpi
ZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYg
cXVlcnlTZXQsIFBBTDo6V2ViR1BVOjpTaXplMzIgcXVlcnlJbmRleCkKIHsKLSAgICBVTlVTRURf
UEFSQU0ocXVlcnlTZXQpOwotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRv
IGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRv
QmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAgICBp
ZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6QmVnaW5QaXBl
bGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRleCkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjplbmRQaXBlbGluZVN0YXRpc3RpY3NRdWVyeSgpCiB7CisgICAgYXV0byBz
ZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZFBp
cGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpleGVjdXRlQnVuZGxl
cyhWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxQQUw6OldlYkdQVTo6UmVuZGVyQnVuZGxl
Pj4mJiByZW5kZXJCdW5kbGVzKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5kZXJCdW5kbGVzKTsK
KyAgICBWZWN0b3I8V2ViR1BVSWRlbnRpZmllcj4gY29udmVydGVkUmVuZGVyQnVuZGxlczsKKyAg
ICBjb252ZXJ0ZWRSZW5kZXJCdW5kbGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVuZGVyQnVu
ZGxlcy5zaXplKCkpOworICAgIGZvciAoYXV0byByZW5kZXJCdW5kbGUgOiByZW5kZXJCdW5kbGVz
KSB7CisgICAgICAgIGF1dG8gY29udmVydGVkUmVuZGVyQnVuZGxlID0gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhyZW5kZXJCdW5kbGUpOworICAgICAgICBBU1NF
UlQoY29udmVydGVkUmVuZGVyQnVuZGxlKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRSZW5kZXJC
dW5kbGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbnZlcnRlZFJlbmRlckJ1bmRs
ZXMudW5jaGVja2VkQXBwZW5kKGNvbnZlcnRlZFJlbmRlckJ1bmRsZSk7CisgICAgfQorCisgICAg
YXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6
OkV4ZWN1dGVCdW5kbGVzKFdURk1vdmUoY29udmVydGVkUmVuZGVyQnVuZGxlcykpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eTo6ZW5kUGFzcygpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OkVuZFBhc3MoKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAppbmRleCBmMjA3
YjllYTZmNTFiMGU3ZDY4ZTczMGQzMDgxNjI5MmIxYzM0MzE1Li43NDI3OWQxOTZhNzQ4NzM1ODg3
MzBjZTE4ZDExZTFlZWZmN2UyZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUmVuZGVyUGFzc0VuY29kZXIuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRW5jb2RlciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5PiBjcmVhdGUo
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eT4gY3JlYXRlKFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAotICAgIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5KCk7CisgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSgpOworCisg
ICAgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KS5wYXJlbnQoKS5wYXJlbnQoKTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5KGNvbnN0IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHkmJikgPSBkZWxldGU7CkBAIC01NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclBy
b3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIg
U2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7
CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RG
TW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5l
Y3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpS
ZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRD
b25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJh
Y2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldFBpcGVs
aW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYpIGZpbmFsOwogCkBAIC0xMDQs
OCArMTIwLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BV
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5n
OwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKKyAgICBSZWY8UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eT4gbV9wYXJlbnQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5LmNwcAppbmRleCA0ODQzMjc5NTQwNjZjYjdlMmZmNjM0OGQ1
YTU5MmM4MDNjZDhhYWFkLi4wYWQyZjM5ZmVlNjYwNjYwZjliZWVkM2U5ZGE3ZjZkOGVmZmIzZDEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmNwcApA
QCAtMjksMTIgKzI5LDE1IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJQaXBl
bGluZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eTo6UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6UmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDQsMTMgKzQ3LDE3IEBAIFJlbW90ZVJlbmRlclBpcGVs
aW5lUHJveHk6On5SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KCkKIAogUmVmPFBBTDo6V2ViR1BV
OjpCaW5kR3JvdXBMYXlvdXQ+IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OmdldEJpbmRHcm91
cExheW91dCh1aW50MzJfdCBpbmRleCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5kZXgpOwotICAg
IHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQpOworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6Omdl
bmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGlwZWxpbmU6OkdldEJpbmRHcm91cExheW91dChpbmRleCwgaWRlbnRpZmllcikpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVCaW5kR3Jv
dXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fcGFyZW50LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpzZXRM
YWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxh
YmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQ
aXBlbGluZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3Vs
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBl
bGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKaW5kZXggZjkxNDQ4NGJmZjk2MGNmMTRlMjkz
MjM2MDI2OTlmYzNiNzlmMmM3Yi4uMDNjZDRjYzY5NGY1ZjlkYTNhYjIwM2UwNjdiNzA2ZjAxZjQx
MjA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
UmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGluZS5oPgogCkBAIC0z
NiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJl
bW90ZVJlbmRlclBpcGVsaW5lUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRl
clBpcGVsaW5lIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5l
UHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0Nv
bnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5PiBjcmVhdGUo
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
bW90ZVJlbmRlclBpcGVsaW5lUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
aWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlclBpcGVsaW5l
UHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3Bh
cmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBh
cmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94
eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRl
bnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KGNvbnN0IFJlbW90ZVJl
bmRlclBpcGVsaW5lUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVBy
b3h5KFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwxMyArNTgs
MjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5JiBvcGVyYXRvcj0o
UmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50
aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0
YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNl
bmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVu
dENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VO
VVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVy
biByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAg
fQogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+IGdldEJpbmRHcm91cExh
eW91dCh1aW50MzJfdCBpbmRleCkgZmluYWw7CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwo
Y29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7
IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1f
YmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxl
clByb3h5LmNwcAppbmRleCBlMjQwODlkNmUzZmRmMTRmZjM4MzJkZmNlMTMxNTlkNjNmMmJhZjdm
Li45NTFhMzM5ODZlY2Q4ZmRhNDFlMjA0Y2MzNDMxZWQ0ZDg1YWZkNTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNhbXBsZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlU2FtcGxlck1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAotUmVtb3RlU2FtcGxlclByb3h5OjpSZW1vdGVTYW1wbGVyUHJveHko
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDog
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90
ZVNhbXBsZXJQcm94eTo6UmVtb3RlU2FtcGxlclByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJl
bnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2Vi
R1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisg
ICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
ICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVNh
bXBsZXJQcm94eTo6flJlbW90ZVNhbXBsZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlU2FtcGxlclBy
b3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTYW1wbGVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlU2FtcGxlclByb3h5LmgKaW5kZXggMjdkYTQ3MTMxNzkzMjkzZTc2NTk0NGU2ZmZjYmY0Zjhj
ZjY3NWFjZS4uMWI3MWMwMTgzYTlhYzI5ZTk5ZjkxZDAyZWUwYTlkNjUxY2M3MTkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
U2FtcGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVU2FtcGxlci5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVNhbXBsZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQ
QUw6OldlYkdQVTo6U2FtcGxlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTYW1w
bGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVTYW1wbGVyUHJveHk+IGNyZWF0ZShSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXJQcm94eShjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTYW1wbGVy
UHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVNhbXBsZXJQcm94eSgpOwogCisgICAgUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsK
IAotICAgIFJlbW90ZVNhbXBsZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAg
IFJlbW90ZVNhbXBsZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVTYW1wbGVyUHJveHkoY29u
c3QgUmVtb3RlU2FtcGxlclByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlU2FtcGxlclByb3h5
KFJlbW90ZVNhbXBsZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2
YXRlOgogICAgIFJlbW90ZVNhbXBsZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVNhbXBsZXJQcm94
eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNl
Y29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1v
dmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29u
bmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNr
aW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2Jh
Y2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwCmluZGV4IGUyNzNmMzEzMTVhZTFlNWYzZDQ4ZDhl
ZmVmZTkyZTNjMWIzNmNjODUuLmEyYjBhZTE0NzZkMTIxN2E5NzBjMDQ5ODNmNjRiOThjYTNjYzBh
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2Vi
R1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5jcHAKQEAg
LTI4LDEyICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
UmVtb3RlU2hhZGVyTW9kdWxlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29t
cGlsYXRpb25JbmZvLmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
aWxhdGlvbk1lc3NhZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3Rl
U2hhZGVyTW9kdWxlUHJveHk6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5KENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFj
a2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAg
LCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDEyICs0OCwyMCBAQCBSZW1vdGVTaGFk
ZXJNb2R1bGVQcm94eTo6flJlbW90ZVNoYWRlck1vZHVsZVByb3h5KCkKIAogdm9pZCBSZW1vdGVT
aGFkZXJNb2R1bGVQcm94eTo6Y29tcGlsYXRpb25JbmZvKFdURjo6RnVuY3Rpb248dm9pZChSZWY8
UEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9uSW5mbz4mJik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBWZWN0b3I8Q29tcGlsYXRpb25NZXNzYWdlPiBtZXNz
YWdlczsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlU2hh
ZGVyTW9kdWxlOjpDb21waWxhdGlvbkluZm8oKSwgeyBtZXNzYWdlcyB9KTsKKyAgICBVTlVTRURf
VkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICBhdXRvIGJhY2tpbmdNZXNzYWdlcyA9IG1lc3Nh
Z2VzLm1hcChbXSAoQ29tcGlsYXRpb25NZXNzYWdlIGNvbXBpbGF0aW9uTWVzc2FnZSkgeworICAg
ICAgICByZXR1cm4gUEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9uTWVzc2FnZTo6Y3JlYXRlKFdURk1v
dmUoY29tcGlsYXRpb25NZXNzYWdlLm1lc3NhZ2UpLCBjb21waWxhdGlvbk1lc3NhZ2UudHlwZSwg
Y29tcGlsYXRpb25NZXNzYWdlLmxpbmVOdW0sIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lUG9zLCBj
b21waWxhdGlvbk1lc3NhZ2Uub2Zmc2V0LCBjb21waWxhdGlvbk1lc3NhZ2UubGVuZ3RoKTsKKyAg
ICB9KTsKKyAgICBjYWxsYmFjayhQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25JbmZvOjpjcmVhdGUo
V1RGTW92ZShiYWNraW5nTWVzc2FnZXMpKSk7CiB9CiAKIHZvaWQgUmVtb3RlU2hhZGVyTW9kdWxl
UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVNoYWRlck1vZHVsZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
aGFkZXJNb2R1bGVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaAppbmRleCA3NGUwZjE5MzdjYjM4ZmI1
ZTAzNWQ0YzdiZWE5OWU5NDE3ZjcxNzUzLi5mNjFhZDk1NGJjZTM3MWNhYTljMDJjZTllZmI3ODMx
MzYxMTBmY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUg
IlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2hhZGVyTW9kdWxlLmg+CiAKQEAgLTM2
LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlU2hhZGVyTW9kdWxlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlNoYWRlck1v
ZHVsZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVTaGFkZXJNb2R1bGVQcm94eT4g
Y3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkK
KyAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2
aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVTaGFkZXJN
b2R1bGVQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKTsKIAorICAg
IFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJl
bW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgp
OyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKLSAgICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYpOworICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KFJlbW90ZURldmljZVByb3h5
JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJl
bW90ZVNoYWRlck1vZHVsZVByb3h5KGNvbnN0IFJlbW90ZVNoYWRlck1vZHVsZVByb3h5JikgPSBk
ZWxldGU7CiAgICAgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoUmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHkmJikgPSBkZWxldGU7CkBAIC01NCwxMyArNTgsMjYgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVT
aGFkZXJNb2R1bGVQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVNoYWRlck1vZHVsZVByb3h5JiYpID0g
ZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4g
bV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBk
ZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAg
IHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNz
YWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNl
bmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJl
cGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9u
KCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGF0aW9uSW5mbyhX
VEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm8+JiYpPiYm
KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5h
bDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6
Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxD
b252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBS
ZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuY3BwCmluZGV4IGQx
ZmQzNDI5NWUxZGE4MTE4YWMxNWE1ODc3MWE4NDg5YzcyMjY1NTEuLjRhZWVkZjc4NmRiN2ZmNmVj
MzYwNWE1YTczYTVmMTJjOWE3ZDRlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVBy
b3h5LmNwcApAQCAtMjgsMTQgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJSZW1vdGVUZXh0dXJlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJSZW1vdGVUZXh0
dXJlVmlld1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJXZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuaCIKIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlVGV4dHVyZVByb3h5OjpSZW1vdGVUZXh0dXJlUHJv
eHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAg
IDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1Jl
bW90ZVRleHR1cmVQcm94eTo6UmVtb3RlVGV4dHVyZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwg
V2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIp
CisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00NSwxNyArNDgsMzIgQEAgUmVt
b3RlVGV4dHVyZVByb3h5Ojp+UmVtb3RlVGV4dHVyZVByb3h5KCkKIAogUmVmPFBBTDo6V2ViR1BV
OjpUZXh0dXJlVmlldz4gUmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGVWaWV3KGNvbnN0IHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4mIGRlc2NyaXB0b3Ip
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVUZXh0
dXJlVmlld1Byb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgc3Rk
OjpvcHRpb25hbDxUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7Cisg
ICAgaWYgKGRlc2NyaXB0b3IpIHsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2NyaXB0b3IpOworICAg
ICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8g
aWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlVGV4dHVyZTo6Q3JlYXRlVmlldygqY29udmVy
dGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVz
dWx0KTsKKworICAgIHJldHVybiBSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpjcmVhdGUoKnRoaXMs
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90
ZVRleHR1cmVQcm94eTo6ZGVzdHJveSgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChN
ZXNzYWdlczo6UmVtb3RlVGV4dHVyZTo6RGVzdHJveSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlVGV4dHVyZVByb3h5OjpzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVUZXh0dXJlOjpTZXRMYWJl
bChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgK
aW5kZXggYTM4Y2YzNDNmMzlkZTM1ODFlNmU0YTkxNjI5ZThhMmNlODk0YTMwNS4uOTQ3ZmViMmE5
ZTZmNjNkMTE0NjA0ZTc1MGZmMmY4YjVkM2JiZTA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVSW50ZWdyYWxUeXBl
cy5oPgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZS5oPgpAQCAt
NDAsMTcgKzQxLDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBS
ZW1vdGVUZXh0dXJlUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlRleHR1cmUgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVByb3h5PiBjcmVhdGUoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlVGV4dHVyZVByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVUZXh0dXJlUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVByb3h5KHBhcmVudCwgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1v
dGVUZXh0dXJlUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJl
dHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9w
YXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVUZXh0dXJlUHJv
eHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVUZXh0dXJlUHJveHkoUmVt
b3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZp
ZXIpOwogCiAgICAgUmVtb3RlVGV4dHVyZVByb3h5KGNvbnN0IFJlbW90ZVRleHR1cmVQcm94eSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZVRleHR1cmVQcm94eShSZW1vdGVUZXh0dXJlUHJveHkmJikg
PSBkZWxldGU7CkBAIC01OCw2ICs2MiwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVRleHR1cmVQ
cm94eSYgb3BlcmF0b3I9KFJlbW90ZVRleHR1cmVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdl
YkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAg
IAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0
ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0
cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwg
ZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5k
U3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAg
ICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgfQogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4gY3JlYXRlVmll
dyhjb25zdCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlld0Rlc2NyaXB0b3I+
JikgZmluYWw7CiAKQEAgLTY1LDggKzgxLDkgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0TGFi
ZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIg
bV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlk
ZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFy
ZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVW
aWV3UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5jcHAKaW5kZXggZWUwM2Y1ZWUyMDhmZTA0YTE3MjM1
NWQ5MzcwY2U2YTJmZGVjNWViZS4uNDlhZjg5MmRmNGNjNGExZjU3ZTgxYzBjZjUzZGY4MDU3M2Q0
YTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5jcHAKQEAg
LTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
UmVtb3RlVGV4dHVyZVZpZXdNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZVRl
eHR1cmVWaWV3UHJveHk6OlJlbW90ZVRleHR1cmVWaWV3UHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVRleHR1cmVWaWV3UHJveHk6
OlJlbW90ZVRleHR1cmVWaWV3UHJveHkoUmVtb3RlVGV4dHVyZVByb3h5JiBwYXJlbnQsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9w
YXJlbnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVRleHR1cmVWaWV3
UHJveHk6On5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KCkKIAogdm9pZCBSZW1vdGVUZXh0dXJlVmll
d1Byb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVUZXh0dXJlVmlldzo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUo
c2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVU
ZXh0dXJlVmlld1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKaW5kZXggMTJhNmExOWRmYTQ3NzdlNGI1
NDZlMzc2ODkxMTdlZjQ2MDFlMTJhZC4uNTdjMWM5OGQ1YzVmZDg2MTZkMzE0MmYzZDI3ZWQ2YmE0
MjQ1Njc2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVt
b3RlVGV4dHVyZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4dHVyZVZpZXcuaD4KIApAQCAtMzYsMTcg
KzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVU
ZXh0dXJlVmlld1Byb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldyB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlVmlld1Byb3h5PiBjcmVhdGUo
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0
YXRpYyBSZWY8UmVtb3RlVGV4dHVyZVZpZXdQcm94eT4gY3JlYXRlKFJlbW90ZVRleHR1cmVQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVRleHR1cmVWaWV3UHJveHkoY29udmVydFRvQmFja2luZ0NvbnRl
eHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXdQcm94
eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+UmVtb3RlVGV4dHVyZVZpZXdQcm94eSgpOwogCisgICAgUmVtb3RlVGV4
dHVyZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVBy
b3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgp
OyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKLSAgICBSZW1vdGVUZXh0dXJlVmlld1Byb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Jik7CisgICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShSZW1vdGVUZXh0dXJlUHJveHkm
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlVGV4dHVyZVZpZXdQcm94eShjb25zdCBSZW1vdGVUZXh0dXJlVmlld1Byb3h5JikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShSZW1vdGVUZXh0dXJlVmlld1Byb3h5JiYp
ID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlVGV4dHVy
ZVZpZXdQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVRleHR1cmVWaWV3UHJveHkmJikgPSBkZWxldGU7
CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tp
bmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRT
ZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBi
YWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNS
ZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisg
ICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5k
U3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0
U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBT
dHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BV
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5n
OwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDsKKyAgICBSZWY8UmVtb3RlVGV4dHVyZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCmluZGV4IGY4N2ZjZmUz
ZDRjNTMzYjRiY2UxN2JkZDhiMjk4MTRmN2U2OTRmYzUuLmQ1Njc2YThiZDY3NDA1NmYzYmVjMmY1
NzA5MzFiMDZiYTVmZjM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuY3BwCkBAIC05OCw2ICs5OCwxMSBA
QCBXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBS
ZW1vdGVEZXZpY2VQcm94eSY+KGRldmljZSkuYmFja2luZygpOwogfQogCitXZWJHUFVJZGVudGlm
aWVyIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZSYgZXh0ZXJuYWxUZXh0dXJlKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSY+KGV4
dGVybmFsVGV4dHVyZSkuYmFja2luZygpOworfQorCiBXZWJHUFVJZGVudGlmaWVyIERvd25jYXN0
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkdQVSYgZ3B1KQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBSZW1vdGVHUFVQ
cm94eSY+KGdwdSkuYmFja2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCmluZGV4IGExM2M4ODkwNDY5MjM3
YmI2MjljNzI3NWQ1NzBlNTg0Mjc4M2E4NDguLjQ0NzFkMGVmMDc0OGI2NDVlZWJkNGU5NTBmNWNm
NTAwMDUzNjY5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3du
Y2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgog
ICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
Q29tcHV0ZVBhc3NFbmNvZGVyJikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmUmKSBmaW5hbDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRl
dmljZSYpIGZpbmFsOworICAgIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRp
ZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmKSBmaW5hbDsKICAg
ICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0JikgZmluYWw7CiAgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYpIGZpbmFsOwo=
</data>
<flag name="review"
          id="470020"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="470022"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444907</attachid>
            <date>2021-11-20 13:56:59 -0800</date>
            <delta_ts>2021-11-20 16:04:03 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-233396-20211120135658.patch</filename>
            <type>text/plain</type>
            <size>279682</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUwNTJmYmZhYmY1OTYwZDdi
MDIyNDk5NWI0ZDBjZGIzZWE1ZmY2NjQuLmQ0NDc2ZDY1YWFjYzc0NDk3ZDFjYzQ0NDRjMDg0NjMx
ZTdhMmZiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzM5IEBACisyMDIxLTExLTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gU2Vu
ZCBXZWJHUFUgbWVzc2FnZXMgaW4gdGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzOTYKKworICAgICAgICBSZXZpZXdlZCBi
eSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgVGhpcyBob29rcyB1cCBvdXIgUmVtb3RlKioqUHJv
eHkoKSBXZWJHUFUgaW1wbGVtZW50YXRpb24gdG8gdGhlIHNlcmlhbGl6YWJsZSBzdHJ1Y3RzLgor
ICAgICAgICBUaGVyZSBhcmUgMiBwaWVjZXM6IGFkZGluZyBjb252ZXJ0ZXIgZnVuY3Rpb25zIGZy
b20gUEFMOjpXZWJHUFU6OlggdG8gV2ViS2l0OjpXZWJHUFU6OlgKKyAgICAgICAgc3RydWN0cyAo
d2hpY2ggYXJlIHNlcmlhbGl6YWJsZSkgYW5kIGFjdHVhbGx5IGNhbGxpbmcgdGhlIHNlbmQoKSBm
dW5jdGlvbiBpdHNlbGYuCisgICAgICAgIEJlY2F1c2Ugc3RyZWFtaW5nIElQQyBkb2Vzbid0IHN1
cHBvcnQgYXN5bmMgcmVwbGllcyB5ZXQsIGFsbCB0aGUgYXN5bmMgY2FsbHMgYXJlIGN1cnJlbnRs
eQorICAgICAgICBzeW5jIGluIHRoaXMgcGF0Y2guIEknbGwgYmUgYWRkaW5nIHN1cHBvcnQgZm9y
IGFzeW5jIHN0cmVhbWluZyBtZXNzYWdlcyBpbiBhIHN1YnNlcXVlbnQKKyAgICAgICAgcGF0Y2gs
IHdoaWNoIHdpbGwgbWlncmF0ZSBjYWxsZXJzIHRvIHVzZSBzZW5kQXN5bmMoKSBpbnN0ZWFkIG9m
IHNlbmRTeW5jKCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8g
YmVoYXZpb3IgY2hhbmdlIHlldC4gVGhpcyBpcyB0aGUgbGFzdCB1bnRlc3RlZCBmb3VuZGF0aW9u
YWwKKyAgICAgICAgcGF0Y2ggaW4gdGhlIHNlcmllcy4gQWxsIHN1YnNlcXVlbnQgV2ViR1BVIHBh
dGNoZXMgc2hvdWxkIGhhdmUgdGVzdHMuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHUFU6OnJlcXVl
c3RBZGFwdGVyKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVH
UFUuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVz
c2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5k
R3JvdXBFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2Vi
R1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAq
IFNoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZFN0YXRlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5n
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJC
aW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVDYW52YXNDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAg
ICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb2xvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3JUYXJnZXRTdGF0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICog
U2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3Jp
dGVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmg6
CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRU
b0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVRGV2aWNlRGVzY3JpcHRv
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVRXJyb3Iu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNE
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5h
bFRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVk
L1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6
CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUv
V2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAq
IFNoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlU
ZXh0dXJlVGFnZ2VkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9X
ZWJHUFVJbWFnZURhdGFMYXlvdXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViR1BVL1dlYkdQVU11bHRpc2FtcGxlU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERlc2NyaXB0b3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2lu
Zyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luM0QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVz
Y3JpcHRvckJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAq
IFNoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVF1
ZXJ5U2V0RGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3ND
b2xvckF0dGFjaG1lbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToK
KyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJH
UFUvV2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
R1BVOjpDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAg
ICogU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dl
YkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQv
V2ViR1BVL1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcp
OgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZExpbWl0
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRGcm9t
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dl
YkdQVS9XZWJHUFVUZXh0dXJlQmluZGluZ0xheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAg
ICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlv
bkVycm9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyk6CisgICAgICAgICogU2hhcmVkL1dlYkdQVS9XZWJHUFVW
ZXJ0ZXhBdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OkNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAgKiBTaGFyZWQvV2ViR1BV
L1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcpOgorICAgICAgICAqIFNo
YXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OkNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKToKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3hjc2hhcmVkZGF0YS94Y3NjaGVtZXMvV2ViS2l0Lnhjc2NoZW1l
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUFkYXB0ZXJQcm94eTo6
UmVtb3RlQWRhcHRlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVBZGFw
dGVyUHJveHk6OnJlcXVlc3REZXZpY2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJpbmRHcm91cExheW91dFByb3h5OjpSZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdy
b3VwTGF5b3V0UHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQmluZEdyb3VwUHJveHk6OlJlbW90
ZUJpbmRHcm91cFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCaW5kR3Jv
dXBQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6UmVtb3RlQnVmZmVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjptYXBBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQnVmZmVyUHJveHk6OmdldE1hcHBlZFJhbmdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6dW5tYXApOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUJ1ZmZlclByb3h5OjpkZXN0cm95KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVCdWZmZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclBy
b3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRCdWZmZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29t
bWFuZEJ1ZmZlclByb3h5OjpSZW1vdGVDb21tYW5kQnVmZmVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRC
dWZmZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpiZWdpblJl
bmRlclBhc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVy
UHJveHk6OmJlZ2luQ29tcHV0ZVBhc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb0J1ZmZlcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZlclRvVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6
Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29t
bWFuZEVuY29kZXJQcm94eTo6Y29weVRleHR1cmVUb1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmZpbGxCdWZmZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dy
b3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
Ojpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5OjppbnNlcnREZWJ1Z01hcmtlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6d3JpdGVUaW1lc3RhbXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnJlc29sdmVRdWVyeVNl
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6
ZmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21tYW5kRW5jb2RlclBy
b3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6
OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpkaXNwYXRjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6
OmRpc3BhdGNoSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNv
bXB1dGVQYXNzRW5jb2RlclByb3h5OjplbmRQYXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6cHVzaERlYnVn
R3JvdXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
clByb3h5Ojpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRMYWJlbEludGVy
bmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29t
cHV0ZVBhc3NFbmNvZGVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5OjpSZW1vdGVDb21wdXRlUGlwZWxp
bmVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlQ29tcHV0ZVBpcGVsaW5l
UHJveHk6OmdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OlJl
bW90ZURldmljZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQ
cm94eTo6Y3JlYXRlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZp
Y2VQcm94eTo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
RGV2aWNlUHJveHk6OmNyZWF0ZVNhbXBsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJl
bW90ZURldmljZVByb3h5OjppbXBvcnRFeHRlcm5hbFRleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVQaXBlbGluZUxh
eW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0
ZUJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6
OmNyZWF0ZVNoYWRlck1vZHVsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2
aWNlUHJveHk6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQ
VTo6UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lQXN5
bmMpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVS
ZW5kZXJQaXBlbGluZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZp
Y2VQcm94eTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6
OlJlbW90ZURldmljZVByb3h5OjpjcmVhdGVSZW5kZXJCdW5kbGVFbmNvZGVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUXVlcnlTZXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpwdXNoRXJyb3JTY29wZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRGV2aWNlUHJveHk6OnBvcEVycm9yU2Nv
cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZURldmljZVByb3h5OjpzZXRMYWJl
bEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlRGV2aWNlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5OjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6
OnNldExhYmVsSW50ZXJuYWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkdQVTo6UmVtb3RlR1BVUHJveHk6OlJlbW90ZUdQVVByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVHUFVQcm94eTo6cmVxdWVzdEFkYXB0ZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFVQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVQaXBlbGluZUxheW91dFByb3h5
OjpSZW1vdGVQaXBlbGluZUxheW91dFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNl
dFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWVyeVNldFByb3h5
OjpSZW1vdGVRdWVyeVNldFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVR
dWVyeVNldFByb3h5OjpkZXN0cm95KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVR
dWVyeVNldFByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5OjpSZW1vdGVRdWV1ZVByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5OjpzdWJtaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6Om9uU3VibWl0dGVkV29ya0RvbmUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OndyaXRlQnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1ZVByb3h5Ojp3cml0ZVRleHR1
cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVF1ZXVlUHJveHk6OmNvcHlFeHRl
cm5hbEltYWdlVG9UZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVRdWV1
ZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6UmVt
b3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldFBpcGVsaW5lKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEluZGV4QnVm
ZmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
UHJveHk6OnNldFZlcnRleEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRp
cmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
clByb3h5OjpkcmF3SW5kZXhlZEluZGlyZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpwdXNoRGVidWdH
cm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2Rl
clByb3h5Ojpwb3BEZWJ1Z0dyb3VwKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmZpbmlzaCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Ojpz
ZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJCdW5kbGVQcm94eTo6UmVtb3RlUmVuZGVy
QnVuZGxlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlckJ1bmRs
ZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0UGlwZWxpbmUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5
OjpzZXRWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHk6OmRyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kaXJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJ
bmRleGVkSW5kaXJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHk6OnNldEJpbmRHcm91cCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6cHVzaERlYnVnR3JvdXApOgorICAgICAgICAo
V2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnBvcERlYnVnR3Jv
dXApOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHk6Omluc2VydERlYnVnTWFya2VyKToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkdQVTo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0U2Npc3NvclJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEJs
ZW5kQ29uc3RhbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHk6OnNldFN0ZW5jaWxSZWZlcmVuY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmJlZ2luT2NjbHVzaW9uUXVlcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVu
ZE9jY2x1c2lvblF1ZXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQ
YXNzRW5jb2RlclByb3h5OjpiZWdpblBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViR1BVOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjplbmRQaXBlbGlu
ZVN0YXRpc3RpY3NRdWVyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6ZXhlY3V0ZUJ1bmRsZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJH
UFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZFBhc3MpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJu
YWwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHUFU6OlJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OlJlbW90ZVJlbmRlclBpcGVsaW5lUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6
OmdldEJpbmRHcm91cExheW91dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlUmVu
ZGVyUGlwZWxpbmVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVTYW1wbGVyUHJveHk6OlJlbW90ZVNh
bXBsZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlU2FtcGxlclByb3h5
OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlU2FtcGxlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViR1BVOjpSZW1vdGVTaGFkZXJNb2R1bGVQcm94eTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNoYWRlck1vZHVsZVByb3h5Ojpj
b21waWxhdGlvbkluZm8pOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVNoYWRlck1v
ZHVsZVByb3h5OjpzZXRMYWJlbEludGVybmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OlJlbW90ZVRleHR1cmVQcm94
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkdQVTo6UmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGVW
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlUHJveHk6OmRlc3Ry
b3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJHUFU6OlJlbW90ZVRleHR1cmVQcm94eTo6c2V0TGFi
ZWxJbnRlcm5hbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVRleHR1cmVQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViR1BV
OjpSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpSZW1vdGVUZXh0dXJlVmlld1Byb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViR1BVOjpSZW1vdGVUZXh0dXJlVmlld1Byb3h5OjpzZXRMYWJlbEludGVy
bmFsKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4
dHVyZVZpZXdQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViR1BVOjpEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9C
YWNraW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2ViR1BV
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oOgorCiAyMDIxLTExLTIwICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXBvcnQgdGhl
IGluaXRpYXRpbmcgdXJsIGluc3RlYWQgb2YgdGhlIHJlZGlyZWN0ZWQgb25lCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5jcHAK
aW5kZXggMzgyZjhlMzZkZmYzYzg4ODA3OWE2ZDRiZmJlZjI1MzRjYTJjNWFmYS4uZDcyZWVlOWE4
NTc0NjBmYjdhNWJkNzE1OTIyNDk5YzllNGIyYzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmNwcApAQCAtNTAsMTIg
KzUwLDEyIEBAIFJlbW90ZUdQVTo6flJlbW90ZUdQVSgpCiAgICAgbV9vYmplY3RSZWdpc3RyeS5y
ZW1vdmVPYmplY3QobV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVHUFU6OnJlcXVlc3RB
ZGFwdGVyKGNvbnN0IFdlYkdQVTo6UmVxdWVzdEFkYXB0ZXJPcHRpb25zJiBvcHRpb25zLCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcmJiwgV2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYmLCBXZWJHUFU6OlN1cHBvcnRlZExpbWl0
cyYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlR1BVOjpyZXF1ZXN0QWRhcHRlcihjb25zdCBX
ZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYgb3B0aW9ucywgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6
U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJiwgYm9vbCk+JiYg
Y2FsbGJhY2spCiB7CiAgICAgYXV0byBjb252ZXJ0ZWRPcHRpb25zID0gbV9vYmplY3RSZWdpc3Ry
eS5jb252ZXJ0RnJvbUJhY2tpbmcob3B0aW9ucyk7CiAgICAgQVNTRVJUKGNvbnZlcnRlZE9wdGlv
bnMpOwogICAgIGlmICghY29udmVydGVkT3B0aW9ucykgewotICAgICAgICBjYWxsYmFjayhTdHJp
bmdJbXBsOjplbXB0eSgpLCB7IHsgfSB9LCB7IH0pOworICAgICAgICBjYWxsYmFjayhTdHJpbmdJ
bXBsOjplbXB0eSgpLCB7IHsgfSB9LCB7IH0sIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFJlbW90ZUdQVTo6cmVxdWVzdEFkYXB0ZXIoY29u
c3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIG9wdGlvbnMsIFdlYgogICAgICAgICAg
ICAgbGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWSgpLAogICAgICAgICAgICAgbGltaXRz
Lm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWigpLAogICAgICAgICAgICAgbGltaXRzLm1heENvbXB1
dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uKCksCi0gICAgICAgIH0pOworICAgICAgICB9LCBhZGFw
dGVyLT5pc0ZhbGxiYWNrQWRhcHRlcigpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BVLmgKaW5kZXggZjA5
ZTkyNTA0MmIxZjI4NzdkZDdmYTg0MjA5OGFmZjk4MWM1YWI1Ny4uNzU4NTU0MzM0NTYwYzEyM2Mz
ZTFmZmI5YTg0MTk3ODRlYmFmZDA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGRpZFJlY2VpdmVTdHJlYW1NZXNzYWdlKElQQzo6U3RyZWFtU2VydmVy
Q29ubmVjdGlvbkJhc2UmLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKIAotICAgIHZvaWQgcmVxdWVz
dEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBXZWJHUFVJZGVu
dGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdlYkdQVTo6U3Vw
cG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJik+JiYpOworICAgIHZv
aWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgV2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmLCBX
ZWJHUFVJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYsIFdl
YkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmJiwgV2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmJiwgYm9v
bCk+JiYpOwogCiAgICAgUmVmPFBBTDo6V2ViR1BVOjpHUFU+IG1fYmFja2luZzsKICAgICBXZWJH
UFU6Ok9iamVjdFJlZ2lzdHJ5JiBtX29iamVjdFJlZ2lzdHJ5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVHUFUubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNz
YWdlcy5pbgppbmRleCA0NzA5MTBiOTIzNWY0MTE1M2E2MGU2NDBjODczODQxNGQzMmMzOWRmLi5l
NGQ5NTI2NWFhNWQwMDM4OTRhYzgwNjI5MTQwMDBhMjRjYjUzZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQVS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUdQ
VS5tZXNzYWdlcy5pbgpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykK
IAogbWVzc2FnZXMgLT4gUmVtb3RlR1BVIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKLSAgICB2b2lk
IFJlcXVlc3RBZGFwdGVyKFdlYktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMgb3B0
aW9ucywgV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+IChTdHJpbmcgbmFt
ZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZlYXR1cmVzLCBX
ZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0cykgU3luY2hyb25v
dXMKKyAgICB2b2lkIFJlcXVlc3RBZGFwdGVyKFdlYktpdDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRl
ck9wdGlvbnMgb3B0aW9ucywgV2ViS2l0OjpXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpIC0+
IChTdHJpbmcgbmFtZSwgV2ViS2l0OjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRl
ZEZlYXR1cmVzLCBXZWJLaXQ6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0
cywgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlcikgU3luY2hyb25vdXMKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRGVz
Y3JpcHRvci5jcHAKaW5kZXggZTI2NmJkMWI3Mzc5YjA0ZDUyZGIwY2QxYjk0MDY5YmUxYTk0ZmVl
OS4uYzJlYWMyMjYzMWZhOGNhMDk0NGU5NWRjZTNjZWFiMmY3MTRlYzJhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cERlc2NyaXB0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlw
dG9yLmNwcApAQCAtMjksMTAgKzI5LDMzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXBEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRGVzY3JpcHRvcj4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91
cERlc2NyaXB0b3ImIGJpbmRHcm91cERlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29u
dmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3Jp
cHRvckJhc2UmPihiaW5kR3JvdXBEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBpZGVudGlmaWVyID0gY29udmVydFRv
QmFja2luZyhiaW5kR3JvdXBEZXNjcmlwdG9yLmxheW91dCk7CisgICAgaWYgKCFpZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPEJpbmRHcm91cEVu
dHJ5PiBlbnRyaWVzOworICAgIGVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShiaW5kR3Jv
dXBEZXNjcmlwdG9yLmVudHJpZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5
IDogYmluZEdyb3VwRGVzY3JpcHRvci5lbnRyaWVzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVk
RW50cnkgPSBjb252ZXJ0VG9CYWNraW5nKGVudHJ5KTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRF
bnRyeSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGVudHJpZXMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZEVudHJ5KSk7CisgICAgfQorCisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgaWRlbnRpZmllciwgV1RGTW92ZShlbnRyaWVzKSB9
IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3I+
IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBCaW5k
R3JvdXBEZXNjcmlwdG9yJiBiaW5kR3JvdXBEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9
IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFz
ZSY+KGJpbmRHcm91cERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwRW50cnkuY3BwCmluZGV4IGQ4MzJkZDA1N2I1NThhOWI5
MDE4ZDA3NmM3OTIzNDg2MjI4OTdjNGQuLjMzMjBmZTVkM2U5NjE2YmUwZDM4YTQyNTIwYjI3NzAz
OGNjMjhjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVC
aW5kR3JvdXBFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VUJpbmRHcm91cEVudHJ5LmNwcApAQCAtMjksMTAgKzI5LDQwIEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFs
L2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBFbnRyeS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEJpbmRHcm91cEVudHJ5PiBDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdy
b3VwRW50cnkmIGJpbmRHcm91cEVudHJ5KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGJp
bmRHcm91cEVudHJ5LnJlc291cmNlLCBbJl0gKHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpX
ZWJHUFU6OlNhbXBsZXI+IHNhbXBsZXIpIC0+IHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+
IHsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY29udmVydFRvQmFja2luZyhzYW1wbGVyKTsK
KyAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICByZXR1cm4geyB7IGJpbmRHcm91cEVudHJ5LmJpbmRpbmcsIHsgfSwgaWRl
bnRpZmllciwgQmluZGluZ1Jlc291cmNlVHlwZTo6U2FtcGxlciB9IH07CisgICAgfSwgWyZdIChz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpUZXh0dXJlVmlldz4gdGV4dHVyZVZp
ZXcpIC0+IHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IHsKKyAgICAgICAgYXV0byBpZGVu
dGlmaWVyID0gY29udmVydFRvQmFja2luZyh0ZXh0dXJlVmlldyk7CisgICAgICAgIGlmICghaWRl
bnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0
dXJuIHsgeyBiaW5kR3JvdXBFbnRyeS5iaW5kaW5nLCB7IH0sIGlkZW50aWZpZXIsIEJpbmRpbmdS
ZXNvdXJjZVR5cGU6OlRleHR1cmVWaWV3IH0gfTsKKyAgICB9LCBbJl0gKGNvbnN0IGF1dG8mIGJ1
ZmZlckJpbmRpbmcpIC0+IHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwRW50cnk+IHsKKyAgICAgICAg
YXV0byBjb252ZXJ0ZWRCdWZmZXJCaW5kaW5nID0gY29udmVydFRvQmFja2luZyhidWZmZXJCaW5k
aW5nKTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXJCaW5kaW5nKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4geyB7IGJpbmRHcm91cEVudHJ5
LmJpbmRpbmcsIFdURk1vdmUoKmNvbnZlcnRlZEJ1ZmZlckJpbmRpbmcpLCB7IH0sIEJpbmRpbmdS
ZXNvdXJjZVR5cGU6OlRleHR1cmVWaWV3IH0gfTsKKyAgICB9LCBbJl0gKHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8UEFMOjpXZWJHUFU6OkV4dGVybmFsVGV4dHVyZT4gZXh0ZXJuYWxUZXh0dXJlKSAt
PiBzdGQ6Om9wdGlvbmFsPEJpbmRHcm91cEVudHJ5PiB7CisgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IGNvbnZlcnRUb0JhY2tpbmcoZXh0ZXJuYWxUZXh0dXJlKTsKKyAgICAgICAgaWYgKCFpZGVu
dGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1
cm4geyB7IGJpbmRHcm91cEVudHJ5LmJpbmRpbmcsIHsgfSwgaWRlbnRpZmllciwgQmluZGluZ1Jl
c291cmNlVHlwZTo6RXh0ZXJuYWxUZXh0dXJlIH0gfTsKKyAgICB9KTsKK30KKwogc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwRW50cnk+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBCaW5kR3JvdXBFbnRyeSYgYmluZEdyb3VwRW50
cnkpCiB7CiAgICAgc3dpdGNoIChiaW5kR3JvdXBFbnRyeS50eXBlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0
RGVzY3JpcHRvci5jcHAKaW5kZXggOTA2NDg0ZTlkMmMwY2IzZGVkNDJmYTJkMGYxZWY4ZTk1ODAy
Mjk0Ny4uODFjZDlhOGM0ZTU2MDBiMTM3ZTkzODc0YTcwMzcyYWRiNjJiMDI1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dERlc2Ny
aXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDI5IEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8
cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmluZEdyb3VwTGF5
b3V0RGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGJpbmRHcm91cExh
eW91dERlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihiaW5kR3Jv
dXBMYXlvdXREZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgVmVjdG9yPEJpbmRHcm91cExheW91dEVudHJ5PiBlbnRyaWVzOwor
ICAgIGVudHJpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShiaW5kR3JvdXBMYXlvdXREZXNjcmlw
dG9yLmVudHJpZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogYmluZEdy
b3VwTGF5b3V0RGVzY3JpcHRvci5lbnRyaWVzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkRW50
cnkgPSBjb252ZXJ0VG9CYWNraW5nKGVudHJ5KTsKKyAgICAgICAgaWYgKCFjb252ZXJ0ZWRFbnRy
eSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGVudHJpZXMudW5j
aGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZEVudHJ5KSk7CisgICAgfQorCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZShlbnRyaWVzKSB9IH07Cit9CisKIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dERlc2NyaXB0b3I+IENvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBCaW5kR3JvdXBMYXlv
dXREZXNjcmlwdG9yJiBiaW5kR3JvdXBMYXlvdXREZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFz
ZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9y
QmFzZSY+KGJpbmRHcm91cExheW91dERlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQmluZEdyb3VwTGF5b3V0RW50cnkuY3BwCmlu
ZGV4IDg3NTcxMjYxMzE5ZTU3N2Q3ZjkzMTAxZWQ4YjBlMWMzMzliYjc2ZmMuLjg0NmM5ZTUyNGJj
NWQ4MmRjMjM5ZDg2YmI5MTNlMzhlN2M4M2QwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXRFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJpbmRHcm91cExheW91dEVudHJ5LmNwcApAQCAt
MjksMTAgKzI5LDUxIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVC
aW5kR3JvdXBMYXlvdXRFbnRyeS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPEJpbmRHcm91cExheW91dEVudHJ5PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RW50
cnkmIGJpbmRHcm91cExheW91dEVudHJ5KQoreworICAgIHN0ZDo6b3B0aW9uYWw8QnVmZmVyQmlu
ZGluZ0xheW91dD4gYnVmZmVyOworICAgIGlmIChiaW5kR3JvdXBMYXlvdXRFbnRyeS5idWZmZXIp
IHsKKyAgICAgICAgYnVmZmVyID0gY29udmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0RW50
cnkuYnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U2FtcGxlckJpbmRpbmdMYXlv
dXQ+IHNhbXBsZXI7CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LnNhbXBsZXIpIHsKKyAg
ICAgICAgc2FtcGxlciA9IGNvbnZlcnRUb0JhY2tpbmcoKmJpbmRHcm91cExheW91dEVudHJ5LnNh
bXBsZXIpOworICAgICAgICBpZiAoIXNhbXBsZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dHVyZUJpbmRpbmdMYXlvdXQ+
IHRleHR1cmU7CisgICAgaWYgKGJpbmRHcm91cExheW91dEVudHJ5LnRleHR1cmUpIHsKKyAgICAg
ICAgdGV4dHVyZSA9IGNvbnZlcnRUb0JhY2tpbmcoKmJpbmRHcm91cExheW91dEVudHJ5LnRleHR1
cmUpOworICAgICAgICBpZiAoIXRleHR1cmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5
b3V0PiBzdG9yYWdlVGV4dHVyZTsKKyAgICBpZiAoYmluZEdyb3VwTGF5b3V0RW50cnkuc3RvcmFn
ZVRleHR1cmUpIHsKKyAgICAgICAgc3RvcmFnZVRleHR1cmUgPSBjb252ZXJ0VG9CYWNraW5nKCpi
aW5kR3JvdXBMYXlvdXRFbnRyeS5zdG9yYWdlVGV4dHVyZSk7CisgICAgICAgIGlmICghc3RvcmFn
ZVRleHR1cmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAg
IHN0ZDo6b3B0aW9uYWw8RXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dD4gZXh0ZXJuYWxUZXh0
dXJlOworICAgIGlmIChiaW5kR3JvdXBMYXlvdXRFbnRyeS5leHRlcm5hbFRleHR1cmUpIHsKKyAg
ICAgICAgZXh0ZXJuYWxUZXh0dXJlID0gY29udmVydFRvQmFja2luZygqYmluZEdyb3VwTGF5b3V0
RW50cnkuZXh0ZXJuYWxUZXh0dXJlKTsKKyAgICAgICAgaWYgKCFleHRlcm5hbFRleHR1cmUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiB7IHsg
YmluZEdyb3VwTGF5b3V0RW50cnkuYmluZGluZywgYmluZEdyb3VwTGF5b3V0RW50cnkudmlzaWJp
bGl0eSwgV1RGTW92ZShidWZmZXIpLCBXVEZNb3ZlKHNhbXBsZXIpLCBXVEZNb3ZlKHRleHR1cmUp
LCBXVEZNb3ZlKHN0b3JhZ2VUZXh0dXJlKSwgV1RGTW92ZShleHRlcm5hbFRleHR1cmUpIH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0RW50cnk+IENv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBCaW5kR3Jv
dXBMYXlvdXRFbnRyeSYgYmluZEdyb3VwTGF5b3V0RW50cnkpCiB7CiAgICAgc3RkOjpvcHRpb25h
bDxQQUw6OldlYkdQVTo6QnVmZmVyQmluZGluZ0xheW91dD4gYnVmZmVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZENvbXBvbmVudC5jcHAKaW5kZXgg
Y2U3NmIwYmZkMGU0ZmUyYzM2MWI1MjA1ZGE4MGZlOWZhN2JhMzU2Zi4uMTQwODMxZDgzNWJmNWZi
YzM5ZDM3ZWUwNDA1NmJiNDc3NTFhOGFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQmxlbmRDb21wb25lbnQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAK
ICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUJsZW5kQ29tcG9uZW50Lmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QmxlbmRDb21w
b25lbnQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpCbGVuZENvbXBvbmVudCYgYmxlbmRDb21wb25lbnQpCit7CisgICAgcmV0dXJu
IHsgeyBibGVuZENvbXBvbmVudC5vcGVyYXRpb24sIGJsZW5kQ29tcG9uZW50LnNyY0ZhY3Rvciwg
YmxlbmRDb21wb25lbnQuZHN0RmFjdG9yIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6QmxlbmRDb21wb25lbnQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBCbGVuZENvbXBvbmVudCYgYmxlbmRDb21wb25lbnQpCiB7CiAgICAg
cmV0dXJuIHsgeyBibGVuZENvbXBvbmVudC5vcGVyYXRpb24sIGJsZW5kQ29tcG9uZW50LnNyY0Zh
Y3RvciwgYmxlbmRDb21wb25lbnQuZHN0RmFjdG9yIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVCbGVuZFN0YXRlLmNwcAppbmRleCBiYjRkMmU3OWE0OGUyODdh
Njg3NDJlMjMxOTBhZDc2YTY3MjM5MTdjLi45ZmVhMTc3MzY3NzNmZTJlMGJhNGZkZDg5NWE5YWE4
MWIyN2EzYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
QmxlbmRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJs
ZW5kU3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUJsZW5kU3RhdGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxCbGVuZFN0YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmxlbmRTdGF0ZSYgYmxlbmRTdGF0
ZSkKK3sKKyAgICBhdXRvIGNvbG9yID0gY29udmVydFRvQmFja2luZyhibGVuZFN0YXRlLmNvbG9y
KTsKKyAgICBpZiAoIWNvbG9yKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
YXV0byBhbHBoYSA9IGNvbnZlcnRUb0JhY2tpbmcoYmxlbmRTdGF0ZS5hbHBoYSk7CisgICAgaWYg
KCFhbHBoYSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsg
V1RGTW92ZSgqY29sb3IpLCBXVEZNb3ZlKCphbHBoYSkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpCbGVuZFN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQmxlbmRTdGF0ZSYgYmxlbmRTdGF0ZSkKIHsKICAgICBhdXRv
IGNvbG9yID0gY29udmVydEZyb21CYWNraW5nKGJsZW5kU3RhdGUuY29sb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckJpbmRpbmcuY3BwCmluZGV4
IGVmYmM5ZDk0YThiYmUxMzgxMjdhNmVjNmU1OWQ1M2FhN2RhMDVhZmQuLjMxODZlNWVhZjkxNmFk
NGVkYmUwZmU3ZTMwM2VlYmQ5OWE3YzUzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZy5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEJ1ZmZlckJpbmRp
bmc+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpCdWZmZXJCaW5kaW5nJiBidWZmZXJCaW5kaW5nKQoreworICAgIGF1dG8gYnVmZmVy
ID0gY29udmVydFRvQmFja2luZyhidWZmZXJCaW5kaW5nLmJ1ZmZlcik7CisgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IGJ1ZmZl
ciwgYnVmZmVyQmluZGluZy5vZmZzZXQsIGJ1ZmZlckJpbmRpbmcuc2l6ZSB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJ1ZmZlckJpbmRpbmc+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBCdWZmZXJCaW5kaW5nJiBidWZmZXJC
aW5kaW5nKQogewogICAgIGF1dG8qIGJ1ZmZlciA9IGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhi
dWZmZXJCaW5kaW5nLmJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZ0xheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVQnVmZmVyQmluZGluZ0xheW91dC5jcHAKaW5kZXggODY4YzM0N2E2YTk5
NDEwMTZmODE1YzY4MDY2YmE5MGY0OGFhZTNmYi4uNjQ2OTg2YTc3OTVkYTYxYTA5NzQ3ODQxZWEy
MjJlZjhhMWI3NTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUJ1ZmZlckJpbmRpbmdMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNr
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVCdWZmZXJCaW5kaW5nTGF5b3V0
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8QnVmZmVy
QmluZGluZ0xheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckJpbmRpbmdMYXlvdXQmIGJ1ZmZlckJpbmRpbmdMYXlv
dXQpCit7CisgICAgcmV0dXJuIHsgeyBidWZmZXJCaW5kaW5nTGF5b3V0LnR5cGUsIGJ1ZmZlckJp
bmRpbmdMYXlvdXQuaGFzRHluYW1pY09mZnNldCwgYnVmZmVyQmluZGluZ0xheW91dC5taW5CaW5k
aW5nU2l6ZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJ1ZmZlckJpbmRp
bmdMYXlvdXQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBCdWZmZXJCaW5kaW5nTGF5b3V0JiBidWZmZXJCaW5kaW5nTGF5b3V0KQogewogICAgIHJl
dHVybiB7IHsgYnVmZmVyQmluZGluZ0xheW91dC50eXBlLCBidWZmZXJCaW5kaW5nTGF5b3V0Lmhh
c0R5bmFtaWNPZmZzZXQsIGJ1ZmZlckJpbmRpbmdMYXlvdXQubWluQmluZGluZ1NpemUgfSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2Ny
aXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUJ1ZmZlckRlc2Ny
aXB0b3IuY3BwCmluZGV4IDc0NTY2NmFhOTg5ZDYzYmIxOThjZmFiMTE5YTgxYjhiYTI4YjgyZTku
LjAwZjZjN2Q3NmFlN2U4NTkyYTU0NzU2MmNmNDE4MTBhOTc3MmZkNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVCdWZmZXJEZXNjcmlwdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQnVmZmVyRGVzY3JpcHRvci5jcHAK
QEAgLTI5LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUg
IldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252
ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVQnVmZmVyRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPEJ1ZmZlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXJEZXNjcmlwdG9yJiBidWZm
ZXJEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4oYnVmZmVyRGVz
Y3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIGJ1ZmZlckRlc2NyaXB0b3Iuc2l6ZSwg
YnVmZmVyRGVzY3JpcHRvci51c2FnZSwgYnVmZmVyRGVzY3JpcHRvci5tYXBwZWRBdENyZWF0aW9u
IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3JpcHRvcj4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEJ1ZmZl
ckRlc2NyaXB0b3ImIGJ1ZmZlckRlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVy
dEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oYnVm
ZmVyRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
R1BVL1dlYkdQVUNhbnZhc0NvbmZpZ3VyYXRpb24uY3BwCmluZGV4IGU2NjY3ZGFjNDU2ZGY3MmZl
YmQwMmNkZWJjMDEzMzExYjZmYTFhZTUuLjQ4MTMyNTIyNmRmNjhjOTNhOTE4MjdjMjIzZmUwOGZm
YzRiODUyOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVD
YW52YXNDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5jcHAKQEAgLTI5LDEwICsyOSwyNyBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ2FudmFzQ29uZmlndXJhdGlvbi5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPENhbnZhc0NvbmZp
Z3VyYXRpb24+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDYW52YXNDb25maWd1cmF0aW9uJiBjYW52YXNDb25maWd1cmF0aW9uKQor
eworICAgIGF1dG8gZGV2aWNlID0gY29udmVydFRvQmFja2luZyhjYW52YXNDb25maWd1cmF0aW9u
LmRldmljZSk7CisgICAgaWYgKCFkZXZpY2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPEV4dGVudDNEPiBzaXplOworICAgIGlmIChjYW52YXNDb25m
aWd1cmF0aW9uLnNpemUpIHsKKyAgICAgICAgc2l6ZSA9IGNvbnZlcnRUb0JhY2tpbmcoKmNhbnZh
c0NvbmZpZ3VyYXRpb24uc2l6ZSk7CisgICAgICAgIGlmICghc2l6ZSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsgeyBkZXZpY2UsIGNhbnZh
c0NvbmZpZ3VyYXRpb24uZm9ybWF0LCBjYW52YXNDb25maWd1cmF0aW9uLnVzYWdlLCBjYW52YXND
b25maWd1cmF0aW9uLmNvbG9yU3BhY2UsIGNhbnZhc0NvbmZpZ3VyYXRpb24uY29tcG9zaXRpbmdB
bHBoYU1vZGUsIFdURk1vdmUoc2l6ZSkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2Vi
R1BVOjpDYW52YXNDb25maWd1cmF0aW9uPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ2FudmFzQ29uZmlndXJhdGlvbiYgY2FudmFzQ29uZmlndXJh
dGlvbikKIHsKICAgICBhdXRvKiBkZXZpY2UgPSBjb252ZXJ0RGV2aWNlRnJvbUJhY2tpbmcoY2Fu
dmFzQ29uZmlndXJhdGlvbi5kZXZpY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVDb2xvci5jcHAKaW5kZXggYjFhNzExOTc4YWNmZTM1MWJkYmMyODQxZDNlODNlZjAzYjcz
ZmY5YS4uMjc0ZDc4MmM4NDA4ZGMwNTUxOWRjOTY1MDFlNjY1OGZkZjVhZGRlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3IuY3BwCkBAIC0yOSwxMCArMjksMjgg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbG9yLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29sb3JEaWN0PiBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6
Q29sb3JEaWN0JiBjb2xvckRpY3QpCit7CisgICAgcmV0dXJuIHsgeyBjb2xvckRpY3QuciwgY29s
b3JEaWN0LmcsIGNvbG9yRGljdC5iLCBjb2xvckRpY3QuYSB9IH07Cit9CisKK3N0ZDo6b3B0aW9u
YWw8Q29sb3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb2xvciYgY29sb3IpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
Y29sb3IsIFtdIChjb25zdCBWZWN0b3I8ZG91YmxlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFs
PENvbG9yPiB7CisgICAgICAgIHJldHVybiB7IHsgdmVjdG9yIH0gfTsKKyAgICB9LCBbdGhpc10g
KGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmIGNvbG9yRGljdCkgLT4gc3RkOjpvcHRpb25h
bDxDb2xvcj4geworICAgICAgICBhdXRvIGNvbG9yID0gY29udmVydFRvQmFja2luZyhjb2xvckRp
Y3QpOworICAgICAgICBpZiAoIWNvbG9yKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpjb2xvcikgfSB9OworICAgIH0pOworfQor
CiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb2xvckRpY3Q+IENvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBDb2xvckRpY3QmIGNvbG9yRGljdCkK
IHsKICAgICByZXR1cm4geyB7IGNvbG9yRGljdC5yLCBjb2xvckRpY3QuZywgY29sb3JEaWN0LmIs
IGNvbG9yRGljdC5hIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVDb2xvclRhcmdldFN0YXRlLmNwcAppbmRleCBmMzljZmJjMWRiMDhlZjc3MGQ4NGNl
NTJiZWFjMWEwMjNkYTNmZjViLi4zZWUxODEzZDExOTY1MGI4NzYxMTk4ZGM4N2Q4MjFhYjM5ODY1
YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29sb3JU
YXJnZXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bG9yVGFyZ2V0U3RhdGUuY3BwCkBAIC0yOSwxMCArMjksMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BS
T0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwv
Z3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbG9yVGFyZ2V0U3RhdGUuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb2xvclRhcmdldFN0YXRlPiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29s
b3JUYXJnZXRTdGF0ZSYgY29sb3JUYXJnZXRTdGF0ZSkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPEJs
ZW5kU3RhdGU+IGJsZW5kOworICAgIGlmIChjb2xvclRhcmdldFN0YXRlLmJsZW5kKSB7CisgICAg
ICAgIGJsZW5kID0gY29udmVydFRvQmFja2luZygqY29sb3JUYXJnZXRTdGF0ZS5ibGVuZCk7Cisg
ICAgICAgIGlmICghYmxlbmQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKworICAgIHJldHVybiB7IHsgY29sb3JUYXJnZXRTdGF0ZS5mb3JtYXQsIFdURk1vdmUoYmxl
bmQpLCBjb2xvclRhcmdldFN0YXRlLndyaXRlTWFzayB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBDb2xvclRhcmdldFN0YXRlJiBjb2xvclRhcmdldFN0
YXRlKQogewogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkJsZW5kU3RhdGU+IGJsZW5k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVD
b21tYW5kQnVmZmVyRGVzY3JpcHRvci5jcHAKaW5kZXggNDJiOTk4ZWRkZTNlNGFiY2M5OGEwZTcy
MTRlZDJjZGUwMWVjOGI0Zi4uYWI4OWY1YTY2ZDBiZjI1YmU2NDE4ZGIwMTI1MDE5MjBhZDk0MDQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRC
dWZmZXJEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNp
bmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tbWFu
ZEJ1ZmZlckRlc2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciYgY29tbWFuZEJ1
ZmZlckRlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0
aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihjb21tYW5k
QnVmZmVyRGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSkgfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvcj4gQ29udmVydEZy
b21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENvbW1hbmRCdWZmZXJE
ZXNjcmlwdG9yJiBjb21tYW5kQnVmZmVyRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBj
b252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2Um
Pihjb21tYW5kQnVmZmVyRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcApp
bmRleCAwOTI0ZDQxN2E1MjExZDI5ODBhZWUyNzUwOWJlNmI1ZjUyYzg0MjQ3Li4yMjE4NzY5Mzk4
MGYxN2E4YjFhNmE3ZTk0ZmJjNDhkZjVjNWQxZjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9y
LmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVDb21tYW5kRW5jb2RlckRlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6
V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpD
b21tYW5kRW5jb2RlckRlc2NyaXB0b3ImIGNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcikKK3sKKyAg
ICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2Vi
R1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcikpOwor
ICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqYmFzZSkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpDb21tYW5kRW5jb2RlckRlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImIGNvbW1hbmRF
bmNvZGVyRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmco
c3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihjb21tYW5kRW5jb2RlckRl
c2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJH
UFVDb21waWxhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVUNvbXBpbGF0aW9uTWVzc2FnZS5jcHAKaW5kZXggYzg0ZDg4ZTkxYzQ4NjkzOGRkZGQ0ZGU4
NWFmOGExNGM0YmI1NjA1OS4uOGIwN2FiOWQ4MGVjYTQ5Y2QxYzE3MTVhNTY1YzhiODM5YzI0Yjhj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXBpbGF0
aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bXBpbGF0aW9uTWVzc2FnZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcGlsYXRpb25NZXNzYWdlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tcGlsYXRpb25NZXNzYWdlPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6Q29tcGlsYXRpb25NZXNzYWdlJiBjb21waWxhdGlvbk1lc3NhZ2UpCit7CisgICAgcmV0dXJu
IHsgeyBjb21waWxhdGlvbk1lc3NhZ2UubWVzc2FnZSgpLCBjb21waWxhdGlvbk1lc3NhZ2UudHlw
ZSgpLCBjb21waWxhdGlvbk1lc3NhZ2UubGluZU51bSgpLCBjb21waWxhdGlvbk1lc3NhZ2UubGlu
ZVBvcygpLCBjb21waWxhdGlvbk1lc3NhZ2Uub2Zmc2V0KCksIGNvbXBpbGF0aW9uTWVzc2FnZS5s
ZW5ndGgoKSB9IH07Cit9CisKIFJlZlB0cjxQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdl
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29t
cGlsYXRpb25NZXNzYWdlJiBjb21waWxhdGlvbk1lc3NhZ2UpCiB7CiAgICAgcmV0dXJuIFBBTDo6
V2ViR1BVOjpDb21waWxhdGlvbk1lc3NhZ2U6OmNyZWF0ZShjb21waWxhdGlvbk1lc3NhZ2UubWVz
c2FnZSwgY29tcGlsYXRpb25NZXNzYWdlLnR5cGUsIGNvbXBpbGF0aW9uTWVzc2FnZS5saW5lTnVt
LCBjb21waWxhdGlvbk1lc3NhZ2UubGluZVBvcywgY29tcGlsYXRpb25NZXNzYWdlLm9mZnNldCwg
Y29tcGlsYXRpb25NZXNzYWdlLmxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwCmluZGV4IDE5
MjlkYjVmNDQxNzgxYjBjOGUyNzlmOGQyOTk1NTExZmI4MzI5MzAuLjQyNmY3ZDE3MGMwMmM0ZWM3
YThhMTY0ODdjMzVlYTY5Zjk2ZTk1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0yOSwx
MCArMjksMjQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXB1
dGVQYXNzRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6
Om9wdGlvbmFsPENvbXB1dGVQYXNzRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6
OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRv
ciYgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0Jh
Y2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNl
Jj4oY29tcHV0ZVBhc3NEZXNjcmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byB0aW1lc3RhbXBXcml0ZXMgPSBjb252ZXJ0VG9C
YWNraW5nKGNvbXB1dGVQYXNzRGVzY3JpcHRvci50aW1lc3RhbXBXcml0ZXMpOworICAgIGlmICgh
dGltZXN0YW1wV3JpdGVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZSgqdGltZXN0YW1wV3JpdGVzKSB9IH07Cit9
CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRGVzY3JpcHRvcj4gQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IENvbXB1dGVQ
YXNzRGVzY3JpcHRvciYgY29tcHV0ZVBhc3NEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9
IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFz
ZSY+KGNvbXB1dGVQYXNzRGVzY3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5j
cHAKaW5kZXggYTZmOTI5NTgyZGUzZDhlZDJjMmM4OWM5M2M2NjI0ZWYxNjNkZjM5MS4uZWE3OTEy
MDlmNWYwYjkxZDliOWIzZGYyNmM4NGY5ZTg3ODczODhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3Rh
bXBXcml0ZXMuY3BwCkBAIC0yOSwxMCArMjksMzMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhp
Y3MvV2ViR1BVL1dlYkdQVUNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGUmIGNvbXB1dGVQYXNzVGltZXN0YW1w
V3JpdGUpCit7CisgICAgYXV0byBxdWVyeVNldCA9IGNvbnZlcnRUb0JhY2tpbmcoY29tcHV0ZVBh
c3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNldCk7CisgICAgaWYgKCFxdWVyeVNldCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgcXVlcnlTZXQsIGNvbXB1dGVQ
YXNzVGltZXN0YW1wV3JpdGUucXVlcnlJbmRleCwgY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZS5s
b2NhdGlvbiB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0
ZXM+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcyYgY29tcHV0ZVBhc3NUaW1lc3RhbXBX
cml0ZXMpCit7CisgICAgVmVjdG9yPENvbXB1dGVQYXNzVGltZXN0YW1wV3JpdGU+IHRpbWVzdGFt
cFdyaXRlczsKKyAgICB0aW1lc3RhbXBXcml0ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb21w
dXRlUGFzc1RpbWVzdGFtcFdyaXRlcy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgdGlt
ZXN0YW1wV3JpdGUgOiBjb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlcykgeworICAgICAgICBhdXRv
IGNvbnZlcnRlZFRpbWVzdGFtcFdyaXRlID0gY29udmVydFRvQmFja2luZyh0aW1lc3RhbXBXcml0
ZSk7CisgICAgICAgIGlmICghY29udmVydGVkVGltZXN0YW1wV3JpdGUpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB0aW1lc3RhbXBXcml0ZXMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoKmNvbnZlcnRlZFRpbWVzdGFtcFdyaXRlKSk7CisgICAgfQorICAgIHJldHVy
biB0aW1lc3RhbXBXcml0ZXM7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkNvbXB1
dGVQYXNzVGltZXN0YW1wV3JpdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRG
cm9tQmFja2luZyhjb25zdCBDb21wdXRlUGFzc1RpbWVzdGFtcFdyaXRlJiBjb21wdXRlUGFzc1Rp
bWVzdGFtcFdyaXRlKQogewogICAgIGF1dG8qIHF1ZXJ5U2V0ID0gY29udmVydFF1ZXJ5U2V0RnJv
bUJhY2tpbmcoY29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZS5xdWVyeVNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVsaW5lRGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBpcGVs
aW5lRGVzY3JpcHRvci5jcHAKaW5kZXggYzVkZWFlMjViNWFmYjUyMGQ0MGIwODNiMmYzMGZhODJi
MDQwYjZjNC4uZGQ5OTg4M2UwNjdlNmFmNzM5ZWFlYWQ0MDM3N2YwODJmZGNiOTZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbXB1dGVQaXBlbGluZURl
c2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDI0IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBp
cGVsaW5lRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZURlc2NyaXB0b3ImIGNvbXB1dGVQ
aXBlbGluZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhz
dGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSY+KGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGNvbXB1dGUgPSBjb252ZXJ0VG9CYWNraW5nKGNv
bXB1dGVQaXBlbGluZURlc2NyaXB0b3IuY29tcHV0ZSk7CisgICAgaWYgKCFjb21wdXRlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNl
KSwgV1RGTW92ZSgqY29tcHV0ZSkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciYgY29tcHV0
ZVBpcGVsaW5lRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tp
bmcoc3RhdGljX2Nhc3Q8Y29uc3QgUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSY+KGNvbXB1dGVQaXBl
bGluZURlc2NyaXB0b3IpKTsKQEAgLTQzLDcgKzU3LDcgQEAgc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDoKICAgICBpZiAoIWNvbXB1dGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICByZXR1cm4geyBQQUw6OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvciB7IFdURk1v
dmUoKmJhc2UpLCBXVEZNb3ZlKCpjb21wdXRlKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3Zl
KCpiYXNlKSwgV1RGTW92ZSgqY29tcHV0ZSkgfSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVDb252ZXJ0
VG9CYWNraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5kZXggMzZiZTY5OWYzOGJmMDZhNmZiMWIwYWNkOWVh
ODZjMGE5ZjJkMmRmNy4uYTUzMzg3Njc4Y2I5ZDc1YTI3NmU0NjM3NTQxZDMxNjA2OWIwN2Q5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKQEAgLTI3LDQxICsyNywyNDIgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIldlYkdQVUNvbG9yLmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaCIKKyNpbmNsdWRlICJXZWJHUFVFcnJvci5o
IgorI2luY2x1ZGUgIldlYkdQVUV4dGVudDNELmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmll
ci5oIgorI2luY2x1ZGUgIldlYkdQVU9yaWdpbjJELmgiCisjaW5jbHVkZSAiV2ViR1BVT3JpZ2lu
M0QuaCIKKyNpbmNsdWRlICJXZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmgiCisjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb2xvci5oPgorI2luY2x1ZGUgPHBhbC9n
cmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NUaW1lc3RhbXBXcml0ZXMuaD4KKyNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUVycm9yLmg+CisjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVFeHRlbnQzRC5oPgorI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVT3JpZ2luMkQuaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVU9yaWdpbjNELmg+CisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5k
ZXJQYXNzVGltZXN0YW1wV3JpdGVzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAog
bmFtZXNwYWNlIFBBTDo6V2ViR1BVIHsKIAogY2xhc3MgQWRhcHRlcjsKIGNsYXNzIEJpbmRHcm91
cDsKK3N0cnVjdCBCaW5kR3JvdXBEZXNjcmlwdG9yOworc3RydWN0IEJpbmRHcm91cEVudHJ5Owog
Y2xhc3MgQmluZEdyb3VwTGF5b3V0Oworc3RydWN0IEJpbmRHcm91cExheW91dERlc2NyaXB0b3I7
CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RW50cnk7CitzdHJ1Y3QgQmxlbmRDb21wb25lbnQ7Citz
dHJ1Y3QgQmxlbmRTdGF0ZTsKIGNsYXNzIEJ1ZmZlcjsKK3N0cnVjdCBCdWZmZXJCaW5kaW5nOwor
c3RydWN0IEJ1ZmZlckJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgQnVmZmVyRGVzY3JpcHRvcjsKK3N0
cnVjdCBDYW52YXNDb25maWd1cmF0aW9uOworc3RydWN0IENvbG9yVGFyZ2V0U3RhdGU7CiBjbGFz
cyBDb21tYW5kQnVmZmVyOworc3RydWN0IENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yOwogY2xhc3Mg
Q29tbWFuZEVuY29kZXI7CitzdHJ1Y3QgQ29tbWFuZEVuY29kZXJEZXNjcmlwdG9yOworY2xhc3Mg
Q29tcGlsYXRpb25NZXNzYWdlOworc3RydWN0IENvbXB1dGVQYXNzRGVzY3JpcHRvcjsKIGNsYXNz
IENvbXB1dGVQYXNzRW5jb2RlcjsKIGNsYXNzIENvbXB1dGVQaXBlbGluZTsKK3N0cnVjdCBDb21w
dXRlUGlwZWxpbmVEZXNjcmlwdG9yOworc3RydWN0IERlcHRoU3RlbmNpbFN0YXRlOwogY2xhc3Mg
RGV2aWNlOworc3RydWN0IERldmljZURlc2NyaXB0b3I7CitjbGFzcyBFeHRlcm5hbFRleHR1cmU7
CitzdHJ1Y3QgRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dDsKK3N0cnVjdCBFeHRlcm5hbFRl
eHR1cmVEZXNjcmlwdG9yOworc3RydWN0IEZyYWdtZW50U3RhdGU7CiBjbGFzcyBHUFU7CitzdHJ1
Y3QgSWRlbnRpZmllcjsKK3N0cnVjdCBJbWFnZUNvcHlCdWZmZXI7CitzdHJ1Y3QgSW1hZ2VDb3B5
RXh0ZXJuYWxJbWFnZTsKK3N0cnVjdCBJbWFnZUNvcHlUZXh0dXJlOworc3RydWN0IEltYWdlQ29w
eVRleHR1cmVUYWdnZWQ7CitzdHJ1Y3QgSW1hZ2VEYXRhTGF5b3V0Oworc3RydWN0IE11bHRpc2Ft
cGxlU3RhdGU7CitzdHJ1Y3QgT2JqZWN0RGVzY3JpcHRvckJhc2U7CitjbGFzcyBPdXRPZk1lbW9y
eUVycm9yOworc3RydWN0IFBpcGVsaW5lRGVzY3JpcHRvckJhc2U7CiBjbGFzcyBQaXBlbGluZUxh
eW91dDsKK3N0cnVjdCBQaXBlbGluZUxheW91dERlc2NyaXB0b3I7CitzdHJ1Y3QgUHJpbWl0aXZl
U3RhdGU7CitzdHJ1Y3QgUHJvZ3JhbW1hYmxlU3RhZ2U7CiBjbGFzcyBRdWVyeVNldDsKK3N0cnVj
dCBRdWVyeVNldERlc2NyaXB0b3I7CiBjbGFzcyBRdWV1ZTsKLWNsYXNzIFJlbmRlckJ1bmRsZUVu
Y29kZXI7CiBjbGFzcyBSZW5kZXJCdW5kbGU7CitzdHJ1Y3QgUmVuZGVyQnVuZGxlRGVzY3JpcHRv
cjsKK2NsYXNzIFJlbmRlckJ1bmRsZUVuY29kZXI7CitzdHJ1Y3QgUmVuZGVyQnVuZGxlRW5jb2Rl
ckRlc2NyaXB0b3I7CitzdHJ1Y3QgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudDsKK3N0cnVjdCBS
ZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudDsKK3N0cnVjdCBSZW5kZXJQYXNzRGVzY3Jp
cHRvcjsKIGNsYXNzIFJlbmRlclBhc3NFbmNvZGVyOworc3RydWN0IFJlbmRlclBhc3NMYXlvdXQ7
CiBjbGFzcyBSZW5kZXJQaXBlbGluZTsKK3N0cnVjdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I7
CitzdHJ1Y3QgUmVxdWVzdEFkYXB0ZXJPcHRpb25zOwogY2xhc3MgU2FtcGxlcjsKK3N0cnVjdCBT
YW1wbGVyQmluZGluZ0xheW91dDsKK3N0cnVjdCBTYW1wbGVyRGVzY3JpcHRvcjsKIGNsYXNzIFNo
YWRlck1vZHVsZTsKK3N0cnVjdCBTaGFkZXJNb2R1bGVEZXNjcmlwdG9yOworc3RydWN0IFN0ZW5j
aWxGYWNlU3RhdGU7CitzdHJ1Y3QgU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0OworY2xhc3Mg
U3VwcG9ydGVkRmVhdHVyZXM7CitjbGFzcyBTdXBwb3J0ZWRMaW1pdHM7CiBjbGFzcyBUZXh0dXJl
Oworc3RydWN0IFRleHR1cmVCaW5kaW5nTGF5b3V0Oworc3RydWN0IFRleHR1cmVEZXNjcmlwdG9y
OwogY2xhc3MgVGV4dHVyZVZpZXc7CitzdHJ1Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOworY2xh
c3MgVmFsaWRhdGlvbkVycm9yOworc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKK3N0cnVjdCBWZXJ0
ZXhCdWZmZXJMYXlvdXQ7CitzdHJ1Y3QgVmVydGV4U3RhdGU7CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TDo6V2ViR1BVCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0cnVjdCBCaW5kR3Jv
dXBEZXNjcmlwdG9yOworc3RydWN0IEJpbmRHcm91cEVudHJ5Oworc3RydWN0IEJpbmRHcm91cExh
eW91dERlc2NyaXB0b3I7CitzdHJ1Y3QgQmluZEdyb3VwTGF5b3V0RW50cnk7CitzdHJ1Y3QgQmxl
bmRDb21wb25lbnQ7CitzdHJ1Y3QgQmxlbmRTdGF0ZTsKK3N0cnVjdCBCdWZmZXJCaW5kaW5nOwor
c3RydWN0IEJ1ZmZlckJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgQnVmZmVyRGVzY3JpcHRvcjsKK3N0
cnVjdCBDYW52YXNDb25maWd1cmF0aW9uOworc3RydWN0IENvbG9yVGFyZ2V0U3RhdGU7CitzdHJ1
Y3QgQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3I7CitzdHJ1Y3QgQ29tbWFuZEVuY29kZXJEZXNjcmlw
dG9yOworc3RydWN0IENvbXBpbGF0aW9uTWVzc2FnZTsKK3N0cnVjdCBDb21wdXRlUGFzc0Rlc2Ny
aXB0b3I7CitzdHJ1Y3QgQ29tcHV0ZVBpcGVsaW5lRGVzY3JpcHRvcjsKK3N0cnVjdCBEZXB0aFN0
ZW5jaWxTdGF0ZTsKK3N0cnVjdCBEZXZpY2VEZXNjcmlwdG9yOworc3RydWN0IEV4dGVybmFsVGV4
dHVyZUJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvcjsKK3N0
cnVjdCBGcmFnbWVudFN0YXRlOworc3RydWN0IElkZW50aWZpZXI7CitzdHJ1Y3QgSW1hZ2VDb3B5
QnVmZmVyOworc3RydWN0IEltYWdlQ29weUV4dGVybmFsSW1hZ2U7CitzdHJ1Y3QgSW1hZ2VDb3B5
VGV4dHVyZTsKK3N0cnVjdCBJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkOworc3RydWN0IEltYWdlRGF0
YUxheW91dDsKK3N0cnVjdCBNdWx0aXNhbXBsZVN0YXRlOworc3RydWN0IE9iamVjdERlc2NyaXB0
b3JCYXNlOworc3RydWN0IE91dE9mTWVtb3J5RXJyb3I7CitzdHJ1Y3QgUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZTsKK3N0cnVjdCBQaXBlbGluZUxheW91dERlc2NyaXB0b3I7CitzdHJ1Y3QgUHJpbWl0
aXZlU3RhdGU7CitzdHJ1Y3QgUHJvZ3JhbW1hYmxlU3RhZ2U7CitzdHJ1Y3QgUXVlcnlTZXREZXNj
cmlwdG9yOworc3RydWN0IFJlbmRlckJ1bmRsZURlc2NyaXB0b3I7CitzdHJ1Y3QgUmVuZGVyQnVu
ZGxlRW5jb2RlckRlc2NyaXB0b3I7CitzdHJ1Y3QgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudDsK
K3N0cnVjdCBSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudDsKK3N0cnVjdCBSZW5kZXJQ
YXNzRGVzY3JpcHRvcjsKK3N0cnVjdCBSZW5kZXJQYXNzTGF5b3V0Oworc3RydWN0IFJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvcjsKK3N0cnVjdCBSZXF1ZXN0QWRhcHRlck9wdGlvbnM7CitzdHJ1Y3Qg
U2FtcGxlckJpbmRpbmdMYXlvdXQ7CitzdHJ1Y3QgU2FtcGxlckRlc2NyaXB0b3I7CitzdHJ1Y3Qg
U2hhZGVyTW9kdWxlRGVzY3JpcHRvcjsKK3N0cnVjdCBTdGVuY2lsRmFjZVN0YXRlOworc3RydWN0
IFN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dDsKK3N0cnVjdCBTdXBwb3J0ZWRGZWF0dXJlczsK
K3N0cnVjdCBTdXBwb3J0ZWRMaW1pdHM7CitzdHJ1Y3QgVGV4dHVyZUJpbmRpbmdMYXlvdXQ7Citz
dHJ1Y3QgVGV4dHVyZURlc2NyaXB0b3I7CitzdHJ1Y3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yOwor
c3RydWN0IFZhbGlkYXRpb25FcnJvcjsKK3N0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CitzdHJ1Y3Qg
VmVydGV4QnVmZmVyTGF5b3V0Oworc3RydWN0IFZlcnRleFN0YXRlOworCiBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0PiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29udmVydFRvQmFja2luZ0NvbnRleHQoKSA9
IGRlZmF1bHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPEJpbmRHcm91cERlc2NyaXB0b3I+IGNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cERlc2NyaXB0b3ImKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEJpbmRHcm91cEVudHJ5PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpCaW5kR3JvdXBFbnRyeSYpOworICAgIHN0ZDo6b3B0aW9uYWw8QmluZEdyb3Vw
TGF5b3V0RGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwTGF5b3V0RGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8QmluZEdyb3VwTGF5
b3V0RW50cnk+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExh
eW91dEVudHJ5Jik7CisgICAgc3RkOjpvcHRpb25hbDxCbGVuZENvbXBvbmVudD4gY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6QmxlbmRDb21wb25lbnQmKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPEJsZW5kU3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJs
ZW5kU3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1ZmZlckJpbmRpbmc+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckJpbmRpbmcmKTsKKyAgICBzdGQ6Om9wdGlv
bmFsPEJ1ZmZlckJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkJ1ZmZlckJpbmRpbmdMYXlvdXQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEJ1ZmZlckRlc2Ny
aXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlckRlc2NyaXB0
b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENhbnZhc0NvbmZpZ3VyYXRpb24+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNhbnZhc0NvbmZpZ3VyYXRpb24mKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPENvbG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb2xv
ciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JEaWN0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpDb2xvckRpY3QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9yVGFyZ2V0
U3RhdGU+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9yVGFyZ2V0U3Rh
dGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPENvbW1hbmRCdWZmZXJEZXNjcmlwdG9yPiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyRGVzY3JpcHRvciYpOwor
ICAgIHN0ZDo6b3B0aW9uYWw8Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21tYW5kRW5jb2RlckRlc2NyaXB0b3ImKTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENvbXBpbGF0aW9uTWVzc2FnZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQ
QUw6OldlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdlJik7CisgICAgc3RkOjpvcHRpb25hbDxDb21w
dXRlUGFzc0Rlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNv
bXB1dGVQYXNzRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBhc3NUaW1l
c3RhbXBXcml0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBh
c3NUaW1lc3RhbXBXcml0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8Q29tcHV0ZVBhc3NUaW1lc3Rh
bXBXcml0ZXM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNz
VGltZXN0YW1wV3JpdGVzJik7CisgICAgc3RkOjpvcHRpb25hbDxDb21wdXRlUGlwZWxpbmVEZXNj
cmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxp
bmVEZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxEZXB0aFN0ZW5jaWxTdGF0ZT4gY29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGVwdGhTdGVuY2lsU3RhdGUmKTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPERldmljZURlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OkRldmljZURlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEVycm9y
PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFcnJvciYpOworICAgIHN0ZDo6
b3B0aW9uYWw8RXh0ZW50M0Q+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkV4
dGVudDNEJik7CisgICAgc3RkOjpvcHRpb25hbDxFeHRlbnQzRERpY3Q+IGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OkV4dGVudDNERGljdCYpOworICAgIHN0ZDo6b3B0aW9uYWw8
RXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9u
YWw8RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6
OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8
RnJhZ21lbnRTdGF0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RnJhZ21l
bnRTdGF0ZSYpOworICAgIHN0ZDo6b3B0aW9uYWw8SWRlbnRpZmllcj4gY29udmVydFRvQmFja2lu
Zyhjb25zdCBQQUw6OldlYkdQVTo6SWRlbnRpZmllciYpOworICAgIHN0ZDo6b3B0aW9uYWw8SW1h
Z2VDb3B5QnVmZmVyPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNv
cHlCdWZmZXImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQ29weUV4dGVybmFsSW1hZ2U+IGNv
bnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weUV4dGVybmFsSW1hZ2Um
KTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlQ29weVRleHR1cmU+IGNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PEltYWdlQ29weVRleHR1cmVUYWdnZWQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OkltYWdlQ29weVRleHR1cmVUYWdnZWQmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPEltYWdlRGF0
YUxheW91dD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5
b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxNdWx0aXNhbXBsZVN0YXRlPiBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpNdWx0aXNhbXBsZVN0YXRlJik7CisgICAgc3RkOjpvcHRp
b25hbDxPYmplY3REZXNjcmlwdG9yQmFzZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjJE
PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPcmlnaW4yRCYpOworICAgIHN0
ZDo6b3B0aW9uYWw8T3JpZ2luMkREaWN0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpPcmlnaW4yRERpY3QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPcmlnaW4zRCYpOworICAgIHN0ZDo6b3B0aW9u
YWw8T3JpZ2luM0REaWN0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpPcmln
aW4zRERpY3QmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPE91dE9mTWVtb3J5RXJyb3I+IGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3ImKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFBpcGVsaW5lRGVzY3JpcHRvckJhc2U+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3Qg
UEFMOjpXZWJHUFU6OlBpcGVsaW5lRGVzY3JpcHRvckJhc2UmKTsKKyAgICBzdGQ6Om9wdGlvbmFs
PFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yJik7CisgICAgc3RkOjpvcHRpb25hbDxQcmlt
aXRpdmVTdGF0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UHJpbWl0aXZl
U3RhdGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2dyYW1tYWJsZVN0YWdlPiBjb252ZXJ0VG9C
YWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQcm9ncmFtbWFibGVTdGFnZSYpOworICAgIHN0ZDo6
b3B0aW9uYWw8UXVlcnlTZXREZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpRdWVyeVNldERlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlckJ1
bmRsZURlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZURlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlckJ1bmRsZUVuY29k
ZXJEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJC
dW5kbGVFbmNvZGVyRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0Nv
bG9yQXR0YWNobWVudD4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVy
UGFzc0NvbG9yQXR0YWNobWVudCYpOworICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJl
bmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50Jik7CisgICAgc3RkOjpvcHRpb25hbDxSZW5k
ZXJQYXNzRGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVu
ZGVyUGFzc0Rlc2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NMYXlvdXQ+
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQmKTsK
KyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gY29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlJik7CisgICAg
c3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzPiBjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzJik7CisgICAgc3Rk
OjpvcHRpb25hbDxSZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lRGVzY3JpcHRvciYpOworICAgIHN0ZDo6b3B0
aW9uYWw8UmVxdWVzdEFkYXB0ZXJPcHRpb25zPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFNhbXBs
ZXJCaW5kaW5nTGF5b3V0PiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTYW1w
bGVyQmluZGluZ0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8U2FtcGxlckRlc2NyaXB0b3I+
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJik7
CisgICAgc3RkOjpvcHRpb25hbDxTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBjb252ZXJ0VG9CYWNr
aW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yJik7CisgICAgc3Rk
OjpvcHRpb25hbDxTdGVuY2lsRmFjZVN0YXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6
V2ViR1BVOjpTdGVuY2lsRmFjZVN0YXRlJik7CisgICAgc3RkOjpvcHRpb25hbDxTdG9yYWdlVGV4
dHVyZUJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN0
b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dCYpOworICAgIHN0ZDo6b3B0aW9uYWw8U3VwcG9ydGVk
RmVhdHVyZXM+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZl
YXR1cmVzJik7CisgICAgc3RkOjpvcHRpb25hbDxTdXBwb3J0ZWRMaW1pdHM+IGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYpOworICAgIHN0ZDo6b3B0
aW9uYWw8VGV4dHVyZUJpbmRpbmdMYXlvdXQ+IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6OlRleHR1cmVCaW5kaW5nTGF5b3V0Jik7CisgICAgc3RkOjpvcHRpb25hbDxUZXh0dXJl
RGVzY3JpcHRvcj4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZURl
c2NyaXB0b3ImKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHR1cmVWaWV3RGVzY3JpcHRvcj4gY29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yJik7
CisgICAgc3RkOjpvcHRpb25hbDxWYWxpZGF0aW9uRXJyb3I+IGNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvciYpOworICAgIHN0ZDo6b3B0aW9uYWw8VmVy
dGV4QXR0cmlidXRlPiBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpWZXJ0ZXhB
dHRyaWJ1dGUmKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFZlcnRleEJ1ZmZlckxheW91dD4gY29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VmVydGV4QnVmZmVyTGF5b3V0Jik7CisgICAg
c3RkOjpvcHRpb25hbDxWZXJ0ZXhTdGF0ZT4gY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6VmVydGV4U3RhdGUmKTsKKwogICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpBZGFwdGVyJikgPSAwOwogICAgIHZpcnR1
YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpC
aW5kR3JvdXAmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dCYpID0gMDsKQEAgLTcxLDYg
KzI3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NFbmNvZGVyJikgPSAwOwogICAg
IHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpDb21wdXRlUGlwZWxpbmUmKSA9IDA7CiAgICAgdmlydHVhbCBXZWJHUFVJZGVudGlmaWVy
IGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkRldmljZSYpID0gMDsKKyAgICB2
aXJ0dWFsIFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6RXh0ZXJuYWxUZXh0dXJlJikgPSAwOwogICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBj
b252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpHUFUmKSA9IDA7CiAgICAgdmlydHVh
bCBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBp
cGVsaW5lTGF5b3V0JikgPSAwOwogICAgIHZpcnR1YWwgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0
VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldCYpID0gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRGVwdGhTdGVuY2lsU3RhdGUuY3Bw
CmluZGV4IDJiY2JiMDZlYTI0MDc0NWMwOWI0YzYyYmMwMDhlYWI4OWQ0M2M0ZTMuLjkwZDE4ZmMx
ODYyMmM0OGFhZTg5NTQzMTExOTRmZWY3OTI5ZDgwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVEZXB0aFN0ZW5jaWxTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVURlcHRoU3RlbmNpbFN0YXRlLmNwcApAQCAtMjks
MTAgKzI5LDI0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEZXB0
aFN0ZW5jaWxTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPERlcHRoU3RlbmNpbFN0YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGVwdGhTdGVuY2lsU3RhdGUmIGRlcHRoU3Rl
bmNpbFN0YXRlKQoreworICAgIGF1dG8gc3RlbmNpbEZyb250ID0gY29udmVydFRvQmFja2luZyhk
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnJvbnQpOworICAgIGlmICghc3RlbmNpbEZyb250KQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBzdGVuY2lsQmFjayA9IGNv
bnZlcnRUb0JhY2tpbmcoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2spOworICAgIGlmICgh
c3RlbmNpbEJhY2spCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4g
eyB7IGRlcHRoU3RlbmNpbFN0YXRlLmZvcm1hdCwgZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhXcml0
ZUVuYWJsZWQsIGRlcHRoU3RlbmNpbFN0YXRlLmRlcHRoQ29tcGFyZSwgV1RGTW92ZSgqc3RlbmNp
bEZyb250KSwgV1RGTW92ZSgqc3RlbmNpbEJhY2spLCBkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
UmVhZE1hc2ssIGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZU1hc2ssIGRlcHRoU3RlbmNp
bFN0YXRlLmRlcHRoQmlhcywgZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhCaWFzU2xvcGVTY2FsZSwg
ZGVwdGhTdGVuY2lsU3RhdGUuZGVwdGhCaWFzQ2xhbXAgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpEZXB0aFN0ZW5jaWxTdGF0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IERlcHRoU3RlbmNpbFN0YXRlJiBkZXB0aFN0ZW5j
aWxTdGF0ZSkKIHsKICAgICBhdXRvIHN0ZW5jaWxGcm9udCA9IGNvbnZlcnRGcm9tQmFja2luZyhk
ZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsRnJvbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVURldmljZURlc2NyaXB0b3IuY3BwCmluZGV4IGMwYTRkNmQ4
NmVhYWZlZjczODE4YTgxNWU0Yzk1MmRiNDRhZTBlMDMuLjU4MGFhMDZiYmU0NTA5NzJhNzJlYmMz
YzdkZGVjNGIxOWNhNWI3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVEZXZpY2VEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2lu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlRGVzY3JpcHRvci5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPERldmljZURlc2Ny
aXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBB
TDo6V2ViR1BVOjpEZXZpY2VEZXNjcmlwdG9yJiBkZXZpY2VEZXNjcmlwdG9yKQoreworICAgIGF1
dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6
Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4oZGV2aWNlRGVzY3JpcHRvcikpOworICAgIGlmICghYmFz
ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqYmFzZSksIGRldmljZURlc2NyaXB0b3IucmVxdWlyZWRGZWF0dXJlcyB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkRldmljZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBEZXZpY2VEZXNjcmlwdG9yJiBk
ZXZpY2VEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhz
dGF0aWNfY2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KGRldmljZURlc2NyaXB0b3Ip
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFcnJvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXJyb3IuY3BwCmluZGV4IGU4
ZjdkYjdkZmY2ZGY2MjZhNzUwNTlkZThiYzE2MzdjNjNhYzg4MzcuLjA2ZDMxYzVkMzA5MGU0YTky
ZmEwNjEyYzk4OTc2ZTY0MjRiMzRlNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVUVycm9yLmNwcApAQCAtMjksMTAgKzI5LDI2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVFcnJvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCitzdGQ6Om9wdGlvbmFsPEVycm9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RXJyb3ImIGVycm9yKQoreworICAgIHJldHVy
biBXVEY6OnN3aXRjaE9uKGVycm9yLCBbdGhpc10gKGNvbnN0IFJlZjxQQUw6OldlYkdQVTo6T3V0
T2ZNZW1vcnlFcnJvcj4mIG91dE9mTWVtb3J5RXJyb3IpIC0+IHN0ZDo6b3B0aW9uYWw8RXJyb3I+
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBjb252ZXJ0VG9CYWNraW5nKG91dE9mTWVtb3J5RXJy
b3IuZ2V0KCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgKnJlc3VsdCB9IH07CisgICAgfSwgW3RoaXNd
IChjb25zdCBSZWY8UEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcj4mIHZhbGlkYXRpb25FcnJv
cikgLT4gc3RkOjpvcHRpb25hbDxFcnJvcj4geworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZl
cnRUb0JhY2tpbmcodmFsaWRhdGlvbkVycm9yLmdldCgpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQp
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4geyB7ICpy
ZXN1bHQgfSB9OworICAgIH0pOworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFcnJv
cj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEVy
cm9yJiBlcnJvcikKIHsKICAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihlcnJvciwgW3RoaXNdIChj
b25zdCBPdXRPZk1lbW9yeUVycm9yJiBvdXRPZk1lbW9yeUVycm9yKSAtPiBzdGQ6Om9wdGlvbmFs
PFBBTDo6V2ViR1BVOjpFcnJvcj4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVUV4dGVudDNELmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVFeHRlbnQzRC5jcHAKaW5kZXggODAzNDgyMDQxOTUzOTQzOTNlZjdmNDA5YTUzZDY4ZDg1
MDc5MzE3YS4uMDUxODg0MmVmZTI1ZTUyMzUzNjZjZjBiMGE2OTIyMmYxZWU4MWIwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVudDNELmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZW50M0QuY3BwCkBAIC0yOSwx
MCArMjksMjggQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUV4dGVu
dDNELmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8RXh0
ZW50M0REaWN0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6RXh0ZW50M0REaWN0JiBleHRlbnQzRERpY3QpCit7CisgICAgcmV0dXJu
IHsgeyBleHRlbnQzRERpY3Qud2lkdGgsIGV4dGVudDNERGljdC5oZWlnaHQsIGV4dGVudDNERGlj
dC5kZXB0aE9yQXJyYXlMYXllcnMgfSB9OworfQorCitzdGQ6Om9wdGlvbmFsPEV4dGVudDNEPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6RXh0ZW50M0QmIGV4dGVudDNEKQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGV4dGVu
dDNELCBbXSAoY29uc3QgVmVjdG9yPFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZT4mIHZl
Y3RvcikgLT4gc3RkOjpvcHRpb25hbDxFeHRlbnQzRD4geworICAgICAgICByZXR1cm4geyB7IHZl
Y3RvciB9IH07CisgICAgfSwgW3RoaXNdIChjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0REaWN0
JiBleHRlbnQzRERpY3QpIC0+IHN0ZDo6b3B0aW9uYWw8RXh0ZW50M0Q+IHsKKyAgICAgICAgYXV0
byBleHRlbnQzRCA9IGNvbnZlcnRUb0JhY2tpbmcoZXh0ZW50M0REaWN0KTsKKyAgICAgICAgaWYg
KCFleHRlbnQzRCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqZXh0ZW50M0QpIH0gfTsKKyAgICB9KTsKK30KKwogc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6RXh0ZW50M0REaWN0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgRXh0ZW50M0REaWN0JiBleHRlbnQzRERpY3QpCiB7
CiAgICAgcmV0dXJuIHsgeyBleHRlbnQzRERpY3Qud2lkdGgsIGV4dGVudDNERGljdC5oZWlnaHQs
IGV4dGVudDNERGljdC5kZXB0aE9yQXJyYXlMYXllcnMgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZUJp
bmRpbmdMYXlvdXQuY3BwCmluZGV4IGNjNWI5MWE1YWE2Y2M5NWQ3NGYyN2VkOWNmMTM3MTM2ZTJl
OWRiOWEuLjU2NjZhM2I3MGEyZGM4ZTg1ZTVjYjdlMjQzNzdlMDgyNzQ2ZDAyN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVCaW5k
aW5nTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0
ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xh
eW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEV4
dGVybmFsVGV4dHVyZUJpbmRpbmdMYXlvdXQ+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5
b3V0JiBleHRlcm5hbFRleHR1cmVCaW5kaW5nTGF5b3V0KQoreworICAgIHJldHVybiB7IHsgfSB9
OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVCaW5kaW5n
TGF5b3V0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29u
c3QgRXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xheW91dCYgZXh0ZXJuYWxUZXh0dXJlQmluZGluZ0xh
eW91dCkKIHsKICAgICByZXR1cm4geyB7IH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yLmNw
cAppbmRleCA2M2UxYzZiZGQ1MzM0OTIxYzg4MWJlOGYzYThmZjk3ZjQyNWUxNDcyLi40NzZjYmVi
NzhhMzQzZTk3YjRmMTNhNjM3OTczNWIzZWZlZjJjNDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2Ny
aXB0b3IuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
ICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3Mv
V2ViR1BVL1dlYkdQVUV4dGVybmFsVGV4dHVyZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9y
PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYgZXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRv
cikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KGV4dGVybmFsVGV4dHVyZURlc2Ny
aXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBleHRlcm5hbFRleHR1cmVEZXNjcmlwdG9y
LmNvbG9yU3BhY2UgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpFeHRlcm5h
bFRleHR1cmVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJv
bUJhY2tpbmcoY29uc3QgRXh0ZXJuYWxUZXh0dXJlRGVzY3JpcHRvciYgZXh0ZXJuYWxUZXh0dXJl
RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihleHRlcm5hbFRleHR1cmVEZXNjcmlw
dG9yKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRnJh
Z21lbnRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVRnJhZ21l
bnRTdGF0ZS5jcHAKaW5kZXggNDgwNmI0MTIyMjcwNGRkMGMxYTQwOWQyZTExZmYxN2RmNzdhYTRk
Yy4uNWYwNzAxMzMzZGNkZDJiZDI3OGJmZGViODczZTA1OGMwYzA1NTIyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUZyYWdtZW50U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVGcmFnbWVudFN0YXRlLmNwcApAQCAt
MjksMTAgKzI5LDI5IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVG
cmFnbWVudFN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0
aW9uYWw8RnJhZ21lbnRTdGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkZyYWdtZW50U3RhdGUmIGZyYWdtZW50U3RhdGUpCit7
CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6
OldlYkdQVTo6UHJvZ3JhbW1hYmxlU3RhZ2UmPihmcmFnbWVudFN0YXRlKSk7CisgICAgaWYgKCFi
YXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPENvbG9yVGFy
Z2V0U3RhdGU+IHRhcmdldHM7CisgICAgdGFyZ2V0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZy
YWdtZW50U3RhdGUudGFyZ2V0cy5zaXplKCkpOworICAgIGZvciAoY29uc3QgYXV0byYgdGFyZ2V0
IDogZnJhZ21lbnRTdGF0ZS50YXJnZXRzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkVGFyZ2V0
ID0gY29udmVydFRvQmFja2luZyh0YXJnZXQpOworICAgICAgICBpZiAoIWNvbnZlcnRlZFRhcmdl
dCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHRhcmdldHMudW5j
aGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZFRhcmdldCkpOworICAgIH0KKworICAgIHJl
dHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUodGFyZ2V0cykgfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpGcmFnbWVudFN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgRnJhZ21lbnRTdGF0ZSYgZnJhZ21lbnRT
dGF0ZSkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8
Y29uc3QgUHJvZ3JhbW1hYmxlU3RhZ2UmPihmcmFnbWVudFN0YXRlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5QnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwCmluZGV4
IGZkNDcwMDU1MThhODM0NDE0YTk4NTAyMjljMTIxYWZkMWRlMTJlNTUuLmU0YjcwYTZlY2Y5YWZk
NGJiNTNjYjRmMjk3NjE0MGJlNDFlMTE4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlCdWZmZXIuY3BwCkBAIC0yOSwxNyArMjksMzEg
QEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRl
eHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUltYWdlQ29weUJ1ZmZl
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPEltYWdl
Q29weUJ1ZmZlcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29u
c3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weUJ1ZmZlciYgaW1hZ2VDb3B5QnVmZmVyKQoreworICAg
IGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJH
UFU6OkltYWdlRGF0YUxheW91dCY+KGltYWdlQ29weUJ1ZmZlcikpOworICAgIGlmICghYmFzZSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gYnVmZmVyID0gY29udmVy
dFRvQmFja2luZyhpbWFnZUNvcHlCdWZmZXIuYnVmZmVyKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFz
ZSksIGJ1ZmZlciB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkltYWdlQ29w
eUJ1ZmZlcj4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNv
bnN0IEltYWdlQ29weUJ1ZmZlciYgaW1hZ2VDb3B5QnVmZmVyKQogewogICAgIGF1dG8gYmFzZSA9
IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBJbWFnZURhdGFMYXlvdXQmPihp
bWFnZUNvcHlCdWZmZXIpKTsKICAgICBpZiAoIWJhc2UpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IGNvbnZlcnRCdWZmZXJGcm9tQmFja2luZyhpbWFn
ZUNvcHlCdWZmZXIuYnVmZmVyKTsKKyAgICBhdXRvKiBidWZmZXIgPSBjb252ZXJ0QnVmZmVyRnJv
bUJhY2tpbmcoaW1hZ2VDb3B5QnVmZmVyLmJ1ZmZlcik7CiAgICAgaWYgKCFidWZmZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlFeHRlcm5hbEltYWdlLmNwcAppbmRleCBj
MGNhM2JmMzU5YzllYjYwOTEyOGVmYWVmMjI2YzYzNmU4ZGU3ZTQwLi44Njg2ODNkMWQ0OThiNWZj
MTE3MjQ5MzcxYzUzYjQxOGQzY2EzMWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weUV4dGVybmFsSW1hZ2UuY3BwCkBAIC0y
OSwxMCArMjksMjMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRv
QmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUlt
YWdlQ29weUV4dGVybmFsSW1hZ2UuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAor
c3RkOjpvcHRpb25hbDxJbWFnZUNvcHlFeHRlcm5hbEltYWdlPiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6SW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZSYgaW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSkKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPE9y
aWdpbjJEPiBvcmlnaW47CisgICAgaWYgKGltYWdlQ29weUV4dGVybmFsSW1hZ2Uub3JpZ2luKSB7
CisgICAgICAgIGF1dG8gY29udmVydGVkT3JpZ2luID0gY29udmVydFRvQmFja2luZygqaW1hZ2VD
b3B5RXh0ZXJuYWxJbWFnZS5vcmlnaW4pOworICAgICAgICBpZiAoIWNvbnZlcnRlZE9yaWdpbikK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKG9yaWdpbikgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpJ
bWFnZUNvcHlFeHRlcm5hbEltYWdlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgSW1hZ2VDb3B5RXh0ZXJuYWxJbWFnZSYgaW1hZ2VDb3B5RXh0ZXJu
YWxJbWFnZSkKIHsKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpPcmlnaW4yRD4gb3Jp
Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdl
Q29weVRleHR1cmUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdl
Q29weVRleHR1cmUuY3BwCmluZGV4IDZjZGRkOTg5YWEwNGVkMTU3MTJlZjA1MWQzMTMwYzY5YTI1
MTFhZjIuLjYwOTA4MTk1NzUzMmZkM2YyN2JhMjIxOTE2YWI3YTcwNjczM2RlNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVy
ZS5jcHAKQEAgLTI5LDEzICsyOSwzMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCitzdGQ6Om9wdGlvbmFsPEltYWdlQ29weVRleHR1cmU+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJl
JiBpbWFnZUNvcHlUZXh0dXJlKQoreworICAgIGF1dG8gdGV4dHVyZSA9IGNvbnZlcnRUb0JhY2tp
bmcoaW1hZ2VDb3B5VGV4dHVyZS50ZXh0dXJlKTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiBvcmln
aW47CisgICAgaWYgKGltYWdlQ29weVRleHR1cmUub3JpZ2luKSB7CisgICAgICAgIGF1dG8gb3Jp
Z2luID0gY29udmVydFRvQmFja2luZygqaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4pOworICAgICAg
ICBpZiAoIW9yaWdpbikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
CisgICAgcmV0dXJuIHsgeyB0ZXh0dXJlLCBpbWFnZUNvcHlUZXh0dXJlLm1pcExldmVsLCBXVEZN
b3ZlKG9yaWdpbiksIGltYWdlQ29weVRleHR1cmUuYXNwZWN0IH0gfTsKK30KKwogc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZT4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEltYWdlQ29weVRleHR1cmUmIGltYWdlQ29w
eVRleHR1cmUpCiB7Ci0gICAgYXV0byB0ZXh0dXJlID0gY29udmVydFRleHR1cmVGcm9tQmFja2lu
ZyhpbWFnZUNvcHlUZXh0dXJlLnRleHR1cmUpOworICAgIGF1dG8qIHRleHR1cmUgPSBjb252ZXJ0
VGV4dHVyZUZyb21CYWNraW5nKGltYWdlQ29weVRleHR1cmUudGV4dHVyZSk7CiAgICAgaWYgKCF0
ZXh0dXJlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVSW1hZ2VDb3B5VGV4dHVyZVRhZ2dl
ZC5jcHAKaW5kZXggNmU3ZTNmY2NiNDMyNWUwMzUzMzI0YmMzODUyMWUzMTdlZWE4ZGYzNi4uNjRi
M2UyNWE0YTg2ZDBkYjYyNWZlOTAyNmRlNjE4MWY1Nzg3NGE0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVUltYWdlQ29weVRleHR1cmVUYWdnZWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFn
Z2VkLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZD4gQ29udmVy
dFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Oklt
YWdlQ29weVRleHR1cmVUYWdnZWQmIGltYWdlQ29weVRleHR1cmVUYWdnZWQpCit7CisgICAgYXV0
byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6
SW1hZ2VDb3B5VGV4dHVyZSY+KGltYWdlQ29weVRleHR1cmVUYWdnZWQpKTsKKyAgICBpZiAoIWJh
c2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1v
dmUoKmJhc2UpLCBpbWFnZUNvcHlUZXh0dXJlVGFnZ2VkLmNvbG9yU3BhY2UsIGltYWdlQ29weVRl
eHR1cmVUYWdnZWQucHJlbXVsdGlwbGllZEFscGhhIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQ
QUw6OldlYkdQVTo6SW1hZ2VDb3B5VGV4dHVyZVRhZ2dlZD4gQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IEltYWdlQ29weVRleHR1cmVUYWdnZWQmIGlt
YWdlQ29weVRleHR1cmVUYWdnZWQpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IEltYWdlQ29weVRleHR1cmUmPihpbWFnZUNvcHlUZXh0dXJl
VGFnZ2VkKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
SW1hZ2VEYXRhTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJ
bWFnZURhdGFMYXlvdXQuY3BwCmluZGV4IDJiMjEwYjliMWIzNzQ3YzJiNDUwM2QzMTUyODMxZjZm
NzU0M2JlNTQuLjgxNjY2MTU5OWMwYmJkY2JjYWE4ZTEyYTdlMGM5NDhhNWM5MjBmYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVJbWFnZURhdGFMYXlv
dXQuY3BwCkBAIC0yOSwxMCArMjksMTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
R1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2Vi
R1BVL1dlYkdQVUltYWdlRGF0YUxheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCitzdGQ6Om9wdGlvbmFsPEltYWdlRGF0YUxheW91dD4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkltYWdlRGF0YUxheW91dCYg
aW1hZ2VEYXRhTGF5b3V0KQoreworICAgIHJldHVybiB7IHsgaW1hZ2VEYXRhTGF5b3V0Lm9mZnNl
dCwgaW1hZ2VEYXRhTGF5b3V0LmJ5dGVzUGVyUm93LCBpbWFnZURhdGFMYXlvdXQucm93c1Blcklt
YWdlIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6SW1hZ2VEYXRhTGF5b3V0
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgSW1h
Z2VEYXRhTGF5b3V0JiBpbWFnZURhdGFMYXlvdXQpCiB7CiAgICAgcmV0dXJuIHsgeyBpbWFnZURh
dGFMYXlvdXQub2Zmc2V0LCBpbWFnZURhdGFMYXlvdXQuYnl0ZXNQZXJSb3csIGltYWdlRGF0YUxh
eW91dC5yb3dzUGVySW1hZ2UgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVU11bHRpc2FtcGxlU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVU11bHRpc2FtcGxlU3RhdGUuY3BwCmluZGV4IDA0NmU3OTBmODliZGMzOWVh
MTUzZjA2YjE4MmM0NzFmOThhNjFiY2YuLjg5Y2ZiNGM1ZGFhOWUwZWE5YWY0MTJjNmYyY2FiMDlm
M2U2MDUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVN
dWx0aXNhbXBsZVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVTXVsdGlzYW1wbGVTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVTXVsdGlzYW1wbGVTdGF0ZS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPE11bHRpc2FtcGxlU3RhdGU+IENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpNdWx0aXNhbXBsZVN0YXRlJiBtdWx0aXNhbXBsZVN0YXRlKQoreworICAgIHJldHVybiB7IHsg
bXVsdGlzYW1wbGVTdGF0ZS5jb3VudCwgbXVsdGlzYW1wbGVTdGF0ZS5tYXNrLCBtdWx0aXNhbXBs
ZVN0YXRlLmFscGhhVG9Db3ZlcmFnZUVuYWJsZWQgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBB
TDo6V2ViR1BVOjpNdWx0aXNhbXBsZVN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpj
b252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgTXVsdGlzYW1wbGVTdGF0ZSYgbXVsdGlzYW1wbGVTdGF0
ZSkKIHsKICAgICByZXR1cm4geyB7IG11bHRpc2FtcGxlU3RhdGUuY291bnQsIG11bHRpc2FtcGxl
U3RhdGUubWFzaywgbXVsdGlzYW1wbGVTdGF0ZS5hbHBoYVRvQ292ZXJhZ2VFbmFibGVkIH0gfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmplY3REZXNj
cmlwdG9yQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT2JqZWN0
RGVzY3JpcHRvckJhc2UuY3BwCmluZGV4IGQxMTU0ZWJkODZjZDczMjU4ZmExYzU4ZmQwYjA4YjYy
MDYyYjc2NGQuLmYwMTk5ZjA4OWMzMTkyYmM5YmUzNGI0NjRjYzdiODY5NTI4YjcwOGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPYmplY3REZXNjcmlwdG9y
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9iamVjdERl
c2NyaXB0b3JCYXNlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dy
YXBoaWNzL1dlYkdQVS9XZWJHUFVPYmplY3REZXNjcmlwdG9yQmFzZS5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPE9iamVjdERlc2NyaXB0b3JCYXNlPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmIG9iamVjdERlc2NyaXB0b3JCYXNlKQoreworICAgIHJl
dHVybiB7IHsgb2JqZWN0RGVzY3JpcHRvckJhc2UubGFiZWwgfSB9OworfQorCiBzdGQ6Om9wdGlv
bmFsPFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZT4gQ29udmVydEZyb21CYWNraW5n
Q29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJiBv
YmplY3REZXNjcmlwdG9yQmFzZSkKIHsKICAgICByZXR1cm4geyB7IG9iamVjdERlc2NyaXB0b3JC
YXNlLmxhYmVsIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVPcmlnaW4yRC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3Jp
Z2luMkQuY3BwCmluZGV4IDI4MDg4ZTMyYmNjOGMwMDAxYWJjYzIyNTNjZTRiMTM2YzY0ZTZlZjUu
LmQyZmMyNDdmZTg1NDg0MGMxMTExZmM4YTBjNTA0N2Y1NmRkM2I0Y2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjJELmNwcApAQCAtMjksMTAgKzI5LDI4
IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZy
b21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPcmlnaW4yRC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPE9yaWdpbjJERGlj
dD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpX
ZWJHUFU6Ok9yaWdpbjJERGljdCYgb3JpZ2luMkREaWN0KQoreworICAgIHJldHVybiB7IHsgb3Jp
Z2luMkREaWN0LngsIG9yaWdpbjJERGljdC55IH0gfTsKK30KKworc3RkOjpvcHRpb25hbDxPcmln
aW4yRD4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6Ok9yaWdpbjJEJiBvcmlnaW4yRCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hP
bihvcmlnaW4yRCwgW10gKGNvbnN0IFZlY3RvcjxQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5h
dGU+JiB2ZWN0b3IpIC0+IHN0ZDo6b3B0aW9uYWw8T3JpZ2luMkQ+IHsKKyAgICAgICAgcmV0dXJu
IHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdp
bjJERGljdCYgb3JpZ2luMkREaWN0KSAtPiBzdGQ6Om9wdGlvbmFsPE9yaWdpbjJEPiB7CisgICAg
ICAgIGF1dG8gb3JpZ2luMkQgPSBjb252ZXJ0VG9CYWNraW5nKG9yaWdpbjJERGljdCk7CisgICAg
ICAgIGlmICghb3JpZ2luMkQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4geyB7IFdURk1vdmUoKm9yaWdpbjJEKSB9IH07CisgICAgfSk7Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6Ok9yaWdpbjJERGljdD4gQ29udmVydEZyb21CYWNraW5n
Q29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IE9yaWdpbjJERGljdCYgb3JpZ2luMkRE
aWN0KQogewogICAgIHJldHVybiB7IHsgb3JpZ2luMkREaWN0LngsIG9yaWdpbjJERGljdC55IH0g
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4z
RC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVT3JpZ2luM0QuY3BwCmlu
ZGV4IDc3YmExYjY1YmIyMWZmNDhjNTRiYTYzMTJmMmRhOTM4M2M1NDM5ODkuLjNkOGM5MzdkZThh
MTNiYzIyOTdmMGNjNWVhYjYxZDFkMzRiODMzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVU9yaWdpbjNELmNwcApAQCAtMjksMTAgKzI5LDI4IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29u
dGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVPcmlnaW4zRC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPE9yaWdpbjNERGljdD4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6Ok9yaWdp
bjNERGljdCYgb3JpZ2luM0REaWN0KQoreworICAgIHJldHVybiB7IHsgb3JpZ2luM0REaWN0Lngs
IG9yaWdpbjNERGljdC55LCBvcmlnaW4zRERpY3QueiB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8
T3JpZ2luM0Q+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpPcmlnaW4zRCYgb3JpZ2luM0QpCit7CisgICAgcmV0dXJuIFdURjo6c3dp
dGNoT24ob3JpZ2luM0QsIFtdIChjb25zdCBWZWN0b3I8UEFMOjpXZWJHUFU6OkludGVnZXJDb29y
ZGluYXRlPiYgdmVjdG9yKSAtPiBzdGQ6Om9wdGlvbmFsPE9yaWdpbjNEPiB7CisgICAgICAgIHJl
dHVybiB7IHsgdmVjdG9yIH0gfTsKKyAgICB9LCBbdGhpc10gKGNvbnN0IFBBTDo6V2ViR1BVOjpP
cmlnaW4zRERpY3QmIG9yaWdpbjNERGljdCkgLT4gc3RkOjpvcHRpb25hbDxPcmlnaW4zRD4gewor
ICAgICAgICBhdXRvIG9yaWdpbjNEID0gY29udmVydFRvQmFja2luZyhvcmlnaW4zRERpY3QpOwor
ICAgICAgICBpZiAoIW9yaWdpbjNEKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpvcmlnaW4zRCkgfSB9OworICAgIH0pOworfQor
CiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpPcmlnaW4zRERpY3Q+IENvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBPcmlnaW4zRERpY3QmIG9yaWdp
bjNERGljdCkKIHsKICAgICByZXR1cm4geyB7IG9yaWdpbjNERGljdC54LCBvcmlnaW4zRERpY3Qu
eSwgb3JpZ2luM0REaWN0LnogfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViR1BVL1dlYkdQVU91dE9mTWVtb3J5RXJyb3IuY3BwCmluZGV4IGEzYzQ5NWY4Yzg0MzU3MzAy
OTdhMmRjZDViNmMxN2JjNGY1YWViNmUuLjA4ZDRmMTgxNDY3ZWY5MGUxMDFlNWM3N2IwN2FiZDA5
ZWMwOTk1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVP
dXRPZk1lbW9yeUVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVT3V0T2ZNZW1vcnlFcnJvci5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
PHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVT3V0T2ZNZW1vcnlFcnJvci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPE91dE9mTWVtb3J5RXJyb3I+IENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpPdXRPZk1lbW9yeUVycm9yJiBvdXRPZk1lbW9yeUVycm9yKQoreworICAgIHJldHVybiB7IHsg
fSB9OworfQorCiBSZWZQdHI8UEFMOjpXZWJHUFU6Ok91dE9mTWVtb3J5RXJyb3I+IENvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBPdXRPZk1lbW9yeUVy
cm9yJiBvdXRPZk1lbW9yeUVycm9yKQogewogICAgIHJldHVybiB7IFBBTDo6V2ViR1BVOjpPdXRP
Zk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVBpcGVsaW5lRGVzY3JpcHRvckJhc2UuY3BwCmluZGV4IGFi
YjhhOGM5NDZmYmMwM2RhNDExZDI0OTNmMGNjOTQyYTcwYzBjMjYuLmVlYWM4MzNjZWVlNWM5MTg2
M2Q4OTJlNTJjNmYxMTFlNTgwOGU3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVQaXBlbGluZURlc2NyaXB0b3JCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVEZXNjcmlwdG9yQmFzZS5jcHAKQEAgLTI5
LDEwICsyOSwyNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUGlw
ZWxpbmVEZXNjcmlwdG9yQmFzZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitz
dGQ6Om9wdGlvbmFsPFBpcGVsaW5lRGVzY3JpcHRvckJhc2U+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpQaXBlbGluZURlc2NyaXB0
b3JCYXNlJiBwaXBlbGluZURlc2NyaXB0b3JCYXNlKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZl
cnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0
b3JCYXNlJj4ocGlwZWxpbmVEZXNjcmlwdG9yQmFzZSkpOworICAgIGlmICghYmFzZSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFdlYkdQVUlkZW50aWZpZXIgbGF5b3V0Owor
ICAgIGlmIChwaXBlbGluZURlc2NyaXB0b3JCYXNlLmxheW91dCkgeworICAgICAgICBsYXlvdXQg
PSBjb252ZXJ0VG9CYWNraW5nKCpwaXBlbGluZURlc2NyaXB0b3JCYXNlLmxheW91dCk7CisgICAg
ICAgIGlmICghbGF5b3V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBsYXlvdXQgfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpQaXBlbGluZURlc2NyaXB0b3JCYXNlPiBDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUGlwZWxpbmVEZXNjcmlw
dG9yQmFzZSYgcGlwZWxpbmVEZXNjcmlwdG9yQmFzZSkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252
ZXJ0RnJvbUJhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihw
aXBlbGluZURlc2NyaXB0b3JCYXNlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCmluZGV4
IGQ3YTI4MjEwZjgxNDkxZjg0MWE1ZjAyMDBmMGI2ZDUyY2YzMjc2NTAuLjgyOTJlMzA4NDI2NmQ0
NDUwN2VlM2NhMGVjMmEyMmM2NWI5Nzk2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dERlc2NyaXB0b3IuY3Bw
CkBAIC0yOSwxMCArMjksMjkgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCitzdGQ6Om9wdGlvbmFsPFBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvcj4gQ29udmVydFRv
QmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVs
aW5lTGF5b3V0RGVzY3JpcHRvciYgcGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKQoreworICAgIGF1
dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3QgUEFMOjpXZWJHUFU6
Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4ocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKSk7CisgICAg
aWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgVmVjdG9yPFdl
YkdQVUlkZW50aWZpZXI+IGJpbmRHcm91cExheW91dHM7CisgICAgYmluZEdyb3VwTGF5b3V0cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBpcGVsaW5lTGF5b3V0RGVzY3JpcHRvci5iaW5kR3JvdXBM
YXlvdXRzLnNpemUoKSk7CisgICAgZm9yIChhdXRvIGJhY2tpbmdCaW5kR3JvdXBMYXlvdXQgOiBw
aXBlbGluZUxheW91dERlc2NyaXB0b3IuYmluZEdyb3VwTGF5b3V0cykgeworICAgICAgICBhdXRv
IGVudHJ5ID0gY29udmVydFRvQmFja2luZyhiYWNraW5nQmluZEdyb3VwTGF5b3V0KTsKKyAgICAg
ICAgaWYgKCFlbnRyeSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IGJpbmRHcm91cExheW91dHMudW5jaGVja2VkQXBwZW5kKGVudHJ5KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBXVEZNb3ZlKGJpbmRHcm91cExheW91dHMpIH0gfTsK
K30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UGlwZWxpbmVMYXlvdXREZXNjcmlwdG9y
PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUGlw
ZWxpbmVMYXlvdXREZXNjcmlwdG9yJiBwaXBlbGluZUxheW91dERlc2NyaXB0b3IpCiB7CiAgICAg
YXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERl
c2NyaXB0b3JCYXNlJj4ocGlwZWxpbmVMYXlvdXREZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVByaW1pdGl2ZVN0YXRlLmNwcAppbmRleCBk
YjVhOTNkYjE3Y2Q5MWZjMmNkNDM1OTAzNTMxYjkwZjMwMDFiZmE4Li4wNmU5NWFmYmRkYTgwYWRl
YTYwYjY2MzQzZjA4MGM1ZjUwYzExYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVQcmltaXRpdmVTdGF0ZS5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFj
a2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUHJpbWl0aXZlU3RhdGUuaD4K
IAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxQcmltaXRpdmVT
dGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFM
OjpXZWJHUFU6OlByaW1pdGl2ZVN0YXRlJiBwcmltaXRpdmVTdGF0ZSkKK3sKKyAgICByZXR1cm4g
eyB7IHByaW1pdGl2ZVN0YXRlLnRvcG9sb2d5LCBwcmltaXRpdmVTdGF0ZS5zdHJpcEluZGV4Rm9y
bWF0LCBwcmltaXRpdmVTdGF0ZS5mcm9udEZhY2UsIHByaW1pdGl2ZVN0YXRlLmN1bGxNb2RlLCBw
cmltaXRpdmVTdGF0ZS51bmNsaXBwZWREZXB0aCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlByaW1pdGl2ZVN0YXRlPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUHJpbWl0aXZlU3RhdGUmIHByaW1pdGl2ZVN0YXRlKQogewog
ICAgIHJldHVybiB7IHsgcHJpbWl0aXZlU3RhdGUudG9wb2xvZ3ksIHByaW1pdGl2ZVN0YXRlLnN0
cmlwSW5kZXhGb3JtYXQsIHByaW1pdGl2ZVN0YXRlLmZyb250RmFjZSwgcHJpbWl0aXZlU3RhdGUu
Y3VsbE1vZGUsIHByaW1pdGl2ZVN0YXRlLnVuY2xpcHBlZERlcHRoIH0gfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUHJvZ3JhbW1hYmxlU3RhZ2UuY3Bw
CmluZGV4IDZiYzMzNWZmMWQ4NDIxNmVlMDcxNDNhOGU1ZDVlN2EyMjQwMjFmZjAuLjg5ZDM4ZjZl
OGZmMDAwNTEyMDUxMjAxOTc1NjNkMTU0ZDIzMDkxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVQcm9ncmFtbWFibGVTdGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVByb2dyYW1tYWJsZVN0YWdlLmNwcApAQCAtMjks
MTMgKzI5LDIzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQcm9n
cmFtbWFibGVTdGFnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9w
dGlvbmFsPFByb2dyYW1tYWJsZVN0YWdlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UHJvZ3JhbW1hYmxlU3RhZ2UmIHByb2dyYW1t
YWJsZVN0YWdlKQoreworICAgIGF1dG8gbW9kdWxlID0gY29udmVydFRvQmFja2luZyhwcm9ncmFt
bWFibGVTdGFnZS5tb2R1bGUpOworICAgIGlmICghbW9kdWxlKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyBtb2R1bGUsIHByb2dyYW1tYWJsZVN0YWdlLmVu
dHJ5UG9pbnQsIHByb2dyYW1tYWJsZVN0YWdlLmNvbnN0YW50cyB9IH07Cit9CisKIHN0ZDo6b3B0
aW9uYWw8UEFMOjpXZWJHUFU6OlByb2dyYW1tYWJsZVN0YWdlPiBDb252ZXJ0RnJvbUJhY2tpbmdD
b250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUHJvZ3JhbW1hYmxlU3RhZ2UmIHByb2dy
YW1tYWJsZVN0YWdlKQogewotICAgIGF1dG8gbW9kdWxlID0gY29udmVydFNoYWRlck1vZHVsZUZy
b21CYWNraW5nKHByb2dyYW1tYWJsZVN0YWdlLm1vZHVsZSk7CisgICAgYXV0byogbW9kdWxlID0g
Y29udmVydFNoYWRlck1vZHVsZUZyb21CYWNraW5nKHByb2dyYW1tYWJsZVN0YWdlLm1vZHVsZSk7
CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVRdWVyeVNldERlc2NyaXB0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3Jp
cHRvci5jcHAKaW5kZXggM2E4ZTM3MWM1NWY2OGU3MmI1NWFkNWQzNmI3YzBlY2M3YzJiMzZmYi4u
YTA3NjE4MjMxMzllMjkyZjA1MDZkN2RmZTZiYTY3YzViOTA5MTQ2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVF1ZXJ5U2V0RGVzY3JpcHRvci5j
cHAKQEAgLTI5LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVUXVlcnlTZXREZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8UXVlcnlTZXREZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXREZXNjcmlw
dG9yJiBxdWVyeVNldERlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFj
a2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2Um
PihxdWVyeVNldERlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBxdWVyeVNldERl
c2NyaXB0b3IudHlwZSwgcXVlcnlTZXREZXNjcmlwdG9yLmNvdW50LCBxdWVyeVNldERlc2NyaXB0
b3IucGlwZWxpbmVTdGF0aXN0aWNzIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQ
VTo6UXVlcnlTZXREZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0
RnJvbUJhY2tpbmcoY29uc3QgUXVlcnlTZXREZXNjcmlwdG9yJiBxdWVyeVNldERlc2NyaXB0b3Ip
CiB7CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0
IE9iamVjdERlc2NyaXB0b3JCYXNlJj4ocXVlcnlTZXREZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVzY3JpcHRv
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyQnVuZGxlRGVz
Y3JpcHRvci5jcHAKaW5kZXggMDdkZTkyZWMxNmU0MTAyN2VlYTNkMWI2YjY0Njk3M2VlZjRiOGE2
Yy4uYzlhMTc5YjI1MTNmNjVmZDU3MzBiYzI2MTVlNWEwZGJlZjk1NzdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZURlc2NyaXB0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVE
ZXNjcmlwdG9yLmNwcApAQCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyQnVuZGxlRGVzY3JpcHRvcj4g
Q29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJH
UFU6OlJlbmRlckJ1bmRsZURlc2NyaXB0b3ImIHJlbmRlckJ1bmRsZURlc2NyaXB0b3IpCit7Cisg
ICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6Oldl
YkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJCdW5kbGVEZXNjcmlwdG9yKSk7Cisg
ICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJu
IHsgeyBXVEZNb3ZlKCpiYXNlKSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlJlbmRlckJ1bmRsZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJCdW5kbGVEZXNjcmlwdG9yJiByZW5kZXJCdW5kbGVE
ZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNf
Y2FzdDxjb25zdCBPYmplY3REZXNjcmlwdG9yQmFzZSY+KHJlbmRlckJ1bmRsZURlc2NyaXB0b3Ip
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJC
dW5kbGVFbmNvZGVyRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3IuY3BwCmluZGV4IDI2NzQxZTJiMWZm
M2JiYjMzNzNjNDk3ZTA4NWVhMWMyMjM1MGM4YWIuLmE4M2ViOTI3YjMzYjVkNTg2ZWI4MGY0ZTY2
ZGMxODZlMWE5OGQxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLmNwcApA
QCAtMjksMTAgKzI5LDIwIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAi
V2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVSZW5kZXJCdW5kbGVFbmNvZGVyRGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpX
ZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yPiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIHJlbmRlckJ1bmRsZUVuY29kZXJEZXNj
cmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8
Y29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NMYXlvdXQmPihyZW5kZXJCdW5kbGVFbmNvZGVy
RGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIHJlbmRlckJ1bmRsZUVuY29kZXJE
ZXNjcmlwdG9yLmRlcHRoUmVhZE9ubHksIHJlbmRlckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yLnN0
ZW5jaWxSZWFkT25seSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIHJlbmRl
ckJ1bmRsZUVuY29kZXJEZXNjcmlwdG9yKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9t
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBSZW5kZXJQYXNzTGF5b3V0Jj4ocmVuZGVyQnVuZGxl
RW5jb2RlckRlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LmNwcAppbmRleCAz
ODg3MzhiNTA5YWE0YjcxNzU3MDg4N2QwOTUyOThjYjZkZjQyOWIyLi5jNDc1MGJmN2Y1ZTYwZGY2
OWY2NDY2Mjc0OWU4NDc1M2VhMGFjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuY3Bw
CkBAIC0yOSwxMyArMjksNDMgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRl
ICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50PiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVu
ZGVyUGFzc0NvbG9yQXR0YWNobWVudCYgcmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCkKK3sKKyAg
ICBhdXRvIHZpZXcgPSBjb252ZXJ0VG9CYWNraW5nKHJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQu
dmlldyk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgV2ViR1BVSWRlbnRpZmllciByZXNvbHZlVGFyZ2V0OworICAgIGlmIChyZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50LnJlc29sdmVUYXJnZXQpIHsKKyAgICAgICAgcmVzb2x2ZVRhcmdldCA9IGNv
bnZlcnRUb0JhY2tpbmcoKnJlbmRlclBhc3NDb2xvckF0dGFjaG1lbnQucmVzb2x2ZVRhcmdldCk7
CisgICAgICAgIGlmICghcmVzb2x2ZVRhcmdldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgYXV0byBsb2FkVmFsdWUgPSBXVEY6OnN3aXRjaE9uKHJlbmRl
clBhc3NDb2xvckF0dGFjaG1lbnQubG9hZFZhbHVlLCBbXSAoUEFMOjpXZWJHUFU6OkxvYWRPcCBs
b2FkT3ApIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp2YXJpYW50PFBBTDo6V2ViR1BVOjpMb2FkT3As
IFZlY3Rvcjxkb3VibGU+LCBDb2xvckRpY3Q+PiB7CisgICAgICAgIHJldHVybiB7IHsgbG9hZE9w
IH0gfTsKKyAgICB9LCBbXSAoY29uc3QgVmVjdG9yPGRvdWJsZT4mIHZlY3RvcikgLT4gc3RkOjpv
cHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJsZT4s
IENvbG9yRGljdD4+IHsKKyAgICAgICAgcmV0dXJuIHsgeyB2ZWN0b3IgfSB9OworICAgIH0sIFt0
aGlzXSAoY29uc3QgUEFMOjpXZWJHUFU6OkNvbG9yRGljdCYgY29sb3JEaWN0KSAtPiBzdGQ6Om9w
dGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8ZG91YmxlPiwg
Q29sb3JEaWN0Pj4geworICAgICAgICBhdXRvIGJhY2tpbmdDb2xvckRpY3QgPSBjb252ZXJ0VG9C
YWNraW5nKGNvbG9yRGljdCk7CisgICAgICAgIGlmICghYmFja2luZ0NvbG9yRGljdCkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
YmFja2luZ0NvbG9yRGljdCkgfSB9OworICAgIH0pOworICAgIGlmICghbG9hZFZhbHVlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyB2aWV3LCByZXNvbHZl
VGFyZ2V0LCBXVEZNb3ZlKCpsb2FkVmFsdWUpLCByZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LnN0
b3JlT3AgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzQ29s
b3JBdHRhY2htZW50PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgUmVuZGVyUGFzc0NvbG9yQXR0YWNobWVudCYgcmVuZGVyUGFzc0NvbG9yQXR0YWNo
bWVudCkKIHsKLSAgICBhdXRvIHZpZXcgPSBjb252ZXJ0VGV4dHVyZVZpZXdGcm9tQmFja2luZyhy
ZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LnZpZXcpOworICAgIGF1dG8qIHZpZXcgPSBjb252ZXJ0
VGV4dHVyZVZpZXdGcm9tQmFja2luZyhyZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50LnZpZXcpOwog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtNTAsMTEg
KzgwLDExIEBAIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NDb2xvckF0dGFj
aG1lbnQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6CiAgICAgICAgIHJldHVybiB7IHsgbG9h
ZE9wIH0gfTsKICAgICB9LCBbXSAoY29uc3QgVmVjdG9yPGRvdWJsZT4mIHZlY3RvcikgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRvdWJs
ZT4sIFBBTDo6V2ViR1BVOjpDb2xvckRpY3Q+PiB7CiAgICAgICAgIHJldHVybiB7IHsgdmVjdG9y
IH0gfTsKLSAgICB9LCBbdGhpc10gKGNvbnN0IENvbG9yRGljdCYgb3JpZ2luQ29sb3JEaWN0KSAt
PiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxQQUw6OldlYkdQVTo6TG9hZE9wLCBWZWN0b3I8
ZG91YmxlPiwgUEFMOjpXZWJHUFU6OkNvbG9yRGljdD4+IHsKLSAgICAgICAgYXV0byBjb2xvckRp
Y3QgPSBjb252ZXJ0RnJvbUJhY2tpbmcob3JpZ2luQ29sb3JEaWN0KTsKLSAgICAgICAgaWYgKCFj
b2xvckRpY3QpCisgICAgfSwgW3RoaXNdIChjb25zdCBDb2xvckRpY3QmIGNvbG9yRGljdCkgLT4g
c3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8UEFMOjpXZWJHUFU6OkxvYWRPcCwgVmVjdG9yPGRv
dWJsZT4sIFBBTDo6V2ViR1BVOjpDb2xvckRpY3Q+PiB7CisgICAgICAgIGF1dG8gYmFja2luZ0Nv
bG9yRGljdCA9IGNvbnZlcnRGcm9tQmFja2luZyhjb2xvckRpY3QpOworICAgICAgICBpZiAoIWJh
Y2tpbmdDb2xvckRpY3QpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAg
ICByZXR1cm4geyB7IFdURk1vdmUoKmNvbG9yRGljdCkgfSB9OworICAgICAgICByZXR1cm4geyB7
IFdURk1vdmUoKmJhY2tpbmdDb2xvckRpY3QpIH0gfTsKICAgICB9KTsKICAgICBpZiAoIWxvYWRW
YWx1ZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFzc0RlcHRo
U3RlbmNpbEF0dGFjaG1lbnQuY3BwCmluZGV4IDM4Y2E0MmYyZDM3NjIyODVmMjJmZjYyMDFjYmFj
NDRmODllMTAzOTguLjM2NjQxY2Q2Nzc2ODBjOGZlY2YzMWJmZTY5M2YxOTUwMzgxMmFhYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzRGVw
dGhTdGVuY2lsQXR0YWNobWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50LmNwcApAQCAtMjksMTMgKzI5
LDIzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNz
RGVwdGhTdGVuY2lsQXR0YWNobWVudC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPFJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRhY2htZW50PiBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVu
ZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQmIHJlbmRlclBhc3NEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50KQoreworICAgIGF1dG8gdmlldyA9IGNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGFzc0Rl
cHRoU3RlbmNpbEF0dGFjaG1lbnQudmlldyk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyB2aWV3LCByZW5kZXJQYXNzRGVwdGhT
dGVuY2lsQXR0YWNobWVudC5kZXB0aExvYWRWYWx1ZSwgcmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0
dGFjaG1lbnQuZGVwdGhTdG9yZU9wLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5k
ZXB0aFJlYWRPbmx5LCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsTG9h
ZFZhbHVlLCByZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudC5zdGVuY2lsU3RvcmVPcCwg
cmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuc3RlbmNpbFJlYWRPbmx5IH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFj
aG1lbnQ+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25z
dCBSZW5kZXJQYXNzRGVwdGhTdGVuY2lsQXR0YWNobWVudCYgcmVuZGVyUGFzc0RlcHRoU3RlbmNp
bEF0dGFjaG1lbnQpCiB7Ci0gICAgYXV0byB2aWV3ID0gY29udmVydFRleHR1cmVWaWV3RnJvbUJh
Y2tpbmcocmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQudmlldyk7CisgICAgYXV0byog
dmlldyA9IGNvbnZlcnRUZXh0dXJlVmlld0Zyb21CYWNraW5nKHJlbmRlclBhc3NEZXB0aFN0ZW5j
aWxBdHRhY2htZW50LnZpZXcpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlbmRlclBhc3NEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRvci5jcHAKaW5kZXggMDRiZGZjYTA1NzgzOWM1YWUzOTlj
YjNiMDljYjU3NmJiOWJiNjgwZS4uMTMyY2ZhNWI4ZmRjYzFiZDc4OWY2YWJiZWUyNmUyODQ2NDIy
NjJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NEZXNjcmlwdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjksNDcgQEAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NEZXNjcmlwdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0Rl
c2NyaXB0b3I+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzRGVzY3JpcHRvciYgcmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
Cit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQ
QUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJQYXNzRGVzY3JpcHRvcikp
OworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFZl
Y3RvcjxSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50PiBjb2xvckF0dGFjaG1lbnRzOworICAgIGNv
bG9yQXR0YWNobWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZW5kZXJQYXNzRGVzY3JpcHRv
ci5jb2xvckF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBjb2xvckF0
dGFjaG1lbnQgOiByZW5kZXJQYXNzRGVzY3JpcHRvci5jb2xvckF0dGFjaG1lbnRzKSB7CisgICAg
ICAgIGF1dG8gYmFja2luZ0NvbG9yQXR0YWNobWVudCA9IGNvbnZlcnRUb0JhY2tpbmcoY29sb3JB
dHRhY2htZW50KTsKKyAgICAgICAgaWYgKCFiYWNraW5nQ29sb3JBdHRhY2htZW50KQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY29sb3JBdHRhY2htZW50cy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZSgqYmFja2luZ0NvbG9yQXR0YWNobWVudCkpOworICAgIH0KKwor
ICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyUGFzc0RlcHRoU3RlbmNpbEF0dGFjaG1lbnQ+IGRlcHRo
U3RlbmNpbEF0dGFjaG1lbnQ7CisgICAgaWYgKHJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQpIHsKKyAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IGNvbnZl
cnRUb0JhY2tpbmcoKnJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQp
OworICAgICAgICBpZiAoIWRlcHRoU3RlbmNpbEF0dGFjaG1lbnQpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIFdlYkdQVUlkZW50aWZpZXIgb2NjbHVzaW9u
UXVlcnlTZXQ7CisgICAgaWYgKHJlbmRlclBhc3NEZXNjcmlwdG9yLm9jY2x1c2lvblF1ZXJ5U2V0
KSB7CisgICAgICAgIG9jY2x1c2lvblF1ZXJ5U2V0ID0gY29udmVydFRvQmFja2luZygqcmVuZGVy
UGFzc0Rlc2NyaXB0b3Iub2NjbHVzaW9uUXVlcnlTZXQpOworICAgICAgICBpZiAoIW9jY2x1c2lv
blF1ZXJ5U2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAg
ICBhdXRvIHRpbWVzdGFtcFdyaXRlcyA9IGNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGFzc0Rlc2Ny
aXB0b3IudGltZXN0YW1wV3JpdGVzKTsKKyAgICBpZiAoIXRpbWVzdGFtcFdyaXRlcykKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSks
IFdURk1vdmUoY29sb3JBdHRhY2htZW50cyksIFdURk1vdmUoZGVwdGhTdGVuY2lsQXR0YWNobWVu
dCksIG9jY2x1c2lvblF1ZXJ5U2V0LCBXVEZNb3ZlKCp0aW1lc3RhbXBXcml0ZXMpIH0gfTsKK30K
Kwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0Rlc2NyaXB0b3I+IENvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQYXNz
RGVzY3JpcHRvciYgcmVuZGVyUGFzc0Rlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29u
dmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4o
cmVuZGVyUGFzc0Rlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzTGF5b3V0LmNwcAppbmRleCBkYjQ4NzFmMGI1OTg5NGEw
ZThlNjY3YWU4Yjk0NmJjNzM3OTI2MTY3Li5jMGU4YjcyZTJmZDE0ODhiNzY2MWZkZTIzYWYyM2Fm
NDZiZmNmMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
UmVuZGVyUGFzc0xheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dl
YkdQVVJlbmRlclBhc3NMYXlvdXQuY3BwCkBAIC0yOSwxMCArMjksMjAgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBhc3NMYXlvdXQuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZW5kZXJQYXNzTGF5b3V0PiBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0xheW91dCYgcmVuZGVyUGFzc0xheW91dCkKK3sKKyAgICBhdXRvIGJhc2Ug
PSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3RE
ZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBhc3NMYXlvdXQpKTsKKyAgICBpZiAoIWJhc2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2Up
LCByZW5kZXJQYXNzTGF5b3V0LmNvbG9yRm9ybWF0cywgcmVuZGVyUGFzc0xheW91dC5kZXB0aFN0
ZW5jaWxGb3JtYXQsIHJlbmRlclBhc3NMYXlvdXQuc2FtcGxlQ291bnQgfSB9OworfQorCiBzdGQ6
Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpSZW5kZXJQYXNzTGF5b3V0PiBDb252ZXJ0RnJvbUJhY2tp
bmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgUmVuZGVyUGFzc0xheW91dCYgcmVu
ZGVyUGFzc0xheW91dCkKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3Rh
dGljX2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihyZW5kZXJQYXNzTGF5b3V0KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVuZGVyUGFz
c1RpbWVzdGFtcFdyaXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcy5jcHAKaW5kZXggMTY4NDdkMTUzMzljNDI2MGY0YTg1
YzZlYjViZjA4YmM4YTQ4YWY4Ni4uMmI2MWNiM2QxNWEzODg3NjNkOWMyZTAzOGM3NmYyZDBjZmI0
NjRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBhc3NUaW1lc3RhbXBXcml0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0YW1wV3JpdGVzLmNwcApAQCAtMjksMTAgKzI5LDMzIEBA
CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21C
YWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJQYXNzVGltZXN0
YW1wV3JpdGVzLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRl
JiByZW5kZXJQYXNzVGltZXN0YW1wV3JpdGUpCit7CisgICAgYXV0byBxdWVyeVNldCA9IGNvbnZl
cnRUb0JhY2tpbmcocmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKKyAgICBpZiAo
IXF1ZXJ5U2V0KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsg
eyBxdWVyeVNldCwgcmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5SW5kZXgsIHJlbmRlclBh
c3NUaW1lc3RhbXBXcml0ZS5sb2NhdGlvbiB9IH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVuZGVy
UGFzc1RpbWVzdGFtcFdyaXRlcz4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0Jh
Y2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMmIHJlbmRl
clBhc3NUaW1lc3RhbXBXcml0ZXMpCit7CisgICAgVmVjdG9yPFJlbmRlclBhc3NUaW1lc3RhbXBX
cml0ZT4gdGltZXN0YW1wV3JpdGVzOworICAgIHRpbWVzdGFtcFdyaXRlcy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KHJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHRpbWVzdGFtcFdyaXRlIDogcmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlcykgewor
ICAgICAgICBhdXRvIGNvbnZlcnRlZFRpbWVzdGFtcFdyaXRlID0gY29udmVydFRvQmFja2luZyh0
aW1lc3RhbXBXcml0ZSk7CisgICAgICAgIGlmICghY29udmVydGVkVGltZXN0YW1wV3JpdGUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB0aW1lc3RhbXBXcml0ZXMu
dW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZFRpbWVzdGFtcFdyaXRlKSk7CisgICAg
fQorICAgIHJldHVybiB0aW1lc3RhbXBXcml0ZXM7Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlbmRlclBhc3NUaW1lc3RhbXBXcml0ZSYgcmVu
ZGVyUGFzc1RpbWVzdGFtcFdyaXRlKQogewogICAgIGF1dG8qIHF1ZXJ5U2V0ID0gY29udmVydFF1
ZXJ5U2V0RnJvbUJhY2tpbmcocmVuZGVyUGFzc1RpbWVzdGFtcFdyaXRlLnF1ZXJ5U2V0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVSZW5kZXJQaXBlbGlu
ZURlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRl
clBpcGVsaW5lRGVzY3JpcHRvci5jcHAKaW5kZXggZjMxYzQ2ZjA1ZmExODZiNzJkY2RjNzA1Yjgx
NjgyNjQwZjk3MmY0OC4uNWZiZTg3MTcxZDNmZDk0ZjNhNDNjZmNmNWRiZDdjYWE3YTE1OTdmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5jcHAKQEAgLTI5LDEwICsyOSw1NCBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9uYWw8UmVuZGVy
UGlwZWxpbmVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFj
a2luZyhjb25zdCBQQUw6OldlYkdQVTo6UmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yJiByZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRvQmFja2luZyhz
dGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6UGlwZWxpbmVEZXNjcmlwdG9yQmFzZSY+KHJl
bmRlclBpcGVsaW5lRGVzY3JpcHRvcikpOworICAgIGlmICghYmFzZSkKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gdmVydGV4ID0gY29udmVydFRvQmFja2luZyhyZW5k
ZXJQaXBlbGluZURlc2NyaXB0b3IudmVydGV4KTsKKyAgICBpZiAoIXZlcnRleCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8UHJpbWl0aXZlU3RhdGU+
IHByaW1pdGl2ZTsKKyAgICBpZiAocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9yLnByaW1pdGl2ZSkg
eworICAgICAgICBwcmltaXRpdmUgPSBjb252ZXJ0VG9CYWNraW5nKCpyZW5kZXJQaXBlbGluZURl
c2NyaXB0b3IucHJpbWl0aXZlKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmUpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8RGVwdGhT
dGVuY2lsU3RhdGU+IGRlcHRoU3RlbmNpbDsKKyAgICBpZiAocmVuZGVyUGlwZWxpbmVEZXNjcmlw
dG9yLmRlcHRoU3RlbmNpbCkgeworICAgICAgICBkZXB0aFN0ZW5jaWwgPSBjb252ZXJ0VG9CYWNr
aW5nKCpyZW5kZXJQaXBlbGluZURlc2NyaXB0b3IuZGVwdGhTdGVuY2lsKTsKKyAgICAgICAgaWYg
KCFkZXB0aFN0ZW5jaWwpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0K
KworICAgIHN0ZDo6b3B0aW9uYWw8TXVsdGlzYW1wbGVTdGF0ZT4gbXVsdGlzYW1wbGU7CisgICAg
aWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5tdWx0aXNhbXBsZSkgeworICAgICAgICBtdWx0
aXNhbXBsZSA9IGNvbnZlcnRUb0JhY2tpbmcoKnJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5tdWx0
aXNhbXBsZSk7CisgICAgICAgIGlmICghbXVsdGlzYW1wbGUpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8RnJhZ21lbnRTdGF0ZT4g
ZnJhZ21lbnQ7CisgICAgaWYgKHJlbmRlclBpcGVsaW5lRGVzY3JpcHRvci5mcmFnbWVudCkgewor
ICAgICAgICBmcmFnbWVudCA9IGNvbnZlcnRUb0JhY2tpbmcoKnJlbmRlclBpcGVsaW5lRGVzY3Jp
cHRvci5mcmFnbWVudCk7CisgICAgICAgIGlmICghZnJhZ21lbnQpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICBpZiAocmVuZGVyUGlwZWxpbmVEZXNjcmlwdG9y
LmZyYWdtZW50ICYmICFmcmFnbWVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUoKnZlcnRleCksIFdURk1vdmUo
cHJpbWl0aXZlKSwgV1RGTW92ZShkZXB0aFN0ZW5jaWwpLCBXVEZNb3ZlKG11bHRpc2FtcGxlKSwg
V1RGTW92ZShmcmFnbWVudCkgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpS
ZW5kZXJQaXBlbGluZURlc2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRGcm9tQmFja2luZyhjb25zdCBSZW5kZXJQaXBlbGluZURlc2NyaXB0b3ImIHJlbmRlclBpcGVs
aW5lRGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3Rh
dGljX2Nhc3Q8Y29uc3QgUGlwZWxpbmVEZXNjcmlwdG9yQmFzZSY+KHJlbmRlclBpcGVsaW5lRGVz
Y3JpcHRvcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVJlcXVlc3RBZGFwdGVyT3B0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcAppbmRleCBmZjE0ZTc5ODJjNDQzYjFjNDBl
MmUwYzA5NzhiNzFhZDc0MTdlNzY2Li5iMjJiMWJmZjVlNGRmZWM0NmFkY2VlM2M3MWY0OWMwOWI2
YmNjOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVUmVx
dWVzdEFkYXB0ZXJPcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVUmVxdWVzdEFkYXB0ZXJPcHRpb25zLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5n
Q29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZXF1ZXN0QWRhcHRlck9wdGlvbnMu
aD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxSZXF1ZXN0
QWRhcHRlck9wdGlvbnM+IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5n
KGNvbnN0IFBBTDo6V2ViR1BVOjpSZXF1ZXN0QWRhcHRlck9wdGlvbnMmIHJlcXVlc3RBZGFwdGVy
T3B0aW9ucykKK3sKKyAgICByZXR1cm4geyB7IHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5wb3dlclBy
ZWZlcmVuY2UsIHJlcXVlc3RBZGFwdGVyT3B0aW9ucy5mb3JjZUZhbGxiYWNrQWRhcHRlciB9IH07
Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucz4g
Q29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21CYWNraW5nKGNvbnN0IFJlcXVl
c3RBZGFwdGVyT3B0aW9ucyYgcmVxdWVzdEFkYXB0ZXJPcHRpb25zKQogewogICAgIHJldHVybiB7
IHsgcmVxdWVzdEFkYXB0ZXJPcHRpb25zLnBvd2VyUHJlZmVyZW5jZSwgcmVxdWVzdEFkYXB0ZXJP
cHRpb25zLmZvcmNlRmFsbGJhY2tBZGFwdGVyIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckJpbmRpbmdMYXlvdXQuY3BwCmluZGV4
IDM5ODQyNzQ5NGI0NTU4ODFiMzQ1Yjc0MDM2MTBkODcwMmYyN2NmNDguLjlmMWVhZmRmZWM0Njdk
Mzc4YThkOTAyMzEzOWQ3OTQ3Njk4ZGU5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyQmluZGluZ0xheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJCaW5kaW5nTGF5b3V0LmNwcApAQCAtMjks
MTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTYW1w
bGVyQmluZGluZ0xheW91dC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6
Om9wdGlvbmFsPFNhbXBsZXJCaW5kaW5nTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6
Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2FtcGxlckJpbmRpbmdMYXlvdXQm
IHNhbXBsZXJCaW5kaW5nTGF5b3V0KQoreworICAgIHJldHVybiB7IHsgc2FtcGxlckJpbmRpbmdM
YXlvdXQudHlwZSB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNhbXBsZXJC
aW5kaW5nTGF5b3V0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgU2FtcGxlckJpbmRpbmdMYXlvdXQmIHNhbXBsZXJCaW5kaW5nTGF5b3V0KQogewog
ICAgIHJldHVybiB7IHsgc2FtcGxlckJpbmRpbmdMYXlvdXQudHlwZSB9IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVNhbXBsZXJEZXNjcmlwdG9yLmNw
cAppbmRleCBjZjY0YWFkMGZmM2NiMWUwMjUwYzcxZjQ0MjJiYzcwYTYyYjU2YTM0Li5mMjcxZmJl
NmVmOGE3NmNjM2I0MmEzYjRiZTdiZmZlOTEzODI5YWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU2FtcGxlckRlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTYW1wbGVyRGVzY3JpcHRvci5jcHAKQEAgLTI5
LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU2Ft
cGxlckRlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpv
cHRpb25hbDxTYW1wbGVyRGVzY3JpcHRvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZl
cnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJiBzYW1wbGVy
RGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNraW5nKHN0YXRpY19j
YXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+KHNhbXBsZXJEZXNj
cmlwdG9yKSk7CisgICAgaWYgKCFiYXNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgc2FtcGxlckRlc2NyaXB0b3IuYWRkcmVz
c01vZGVVLCBzYW1wbGVyRGVzY3JpcHRvci5hZGRyZXNzTW9kZVYsIHNhbXBsZXJEZXNjcmlwdG9y
LmFkZHJlc3NNb2RlVywgc2FtcGxlckRlc2NyaXB0b3IubWFnRmlsdGVyLCBzYW1wbGVyRGVzY3Jp
cHRvci5taW5GaWx0ZXIsIHNhbXBsZXJEZXNjcmlwdG9yLm1pcG1hcEZpbHRlciwgc2FtcGxlckRl
c2NyaXB0b3IubG9kTWluQ2xhbXAsIHNhbXBsZXJEZXNjcmlwdG9yLmxvZE1heENsYW1wLCBzYW1w
bGVyRGVzY3JpcHRvci5jb21wYXJlLCBzYW1wbGVyRGVzY3JpcHRvci5tYXhBbmlzb3Ryb3B5IH0g
fTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2FtcGxlckRlc2NyaXB0b3I+IENv
bnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBTYW1wbGVy
RGVzY3JpcHRvciYgc2FtcGxlckRlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBiYXNlID0gY29udmVy
dEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0b3JCYXNlJj4oc2Ft
cGxlckRlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQ
VS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGVEZXNjcmlwdG9yLmNwcAppbmRleCBmNTRhYzdkZDRm
Y2JlYWUxNTA4YmE4NzRhYzJmYzk5ZDFlY2M2N2EyLi4yNmRiZDY3OGVlZDY5ZWM3YTUwMzU0ZDU4
N2NkZGVjNmZhY2VkYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVU2hhZGVyTW9kdWxlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVsZURlc2NyaXB0b3IuY3BwCkBAIC0yOSwxMCArMjks
MjAgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVNoYWRlck1vZHVs
ZURlc2NyaXB0b3IuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRp
b25hbDxTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6U2hhZGVyTW9kdWxlRGVzY3JpcHRvciYg
c2hhZGVyTW9kdWxlRGVzY3JpcHRvcikKK3sKKyAgICBhdXRvIGJhc2UgPSBjb252ZXJ0VG9CYWNr
aW5nKHN0YXRpY19jYXN0PGNvbnN0IFBBTDo6V2ViR1BVOjpPYmplY3REZXNjcmlwdG9yQmFzZSY+
KHNoYWRlck1vZHVsZURlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCBzaGFkZXJN
b2R1bGVEZXNjcmlwdG9yLmNvZGUgfSB9OworfQorCiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BV
OjpTaGFkZXJNb2R1bGVEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252
ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU2hhZGVyTW9kdWxlRGVzY3JpcHRvciYgc2hhZGVyTW9kdWxl
RGVzY3JpcHRvcikKIHsKICAgICBhdXRvIGJhc2UgPSBjb252ZXJ0RnJvbUJhY2tpbmcoc3RhdGlj
X2Nhc3Q8Y29uc3QgT2JqZWN0RGVzY3JpcHRvckJhc2UmPihzaGFkZXJNb2R1bGVEZXNjcmlwdG9y
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNp
bEZhY2VTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RlbmNp
bEZhY2VTdGF0ZS5jcHAKaW5kZXggMTdiZDg1N2M2OGVjZTAxMDRiOWE2YzIyZWU1ZjI3NWFiYmQ1
NDU5ZC4uODExNDg5MWIyMGViMTRjNzAyODYzMmFjOGUwNThkMzQzNThjYWY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN0ZW5jaWxGYWNlU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRl
LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVTdGVuY2lsRmFjZVN0YXRlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7
CiAKK3N0ZDo6b3B0aW9uYWw8U3RlbmNpbEZhY2VTdGF0ZT4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN0ZW5jaWxGYWNlU3RhdGUm
IHN0ZW5jaWxGYWNlU3RhdGUpCit7CisgICAgcmV0dXJuIHsgeyBzdGVuY2lsRmFjZVN0YXRlLmNv
bXBhcmUsIHN0ZW5jaWxGYWNlU3RhdGUuZmFpbE9wLCBzdGVuY2lsRmFjZVN0YXRlLmRlcHRoRmFp
bE9wLCBzdGVuY2lsRmFjZVN0YXRlLnBhc3NPcCB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFM
OjpXZWJHUFU6OlN0ZW5jaWxGYWNlU3RhdGU+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNv
bnZlcnRGcm9tQmFja2luZyhjb25zdCBTdGVuY2lsRmFjZVN0YXRlJiBzdGVuY2lsRmFjZVN0YXRl
KQogewogICAgIHJldHVybiB7IHsgc3RlbmNpbEZhY2VTdGF0ZS5jb21wYXJlLCBzdGVuY2lsRmFj
ZVN0YXRlLmZhaWxPcCwgc3RlbmNpbEZhY2VTdGF0ZS5kZXB0aEZhaWxPcCwgc3RlbmNpbEZhY2VT
dGF0ZS5wYXNzT3AgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BV
L1dlYkdQVVN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcAppbmRleCBi
M2E2ZjAyOWNiODM1NjM4ZjVhMTJmZTQ5NzE3YmMyNjc3MDk2NjY0Li4yZGNlOGJlZTNlOGI5ZjVm
MGEzMTgxNDgyYjM3OWQ2OTYzNjZhZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
LmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQ
VS9XZWJHUFVTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQ+
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2Vi
R1BVOjpTdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQmIHN0b3JhZ2VUZXh0dXJlQmluZGluZ0xh
eW91dCkKK3sKKyAgICByZXR1cm4geyB7IHN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5hY2Nl
c3MsIHN0b3JhZ2VUZXh0dXJlQmluZGluZ0xheW91dC5mb3JtYXQsIHN0b3JhZ2VUZXh0dXJlQmlu
ZGluZ0xheW91dC52aWV3RGltZW5zaW9uIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6Oldl
YkdQVTo6U3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0PiBDb252ZXJ0RnJvbUJhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgU3RvcmFnZVRleHR1cmVCaW5kaW5nTGF5b3V0
JiBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQpCiB7CiAgICAgcmV0dXJuIHsgeyBzdG9yYWdl
VGV4dHVyZUJpbmRpbmdMYXlvdXQuYWNjZXNzLCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQu
Zm9ybWF0LCBzdG9yYWdlVGV4dHVyZUJpbmRpbmdMYXlvdXQudmlld0RpbWVuc2lvbiB9IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVh
dHVyZXMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVN1cHBvcnRlZEZl
YXR1cmVzLmNwcAppbmRleCBkMGQ2ZGMyYzNhNmY2YjU0ODZhYTU5ZGM3YmQ2YzY0NDU1MmNiOTQx
Li4yNTE4YmY0M2FkMGUwOTAyNGM2NGNlYjU2MTYwM2U0ZjcyMGM3MDA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5j
cHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVD
b252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVU3VwcG9ydGVkRmVhdHVyZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAorc3RkOjpvcHRpb25hbDxTdXBwb3J0ZWRGZWF0dXJlcz4gQ29udmVydFRvQmFja2luZ0NvbnRl
eHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVz
JiBzdXBwb3J0ZWRGZWF0dXJlcykKK3sKKyAgICByZXR1cm4geyB7IHN1cHBvcnRlZEZlYXR1cmVz
LmZlYXR1cmVzKCkgfSB9OworfQorCiBSZWZQdHI8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1
cmVzPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3Qg
U3VwcG9ydGVkRmVhdHVyZXMmIHN1cHBvcnRlZEZlYXR1cmVzKQogewogICAgIHJldHVybiB7IFBB
TDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlczo6Y3JlYXRlKHN1cHBvcnRlZEZlYXR1cmVzLmZl
YXR1cmVzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQ
VVN1cHBvcnRlZExpbWl0cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BV
U3VwcG9ydGVkTGltaXRzLmNwcAppbmRleCA4ZTJjMDQxZjljMDYzYjEzZTA5YTM3NWUwNjVmZTlm
ZjFiNjA4NjViLi42MDg3NDMwMmU5M2E3NzhkNjRmMTU1NDVmY2ZlNTFjZGVjNjhiY2U3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGltaXRz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGlt
aXRzLmNwcApAQCAtMjksMTAgKzI5LDQzIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVTdXBwb3J0ZWRMaW1pdHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
IHsKIAorc3RkOjpvcHRpb25hbDxTdXBwb3J0ZWRMaW1pdHM+IENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMm
IHN1cHBvcnRlZExpbWl0cykKK3sKKyAgICByZXR1cm4geyB7CisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMUQoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eFRleHR1cmVEaW1lbnNpb24yRCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVy
ZURpbWVuc2lvbjNEKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlQXJyYXlM
YXllcnMoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heEJpbmRHcm91cHMoKSwKKyAgICAg
ICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3JtQnVmZmVyc1BlclBpcGVsaW5lTGF5
b3V0KCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQ
ZXJQaXBlbGluZUxheW91dCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4U2FtcGxlZFRl
eHR1cmVzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFNhbXBs
ZXJzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFN0b3JhZ2VC
dWZmZXJzUGVyU2hhZGVyU3RhZ2UoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFN0b3Jh
Z2VUZXh0dXJlc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhV
bmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5t
YXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1h
eFN0b3JhZ2VCdWZmZXJCaW5kaW5nU2l6ZSgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWlu
VW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4VmVydGV4QnVmZmVycygpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4
QXR0cmlidXRlcygpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QnVmZmVyQXJy
YXlTdHJpZGUoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heEludGVyU3RhZ2VTaGFkZXJD
b21wb25lbnRzKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vw
U3RvcmFnZVNpemUoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVJbnZvY2F0
aW9uc1Blcldvcmtncm91cCgpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdv
cmtncm91cFNpemVYKCksCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dy
b3VwU2l6ZVkoKSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
aXplWigpLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJE
aW1lbnNpb24oKSwKKyAgICB9IH07Cit9CisKIFJlZlB0cjxQQUw6OldlYkdQVTo6U3VwcG9ydGVk
TGltaXRzPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29u
c3QgU3VwcG9ydGVkTGltaXRzJiBzdXBwb3J0ZWRMaW1pdHMpCiB7CiAgICAgcmV0dXJuIHsgUEFM
OjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0czo6Y3JlYXRlKApAQCAtNjEsNyArOTQsOCBAQCBSZWZQ
dHI8UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cz4gQ29udmVydEZyb21CYWNraW5nQ29udGV4
dDo6Y29udmVydEZyb21CYWNraQogICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdv
cmtncm91cFNpemVYLAogICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91
cFNpemVZLAogICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cFNpemVa
LAotICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4Q29tcHV0ZVdvcmtncm91cHNQZXJEaW1lbnNp
b24pIH07CisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRp
bWVuc2lvbgorICAgICkgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVCaW5kaW5nTGF5
b3V0LmNwcAppbmRleCA1NWQ0NTEzMGY1MzVkMWQ0ZWE5MDA3YjJkYzE2MWJhYTczN2IwOTU2Li45
OTU0YmI3N2IyZWQ3NWM0YTcwYzI0NDFmNzQyNDgyYzNlZmY0Y2NjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlQmluZGluZ0xheW91
dC5jcHAKQEAgLTI5LDEwICsyOSwxNiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVVGV4dHVyZUJpbmRpbmdMYXlvdXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVIHsKIAorc3RkOjpvcHRpb25hbDxUZXh0dXJlQmluZGluZ0xheW91dD4gQ29udmVydFRvQmFj
a2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1cmVC
aW5kaW5nTGF5b3V0JiB0ZXh0dXJlQmluZGluZ0xheW91dCkKK3sKKyAgICByZXR1cm4geyB7IHRl
eHR1cmVCaW5kaW5nTGF5b3V0LnNhbXBsZVR5cGUsIHRleHR1cmVCaW5kaW5nTGF5b3V0LnZpZXdE
aW1lbnNpb24sIHRleHR1cmVCaW5kaW5nTGF5b3V0Lm11bHRpc2FtcGxlZCB9IH07Cit9CisKIHN0
ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVCaW5kaW5nTGF5b3V0PiBDb252ZXJ0RnJv
bUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVGV4dHVyZUJpbmRpbmdM
YXlvdXQmIHRleHR1cmVCaW5kaW5nTGF5b3V0KQogewogICAgIHJldHVybiB7IHsgdGV4dHVyZUJp
bmRpbmdMYXlvdXQuc2FtcGxlVHlwZSwgdGV4dHVyZUJpbmRpbmdMYXlvdXQudmlld0RpbWVuc2lv
biwgdGV4dHVyZUJpbmRpbmdMYXlvdXQubXVsdGlzYW1wbGVkIH0gfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IuY3BwCmlu
ZGV4IDVkZjMxNjdiOWE2ZDIyYjIyZGE2YTg0ZDhmNGRjMzQ0OTE0OWIwYTkuLmJmNmI0ZDM1NjJl
NzA3OGExYTRlNTRhY2RlZGMwNWQ5MGQ1ZjFlYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVEZXNjcmlwdG9yLmNwcApAQCAtMjksMTAg
KzI5LDI0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29u
dmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJl
RGVzY3JpcHRvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlv
bmFsPFRleHR1cmVEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZURlc2NyaXB0b3ImIHRleHR1cmVEZXNj
cmlwdG9yKQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8
Y29uc3QgUEFMOjpXZWJHUFU6Ok9iamVjdERlc2NyaXB0b3JCYXNlJj4odGV4dHVyZURlc2NyaXB0
b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBhdXRvIHNpemUgPSBjb252ZXJ0VG9CYWNraW5nKHRleHR1cmVEZXNjcmlwdG9yLnNpemUpOwor
ICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgV1RGTW92ZSgqYmFzZSksIFdURk1vdmUoKnNpemUpLCB0ZXh0dXJlRGVzY3JpcHRvci5t
aXBMZXZlbENvdW50LCB0ZXh0dXJlRGVzY3JpcHRvci5zYW1wbGVDb3VudCwgdGV4dHVyZURlc2Ny
aXB0b3IuZGltZW5zaW9uLCB0ZXh0dXJlRGVzY3JpcHRvci5mb3JtYXQsIHRleHR1cmVEZXNjcmlw
dG9yLnVzYWdlIH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZURl
c2NyaXB0b3I+IENvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhj
b25zdCBUZXh0dXJlRGVzY3JpcHRvciYgdGV4dHVyZURlc2NyaXB0b3IpCiB7CiAgICAgYXV0byBi
YXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9iamVjdERlc2NyaXB0
b3JCYXNlJj4odGV4dHVyZURlc2NyaXB0b3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5jcHAKaW5kZXgg
ZDFjYzU1MWNiNzcwNTE2OTZmZTc5ZGIwNGViNDlhNDk0ODRiNDYwNy4uNzZhYzZhNTgxYTdmZjY0
ZGZjMzBiOTgzY2JiNzQ0ODcwODQ2NTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5jcHAKQEAgLTI5
LDEwICsyOSwyMCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQ
VUNvbnZlcnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9C
YWNraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0
ZDo6b3B0aW9uYWw8VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4
dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlw
dG9yJiB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IpCit7CisgICAgYXV0byBiYXNlID0gY29udmVydFRv
QmFja2luZyhzdGF0aWNfY2FzdDxjb25zdCBQQUw6OldlYkdQVTo6T2JqZWN0RGVzY3JpcHRvckJh
c2UmPih0ZXh0dXJlVmlld0Rlc2NyaXB0b3IpKTsKKyAgICBpZiAoIWJhc2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmJhc2UpLCB0ZXh0
dXJlVmlld0Rlc2NyaXB0b3IuZm9ybWF0LCB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IuZGltZW5zaW9u
LCB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IuYXNwZWN0LCB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IuYmFz
ZU1pcExldmVsLCB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCwgdGV4dHVyZVZp
ZXdEZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyLCB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IuYXJyYXlM
YXllckNvdW50IH0gfTsKK30KKwogc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZVZp
ZXdEZXNjcmlwdG9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tp
bmcoY29uc3QgVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiB0ZXh0dXJlVmlld0Rlc2NyaXB0b3IpCiB7
CiAgICAgYXV0byBiYXNlID0gY29udmVydEZyb21CYWNraW5nKHN0YXRpY19jYXN0PGNvbnN0IE9i
amVjdERlc2NyaXB0b3JCYXNlJj4odGV4dHVyZVZpZXdEZXNjcmlwdG9yKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2ViR1BVVmFsaWRhdGlvbkVycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCmlu
ZGV4IDJiMWJjZmFkMDQzODI3ZTk0NWIyNWQ0ZWEwMjUyN2M2NDBiOTY4YTQuLjA2MjI2ZTVmNDlj
NDYxNWVhNWE0ZTdlZTMyZmFiY2I4YWYzMTQ2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWYWxpZGF0aW9uRXJyb3IuY3BwCkBAIC0yOSwxMCArMjks
MTYgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0
RnJvbUJhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVZhbGlkYXRpb25F
cnJvci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCitzdGQ6Om9wdGlvbmFsPFZh
bGlkYXRpb25FcnJvcj4gQ29udmVydFRvQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRUb0JhY2tpbmco
Y29uc3QgUEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvciYgdmFsaWRhdGlvbkVycm9yKQorewor
ICAgIHJldHVybiB7IHsgdmFsaWRhdGlvbkVycm9yLm1lc3NhZ2UoKSB9IH07Cit9CisKIFJlZlB0
cjxQQUw6OldlYkdQVTo6VmFsaWRhdGlvbkVycm9yPiBDb252ZXJ0RnJvbUJhY2tpbmdDb250ZXh0
Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVmFsaWRhdGlvbkVycm9yJiB2YWxpZGF0aW9uRXJy
b3IpCiB7CiAgICAgcmV0dXJuIHsgUEFMOjpXZWJHUFU6OlZhbGlkYXRpb25FcnJvcjo6Y3JlYXRl
KHZhbGlkYXRpb25FcnJvci5tZXNzYWdlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJHUFUvV2ViR1BVVmVydGV4QXR0cmlidXRlLmNwcAppbmRleCAxNWVkNWRiNjkzZTAz
NWRlYzAwMDcwOGE1ODQ4ZDA1M2MwNmYzOWZlLi5jNzE4YmUxNTQxZTk3YTJlY2VkM2MyMTQ3ZmIz
YTcwMDhlMDE1ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUvV2Vi
R1BVVmVydGV4QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJHUFUv
V2ViR1BVVmVydGV4QXR0cmlidXRlLmNwcApAQCAtMjksMTAgKzI5LDE2IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVWZXJ0ZXhBdHRyaWJ1dGUuaD4KIAogbmFtZXNw
YWNlIFdlYktpdDo6V2ViR1BVIHsKIAorc3RkOjpvcHRpb25hbDxWZXJ0ZXhBdHRyaWJ1dGU+IENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Ojpjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BV
OjpWZXJ0ZXhBdHRyaWJ1dGUmIHZlcnRleEF0dHJpYnV0ZSkKK3sKKyAgICByZXR1cm4geyB7IHZl
cnRleEF0dHJpYnV0ZS5mb3JtYXQsIHZlcnRleEF0dHJpYnV0ZS5vZmZzZXQsIHZlcnRleEF0dHJp
YnV0ZS5zaGFkZXJMb2NhdGlvbiB9IH07Cit9CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6
OlZlcnRleEF0dHJpYnV0ZT4gQ29udmVydEZyb21CYWNraW5nQ29udGV4dDo6Y29udmVydEZyb21C
YWNraW5nKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgdmVydGV4QXR0cmlidXRlKQogewogICAgIHJl
dHVybiB7IHsgdmVydGV4QXR0cmlidXRlLmZvcm1hdCwgdmVydGV4QXR0cmlidXRlLm9mZnNldCwg
dmVydGV4QXR0cmlidXRlLnNoYWRlckxvY2F0aW9uIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhCdWZmZXJMYXlvdXQuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5jcHAKaW5kZXgg
ODU0ODJkMDY1YWVhNWY4YjY3MmU3NDYxNzhmNmQ4Y2RmMjFjNzA3MS4uNTZhZjViZTFiMTEyY2Yx
ZDQ1YTZkNjBmZjhjMTBiZDI3OTM4MGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViR1BVL1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleEJ1ZmZlckxheW91dC5jcHAKQEAgLTI5LDEwICsy
OSwyNSBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRGcm9tQmFja2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVVmVydGV4QnVm
ZmVyTGF5b3V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKK3N0ZDo6b3B0aW9u
YWw8VmVydGV4QnVmZmVyTGF5b3V0PiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRv
QmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VmVydGV4QnVmZmVyTGF5b3V0JiB2ZXJ0ZXhCdWZm
ZXJMYXlvdXQpCit7CisgICAgVmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKKyAg
ICBhdHRyaWJ1dGVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkodmVydGV4QnVmZmVyTGF5b3V0LmF0
dHJpYnV0ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6IHZlcnRl
eEJ1ZmZlckxheW91dC5hdHRyaWJ1dGVzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkQXR0cmli
dXRlID0gY29udmVydFRvQmFja2luZyhhdHRyaWJ1dGUpOworICAgICAgICBpZiAoIWNvbnZlcnRl
ZEF0dHJpYnV0ZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGF0
dHJpYnV0ZXMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoKmNvbnZlcnRlZEF0dHJpYnV0ZSkpOwor
ICAgIH0KKworICAgIHJldHVybiB7IHsgdmVydGV4QnVmZmVyTGF5b3V0LmFycmF5U3RyaWRlLCB2
ZXJ0ZXhCdWZmZXJMYXlvdXQuc3RlcE1vZGUsIFdURk1vdmUoYXR0cmlidXRlcykgfSB9OworfQor
CiBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpWZXJ0ZXhCdWZmZXJMYXlvdXQ+IENvbnZlcnRG
cm9tQmFja2luZ0NvbnRleHQ6OmNvbnZlcnRGcm9tQmFja2luZyhjb25zdCBWZXJ0ZXhCdWZmZXJM
YXlvdXQmIHZlcnRleEJ1ZmZlckxheW91dCkKIHsKICAgICBWZWN0b3I8UEFMOjpXZWJHUFU6OlZl
cnRleEF0dHJpYnV0ZT4gYXR0cmlidXRlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJHUFUvV2ViR1BVVmVydGV4U3RhdGUuY3BwCmluZGV4IDNiMjQyODE3MjllZmNhZmM4OTI3OWE2
NWE0MDM3Yzk5NTIwMDI4ZjYuLmI3ZWVlZGM4Y2Y3MTk0MTQ4MjNhZjcwZmJjYWQyOWI0Njk5MjVj
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkdQVS9XZWJHUFVWZXJ0ZXhT
dGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViR1BVL1dlYkdQVVZlcnRleFN0
YXRlLmNwcApAQCAtMjksMTAgKzI5LDMyIEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAj
aW5jbHVkZSAiV2ViR1BVQ29udmVydEZyb21CYWNraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVWZXJ0ZXhTdGF0ZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewog
CitzdGQ6Om9wdGlvbmFsPFZlcnRleFN0YXRlPiBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29u
dmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6VmVydGV4U3RhdGUmIHZlcnRleFN0YXRl
KQoreworICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRUb0JhY2tpbmcoc3RhdGljX2Nhc3Q8Y29uc3Qg
UEFMOjpXZWJHUFU6OlByb2dyYW1tYWJsZVN0YWdlJj4odmVydGV4U3RhdGUpKTsKKyAgICBpZiAo
IWJhc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBWZWN0b3I8c3RkOjpv
cHRpb25hbDxWZXJ0ZXhCdWZmZXJMYXlvdXQ+PiBidWZmZXJzOworICAgIGJ1ZmZlcnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSh2ZXJ0ZXhTdGF0ZS5idWZmZXJzLnNpemUoKSk7CisgICAgZm9yIChj
b25zdCBhdXRvJiBidWZmZXIgOiB2ZXJ0ZXhTdGF0ZS5idWZmZXJzKSB7CisgICAgICAgIGlmIChi
dWZmZXIpIHsKKyAgICAgICAgICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gY29udmVydFRvQmFj
a2luZygqYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICBidWZmZXJzLnVuY2hl
Y2tlZEFwcGVuZChXVEZNb3ZlKGNvbnZlcnRlZEJ1ZmZlcikpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIGJ1ZmZlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bnVsbG9wdCk7CisgICAgfQor
CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpiYXNlKSwgV1RGTW92ZShidWZmZXJzKSB9IH07Cit9
CisKIHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlZlcnRleFN0YXRlPiBDb252ZXJ0RnJvbUJh
Y2tpbmdDb250ZXh0Ojpjb252ZXJ0RnJvbUJhY2tpbmcoY29uc3QgVmVydGV4U3RhdGUmIHZlcnRl
eFN0YXRlKQogewogICAgIGF1dG8gYmFzZSA9IGNvbnZlcnRGcm9tQmFja2luZyhzdGF0aWNfY2Fz
dDxjb25zdCBQcm9ncmFtbWFibGVTdGFnZSY+KHZlcnRleFN0YXRlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQWRhcHRlclByb3h5LmNwcAppbmRleCBkYTRiZDExMGJjMzdmYTBhYjIyNTlmNzc4MWYw
YWMzOWY3ZmQ0MTcyLi41OTA4ZThiZmY0ZGU3NzRjYjA5ZjQ5MDcyNGViNjhiMTIzYjU1ZDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVBZGFwdGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5jcHAKQEAgLTI4LDEzICsyOCwxNyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQWRhcHRlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJH
UFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUg
ewogCi1SZW1vdGVBZGFwdGVyUHJveHk6OlJlbW90ZUFkYXB0ZXJQcm94eShTdHJpbmcmJiBuYW1l
LCBQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXMmIGZlYXR1cmVzLCBQQUw6OldlYkdQVTo6
U3VwcG9ydGVkTGltaXRzJiBsaW1pdHMsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUFkYXB0ZXJQ
cm94eTo6UmVtb3RlQWRhcHRlclByb3h5KFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBw
b3J0ZWRGZWF0dXJlcyYgZmVhdHVyZXMsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmIGxp
bWl0cywgYm9vbCBpc0ZhbGxiYWNrQWRhcHRlciwgUmVtb3RlR1BVUHJveHkmIHBhcmVudCwgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBBZGFwdGVyKFdURk1vdmUobmFtZSksIGZlYXR1cmVz
LCBsaW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVyKQorICAgICwgbV9iYWNraW5nKGlkZW50aWZpZXIp
CiAgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00NCw4ICs0OCw0OCBAQCBSZW1v
dGVBZGFwdGVyUHJveHk6On5SZW1vdGVBZGFwdGVyUHJveHkoKQogCiB2b2lkIFJlbW90ZUFkYXB0
ZXJQcm94eTo6cmVxdWVzdERldmljZShjb25zdCBQQUw6OldlYkdQVTo6RGV2aWNlRGVzY3JpcHRv
ciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNl
PiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAg
VU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2Ny
aXB0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlk
ZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgU3VwcG9ydGVkRmVhdHVyZXMgc3VwcG9ydGVkRmVh
dHVyZXM7CisgICAgU3VwcG9ydGVkTGltaXRzIHN1cHBvcnRlZExpbWl0czsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlQWRhcHRlcjo6UmVxdWVzdERldmlj
ZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllciksIHsgc3VwcG9ydGVkRmVhdHVyZXMs
IHN1cHBvcnRlZExpbWl0cyB9KTsKKyAgICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gcmVzdWx0U3VwcG9ydGVkRmVhdHVyZXMgPSBQQUw6OldlYkdQVTo6U3Vw
cG9ydGVkRmVhdHVyZXM6OmNyZWF0ZShXVEZNb3ZlKHN1cHBvcnRlZEZlYXR1cmVzLmZlYXR1cmVz
KSk7CisgICAgYXV0byByZXN1bHRTdXBwb3J0ZWRMaW1pdHMgPSBQQUw6OldlYkdQVTo6U3VwcG9y
dGVkTGltaXRzOjpjcmVhdGUoCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGlt
ZW5zaW9uMUQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uMkQs
CisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlRGltZW5zaW9uM0QsCisgICAgICAg
IHN1cHBvcnRlZExpbWl0cy5tYXhUZXh0dXJlQXJyYXlMYXllcnMsCisgICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5tYXhCaW5kR3JvdXBzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHluYW1p
Y1VuaWZvcm1CdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhEeW5hbWljU3RvcmFnZUJ1ZmZlcnNQZXJQaXBlbGluZUxheW91dCwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heFNhbXBsZWRUZXh0dXJlc1BlclNoYWRlclN0YWdlLAorICAgICAgICBz
dXBwb3J0ZWRMaW1pdHMubWF4U2FtcGxlcnNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heFN0b3JhZ2VCdWZmZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhTdG9yYWdlVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3Vw
cG9ydGVkTGltaXRzLm1heFVuaWZvcm1CdWZmZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHN1cHBv
cnRlZExpbWl0cy5tYXhTdG9yYWdlQnVmZmVyQmluZGluZ1NpemUsCisgICAgICAgIHN1cHBvcnRl
ZExpbWl0cy5taW5Vbmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50LAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWluU3RvcmFnZUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgc3VwcG9y
dGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlcnMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhW
ZXJ0ZXhBdHRyaWJ1dGVzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QnVmZmVy
QXJyYXlTdHJpZGUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhJbnRlclN0YWdlU2hhZGVy
Q29tcG9uZW50cywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBT
dG9yYWdlU2l6ZSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVJbnZvY2F0aW9u
c1Blcldvcmtncm91cCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3Jv
dXBTaXplWCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXpl
WSwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBTaXplWiwKKyAg
ICAgICAgc3VwcG9ydGVkTGltaXRzLm1heENvbXB1dGVXb3JrZ3JvdXBzUGVyRGltZW5zaW9uCisg
ICAgKTsKKyAgICBjYWxsYmFjayhSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlKFdURk1vdmUocmVz
dWx0U3VwcG9ydGVkRmVhdHVyZXMpLCBXVEZNb3ZlKHJlc3VsdFN1cHBvcnRlZExpbWl0cyksICp0
aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVBZGFwdGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5o
CmluZGV4IDgzM2JiM2VlMzU5ZDFiYjg4NGJmNzk5ZTk1OWFmZWE1OTQ3Nzg2MzQuLjljM2Q5NTcx
NWZmNDEzZGI5YzUzOTQyNWM3YjU5NmVmZTM2Njc5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFkYXB0ZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUFk
YXB0ZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJSZW1vdGVHUFVQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUFkYXB0ZXIuaD4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM0LDIwICszNSwyNCBAQAogbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVIHsKIAogY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CitjbGFzcyBSZW1v
dGVHUFVQcm94eTsKIAogY2xhc3MgUmVtb3RlQWRhcHRlclByb3h5IGZpbmFsIDogcHVibGljIFBB
TDo6V2ViR1BVOjpBZGFwdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUFkYXB0
ZXJQcm94eT4gY3JlYXRlKFN0cmluZyYmIG5hbWUsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0
dXJlcyYgZmVhdHVyZXMsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHMmIGxpbWl0cywgYm9v
bCBpc0ZhbGxiYWNrQWRhcHRlciwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQWRhcHRlclByb3h5PiBjcmVhdGUo
U3RyaW5nJiYgbmFtZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiBmZWF0dXJlcywg
UEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0cyYgbGltaXRzLCBib29sIGlzRmFsbGJhY2tBZGFw
dGVyLCBSZW1vdGVHUFVQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUFkYXB0ZXJQcm94eShXVEZNb3Zl
KG5hbWUpLCBmZWF0dXJlcywgbGltaXRzLCBpc0ZhbGxiYWNrQWRhcHRlciwgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQWRhcHRl
clByb3h5KFdURk1vdmUobmFtZSksIGZlYXR1cmVzLCBsaW1pdHMsIGlzRmFsbGJhY2tBZGFwdGVy
LCBwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+UmVtb3RlQWRhcHRlclByb3h5KCk7CiAKKyAgICBSZW1vdGVHUFVQcm94
eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9v
dCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVBZGFwdGVyUHJveHko
U3RyaW5nJiYgbmFtZSwgUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZlYXR1cmVzJiwgUEFMOjpXZWJH
UFU6OlN1cHBvcnRlZExpbWl0cyYsIGJvb2wgaXNGYWxsYmFja0FkYXB0ZXIsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlQWRhcHRlclByb3h5KFN0cmluZyYmIG5hbWUsIFBB
TDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcyYsIFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1p
dHMmLCBib29sIGlzRmFsbGJhY2tBZGFwdGVyLCBSZW1vdGVHUFVQcm94eSYsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVBZGFwdGVyUHJv
eHkoY29uc3QgUmVtb3RlQWRhcHRlclByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQWRhcHRl
clByb3h5KFJlbW90ZUFkYXB0ZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU1LDEzICs2MCwyNiBA
QCBwcml2YXRlOgogICAgIFJlbW90ZUFkYXB0ZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUFkYXB0
ZXJQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3Rl
eHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisg
ICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5k
KFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpD
b25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xp
ZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkp
LCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCByZXF1
ZXN0RGV2aWNlKGNvbnN0IFBBTDo6V2ViR1BVOjpEZXZpY2VEZXNjcmlwdG9yJiwgV1RGOjpGdW5j
dGlvbjx2b2lkKFJlZjxQQUw6OldlYkdQVTo6RGV2aWNlPiYmKT4mJikgZmluYWw7CiAKICAgICBE
ZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFBBTDo6V2ViR1BVOjpEZXZpY2U+KT4+IG1fY2Fs
bGJhY2tzOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAg
UmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
ICAgIFJlZjxSZW1vdGVHUFVQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0
UHJveHkuY3BwCmluZGV4IDNlYjE3YWY4NTgzZGY3YmJkYWZhNDZjNDVlOTc3ZDYwOTA3MzI2M2Eu
LmU4YjAyZjE4YTNiZGU1OGVlYmZlMjZiNzFhMzYxY2ZiZmVjYWFiZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91
cExheW91dFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwx
NSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQmluZEdy
b3VwTGF5b3V0TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVCaW5kR3JvdXBM
YXlvdXRQcm94eTo6UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZUJpbmRHcm91cExheW91dFBy
b3h5OjpSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAg
ICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAg
ICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVCaW5k
R3JvdXBMYXlvdXRQcm94eTo6flJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KCkKIAogdm9pZCBS
ZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcm
IGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQmluZEdyb3VwTGF5b3V0OjpTZXRMYWJlbChsYWJlbCkp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExheW91dFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eS5oCmluZGV4IGFhZjk1NzBjYjAxZTVlMThkNzNjOTY1YTU1Y2Q3YzY1YWFlYjMwN2IuLmQ0
N2Q3ZWM3MGI4YTZkMWY5YmExNTA3MTg1MWJiZWM3YzJkNjliYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dl
YkdQVS9XZWJHUFVCaW5kR3JvdXBMYXlvdXQuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNz
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQ
cm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6QmluZEdyb3VwTGF5b3V0IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5PiBjcmVhdGUoQ29u
dmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRp
YyBSZWY8UmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUJpbmRHcm91cExh
eW91dFByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eSgpOwogCisg
ICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAg
UmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50
KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKIAotICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoUmVtb3RlRGV2
aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwog
CiAgICAgUmVtb3RlQmluZEdyb3VwTGF5b3V0UHJveHkoY29uc3QgUmVtb3RlQmluZEdyb3VwTGF5
b3V0UHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eShSZW1v
dGVCaW5kR3JvdXBMYXlvdXRQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBw
cml2YXRlOgogICAgIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5JiBvcGVyYXRvcj0oUmVtb3Rl
QmluZEdyb3VwTGF5b3V0UHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVy
IGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMg
aW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQm
JiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGlt
ZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURf
UkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9v
dCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAog
ICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdl
YkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9
OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2
aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUJpbmRHcm91cFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmNwcAppbmRleCA3Nzg0ODFlMGZk
NTg4NzY4OTNjNDJjMzU1MDA3YjcxYmZiMjBiMmU1Li5mYTAzN2IwYTFhM2VjYzhhNmM5MjhiZjJm
NDQ1ZjY0NDFjOThiMWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQmluZEdyb3VwUHJveHku
Y3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2lu
Y2x1ZGUgIlJlbW90ZUJpbmRHcm91cE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVy
dFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVt
b3RlQmluZEdyb3VwUHJveHk6OlJlbW90ZUJpbmRHcm91cFByb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2lu
Z0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVCaW5kR3JvdXBQcm94eTo6
UmVtb3RlQmluZEdyb3VwUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVu
dChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlQmluZEdyb3VwUHJveHk6
On5SZW1vdGVCaW5kR3JvdXBQcm94eSgpCiAKIHZvaWQgUmVtb3RlQmluZEdyb3VwUHJveHk6OnNl
dExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
bGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUJpbmRH
cm91cDo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCaW5kR3JvdXBQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
QmluZEdyb3VwUHJveHkuaAppbmRleCA0ZGJkMzgwZDg2ZGEyOGQ2OGVlYzQwMjkxM2IyYTg2YWYz
MTQxMzI5Li44ZGNhMTJiOGM3MTZjMjE4OGU2YThjZTQwYTY4MzRmZGZmOTBmMTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVC
aW5kR3JvdXBQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZUJpbmRHcm91cFByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJH
UFUvV2ViR1BVQmluZEdyb3VwLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQmluZEdyb3VwUHJveHkgZmluYWwgOiBw
dWJsaWMgUEFMOjpXZWJHUFU6OkJpbmRHcm91cCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZW1vdGVCaW5kR3JvdXBQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUJpbmRHcm91cFByb3h5
PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVCaW5kR3JvdXBQcm94
eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVCaW5kR3JvdXBQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlQmluZEdyb3VwUHJveHko
KTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsg
fQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgp
LnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVCaW5kR3JvdXBQcm94eShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZUJpbmRHcm91cFByb3h5KFJlbW90ZURldmljZVBy
b3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAg
IFJlbW90ZUJpbmRHcm91cFByb3h5KGNvbnN0IFJlbW90ZUJpbmRHcm91cFByb3h5JikgPSBkZWxl
dGU7CiAgICAgUmVtb3RlQmluZEdyb3VwUHJveHkoUmVtb3RlQmluZEdyb3VwUHJveHkmJikgPSBk
ZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVCaW5kR3JvdXBQ
cm94eSYgb3BlcmF0b3I9KFJlbW90ZUJpbmRHcm91cFByb3h5JiYpID0gZGVsZXRlOwogCiAgICAg
V2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9Cisg
ICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVv
dXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCku
c3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
ICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1l
b3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZp
ZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBS
ZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7Cisg
ICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVCdWZmZXJQcm94eS5jcHAKaW5kZXgg
N2EzMGViNDY0MjVmNTYxZjEzNzcyOGE4ZTZmYTBlZDljYWFlYzJhNi4uMjk3YWQyYzEyYTkxMWQx
Yzk4NDM0YTkyYTczOGY1MmQxNGZiYTgzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclBy
b3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAK
KyNpbmNsdWRlICJSZW1vdGVCdWZmZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJl
bW90ZUJ1ZmZlclByb3h5OjpSZW1vdGVCdWZmZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQnVmZmVyUHJveHk6OlJlbW90ZUJ1
ZmZlclByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQog
ewogfQogCkBAIC00MywyOSArNDYsNTUgQEAgUmVtb3RlQnVmZmVyUHJveHk6On5SZW1vdGVCdWZm
ZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlQnVmZmVyUHJveHk6Om1hcEFzeW5jKFBBTDo6V2ViR1BV
OjpNYXBNb2RlRmxhZ3MgbWFwTW9kZUZsYWdzLCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpT
aXplNjQ+IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplLCBX
VEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0obWFw
TW9kZUZsYWdzKTsKLSAgICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0o
Y2FsbGJhY2spOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBkYXRhOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVCdWZmZXI6Ok1hcEFz
eW5jKG1hcE1vZGVGbGFncywgb2Zmc2V0LCBzaXplKSwgeyBkYXRhIH0pOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fZGF0YSA9IFdURk1vdmUoZGF0YSk7CisgICAgbV9tYXBNb2RlRmxhZ3MgPSBtYXBNb2RlRmxh
Z3M7CisgICAgY2FsbGJhY2soKTsKIH0KIAogYXV0byBSZW1vdGVCdWZmZXJQcm94eTo6Z2V0TWFw
cGVkUmFuZ2Uoc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBvZmZzZXQsIHN0ZDo6
b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemU2ND4gc2l6ZSkgLT4gTWFwcGVkUmFuZ2UKIHsKLSAg
ICBVTlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgcmV0
dXJuIHsgfTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgIGlm
ICghbV9kYXRhKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byB1c2VkT2Zmc2V0ID0g
b2Zmc2V0LnZhbHVlX29yKDApOworICAgIHJldHVybiB7IG1fZGF0YS0+ZGF0YSgpICsgdXNlZE9m
ZnNldCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplLnZhbHVlX29yKG1fZGF0YS0+c2l6ZSgpIC0g
dXNlZE9mZnNldCkpIH07CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyUHJveHk6OnVubWFwKCkKIHsK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgIGlmICghbV9kYXRh
KQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKKyAgICBpZiAo
bV9tYXBNb2RlRmxhZ3MgJiBQQUw6OldlYkdQVTo6TWFwTW9kZTo6V1JJVEUpCisgICAgICAgIGRh
dGEgPSBXVEZNb3ZlKCptX2RhdGEpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUJ1ZmZlcjo6VW5tYXAoV1RGTW92ZShkYXRhKSkpOworICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKKworICAgIG1fZGF0YSA9IHN0ZDo6bnVsbG9wdDsKKyAgICBtX21h
cE1vZGVGbGFncyA9IDA7CiB9CiAKIHZvaWQgUmVtb3RlQnVmZmVyUHJveHk6OmRlc3Ryb3koKQog
eworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUJ1ZmZlcjo6RGVz
dHJveSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVt
b3RlQnVmZmVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsK
LSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVz
c2FnZXM6OlJlbW90ZUJ1ZmZlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlQnVmZmVyUHJveHkuaAppbmRleCAyODYyZWVjYmQyN2MyZTBjYTFlOGE4MmVk
NTk3MTA3YTY2ZDBiZDljLi5hN2JmZjczZGM0ZDVlNTExMjlmYTAwZTNkM2Y4ZGFhOTZjNWYzMDdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUJ1ZmZlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9X
ZWJHUFUvV2ViR1BVQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CkBAIC0zNywxNyAr
MzgsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUJ1
ZmZlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpCdWZmZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlQnVmZmVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVC
dWZmZXJQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlQnVm
ZmVyUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVtb3RlQnVmZmVyUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUJ1ZmZlclByb3h5
KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlQnVmZmVyUHJveHkoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVCdWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVCdWZmZXJQcm94eShjb25zdCBSZW1vdGVCdWZmZXJQcm94eSYpID0gZGVsZXRlOwogICAgIFJl
bW90ZUJ1ZmZlclByb3h5KFJlbW90ZUJ1ZmZlclByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTUsNiAr
NTksMTggQEAgcHJpdmF0ZToKICAgICBSZW1vdGVCdWZmZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90
ZUJ1ZmZlclByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5n
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigp
LnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOwor
ICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJ
UEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJl
YW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShy
ZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lk
IG1hcEFzeW5jKFBBTDo6V2ViR1BVOjpNYXBNb2RlRmxhZ3MsIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemU2ND4gb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+
IHNpemVGb3JNYXAsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKICAgICBNYXBwZWRS
YW5nZSBnZXRNYXBwZWRSYW5nZShzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplNjQ+IG9m
ZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PikgZmluYWw7CkBAIC02Niw4
ICs4MiwxMSBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiBt
X2NhbGxiYWNrczsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwog
ICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OworICAgIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBtX2RhdGE7CisgICAgUEFMOjpXZWJHUFU6Ok1hcE1vZGVGbGFn
cyBtX21hcE1vZGVGbGFncyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmNwcAppbmRl
eCA4YmI4ZDc1ZGE2ZDdiYzZlOWMzMzQ1OWY0NmQ5Njg1OWIyN2NlYjI2Li5mMzNmYzYzMzRiNmQ0
OTE4ZjlhZjFlZmU3MDE1Nzg4MGVlZmUxMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kQnVmZmVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUNvbW1hbmRCdWZmZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZlck1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpSZW1vdGVDb21t
YW5kQnVmZmVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKK1JlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6UmVtb3RlQ29tbWFuZEJ1ZmZlclBy
b3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAg
IDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQog
CkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6flJlbW90ZUNvbW1h
bmRCdWZmZXJQcm94eSgpCiAKIHZvaWQgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5OjpzZXRMYWJl
bEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVs
KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kQnVm
ZmVyOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbW1hbmRCdWZmZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgKaW5kZXggMjQ5M2M4NDc1NTg2Yzk2Njk2NWEwZGE5YWFi
OGJlMjdhYjMxMDA0ZC4uMzNhYzUzNDNkMDZiODk5MzQ1YjI2YmFiMDFlYTEwYmZmZjI4MTYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZURl
dmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBh
bC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVQ29tbWFuZEJ1ZmZlci5oPgogCkBAIC0zNiwxNyArMzcs
MjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1h
bmRCdWZmZXJQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk+IGNyZWF0
ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVDb21tYW5kQnVmZmVyUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQ
cm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0Nv
bnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVDb21tYW5kQnVm
ZmVyUHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eSgpOwogCisgICAg
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVt
b3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAotICAgIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShDb252ZXJ0VG9CYWNraW5n
Q29udGV4dCYpOworICAgIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eShSZW1vdGVEZXZpY2VQcm94
eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBS
ZW1vdGVDb21tYW5kQnVmZmVyUHJveHkoY29uc3QgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5KFJlbW90ZUNvbW1hbmRCdWZm
ZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgogICAgIFJl
bW90ZUNvbW1hbmRCdWZmZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94
eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsg
cmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNl
Y29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgewor
ICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1v
dmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0
aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29u
bmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNr
aW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbElu
dGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2Jh
Y2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmNwcAppbmRleCAwOTljNjNkN2MxMTI2ZTAxYTk0
YzlkMTA3ZjQzM2VlMjIxNzNjYzQ0Li5mZWEyOWQ5OTI4MTY3ZTJiMmE0ZGY0NTVkOWY4N2FmMWY4
YmY2YmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
LmNwcApAQCAtMjksMTQgKzI5LDE3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5j
bHVkZSAiUmVtb3RlQ29tbWFuZEJ1ZmZlclByb3h5LmgiCisjaW5jbHVkZSAiUmVtb3RlQ29tbWFu
ZEVuY29kZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oIgogI2luY2x1
ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6
OldlYkdQVSB7CiAKLVJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkKK1JlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHko
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBt
X2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAg
LTQ2LDEyICs0OSwzNSBAQCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojp+UmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eSgpCiAKIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVyUGFzc0VuY29kZXI+IFJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBQQUw6OldlYkdQ
VTo6UmVuZGVyUGFzc0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgcmV0dXJuIFJlbW90
ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVz
Y3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgor
ICAgICAgICByZXR1cm4gUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlz
LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1h
bmRFbmNvZGVyOjpCZWdpblJlbmRlclBhc3MoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZp
ZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFz
c0VuY29kZXI+IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmJlZ2luQ29tcHV0ZVBhc3MoY29u
c3Qgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0ZVBhc3NEZXNjcmlwdG9yPiYgZGVz
Y3JpcHRvcikKIHsKLSAgICByZXR1cm4gUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6OmNy
ZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6V2ViR1BVOjpDb21wdXRlUGFzc0Rlc2NyaXB0b3I+IGNvbnZlcnRlZERlc2NyaXB0b3I7Cisg
ICAgaWYgKGRlc2NyaXB0b3IpIHsKKyAgICAgICAgY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoKmRlc2NyaXB0b3IpOworICAg
ICAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpCZWdp
bkNvbXB1dGVQYXNzKGNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQ29tcHV0ZVBhc3NF
bmNvZGVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weUJ1ZmZl
clRvQnVmZmVyKApAQCAtNjEsMTEgKzg3LDE1IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQ
cm94eTo6Y29weUJ1ZmZlclRvQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGlu
YXRpb25PZmZzZXQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQogewotICAgIFVOVVNF
RF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2VPZmZzZXQpOwotICAgIFVO
VVNFRF9QQVJBTShkZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zm
c2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWRTb3VyY2Ug
PSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHNvdXJjZSk7Cisg
ICAgQVNTRVJUKGNvbnZlcnRlZFNvdXJjZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlv
biA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRp
b24pOworICAgIEFTU0VSVChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252ZXJ0
ZWRTb3VyY2UgfHwgIWNvbnZlcnRlZERlc3RpbmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6
Q29weUJ1ZmZlclRvQnVmZmVyKGNvbnZlcnRlZFNvdXJjZSwgc291cmNlT2Zmc2V0LCBjb252ZXJ0
ZWREZXN0aW5hdGlvbiwgZGVzdGluYXRpb25PZmZzZXQsIHNpemUpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6
Y29weUJ1ZmZlclRvVGV4dHVyZSgKQEAgLTczLDkgKzEwMywxNyBAQCB2b2lkIFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk6OmNvcHlCdWZmZXJUb1RleHR1cmUoCiAgICAgY29uc3QgUEFMOjpXZWJH
UFU6OkltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0IFBBTDo6V2ViR1BV
OjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOwor
ICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29u
dmVydFRvQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOworICAg
IGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGlu
YXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVk
Q29weVNpemUpOworICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5h
dGlvbiB8fCAhY29udmVydGVkQ29weVNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpDb3B5QnVm
ZmVyVG9UZXh0dXJlKCpjb252ZXJ0ZWRTb3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgKmNv
bnZlcnRlZENvcHlTaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9CdWZmZXIoCkBA
IC04Myw5ICsxMjEsMTcgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpjb3B5VGV4
dHVyZVRvQnVmZmVyKAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlCdWZmZXImIGRl
c3RpbmF0aW9uLAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKHNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oY29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNl
ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhzb3VyY2UpOwor
ICAgIEFTU0VSVChjb252ZXJ0ZWRTb3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRp
b24gPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0
aW9uKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVy
dGVkQ29weVNpemUgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5n
KGNvcHlTaXplKTsKKyAgICBBU1NFUlQoY29udmVydGVkQ29weVNpemUpOworICAgIGlmICghY29u
dmVydGVkU291cmNlIHx8ICFjb252ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkQ29weVNp
emUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpDb3B5VGV4dHVyZVRvQnVmZmVyKCpjb252ZXJ0ZWRT
b3VyY2UsICpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgKmNvbnZlcnRlZENvcHlTaXplKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHk6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKApAQCAtOTMsOSArMTM5LDE3IEBAIHZvaWQg
UmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eTo6Y29weVRleHR1cmVUb1RleHR1cmUoCiAgICAgY29u
c3QgUEFMOjpXZWJHUFU6OkltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLAogICAgIGNvbnN0
IFBBTDo6V2ViR1BVOjpFeHRlbnQzRCYgY29weVNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNv
dXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uKTsKLSAgICBVTlVTRURfUEFSQU0o
Y29weVNpemUpOworICAgIGF1dG8gY29udmVydGVkU291cmNlID0gbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dC0+Y29udmVydFRvQmFja2luZyhzb3VyY2UpOworICAgIEFTU0VSVChjb252ZXJ0ZWRT
b3VyY2UpOworICAgIGF1dG8gY29udmVydGVkRGVzdGluYXRpb24gPSBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc3RpbmF0aW9uKTsKKyAgICBBU1NFUlQoY29u
dmVydGVkRGVzdGluYXRpb24pOworICAgIGF1dG8gY29udmVydGVkQ29weVNpemUgPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGNvcHlTaXplKTsKKyAgICBBU1NF
UlQoY29udmVydGVkQ29weVNpemUpOworICAgIGlmICghY29udmVydGVkU291cmNlIHx8ICFjb252
ZXJ0ZWREZXN0aW5hdGlvbiB8fCAhY29udmVydGVkQ29weVNpemUpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNv
ZGVyOjpDb3B5VGV4dHVyZVRvVGV4dHVyZSgqY29udmVydGVkU291cmNlLCAqY29udmVydGVkRGVz
dGluYXRpb24sICpjb252ZXJ0ZWRDb3B5U2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjpmaWxsQnVmZmVy
KApAQCAtMTAzLDI5ICsxNTcsNDIgQEAgdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5Ojpm
aWxsQnVmZmVyKAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQsCiAg
ICAgUEFMOjpXZWJHUFU6OlNpemU2NCBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5h
dGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBVTlVTRURf
UEFSQU0oc2l6ZSk7CisgICAgYXV0byBjb252ZXJ0ZWREZXN0aW5hdGlvbiA9IG1fY29udmVydFRv
QmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzdGluYXRpb24pOworICAgIEFTU0VS
VChjb252ZXJ0ZWREZXN0aW5hdGlvbik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXN0aW5hdGlvbikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6
UmVtb3RlQ29tbWFuZEVuY29kZXI6OkZpbGxCdWZmZXIoY29udmVydGVkRGVzdGluYXRpb24sIGRl
c3RpbmF0aW9uT2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0
cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGdyb3VwTGFiZWwpOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbW1hbmRFbmNvZGVyOjpQ
dXNoRGVidWdHcm91cChXVEZNb3ZlKGdyb3VwTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnBvcERl
YnVnR3JvdXAoKQogeworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZUNvbW1hbmRFbmNvZGVyOjpQb3BEZWJ1Z0dyb3VwKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5OjppbnNlcnRE
ZWJ1Z01hcmtlcihTdHJpbmcmJiBtYXJrZXJMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obWFy
a2VyTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNv
bW1hbmRFbmNvZGVyOjpJbnNlcnREZWJ1Z01hcmtlcihXVEZNb3ZlKG1hcmtlckxhYmVsKSkpOwor
ICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5Ojp3cml0ZVRpbWVzdGFtcChjb25zdCBQQUw6OldlYkdQVTo6UXVlcnlTZXQm
IHF1ZXJ5U2V0LCBQQUw6OldlYkdQVTo6U2l6ZTMyIHF1ZXJ5SW5kZXgpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURfUEFSQU0ocXVlcnlJbmRleCk7CisgICAgYXV0
byBjb252ZXJ0ZWRRdWVyeVNldCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcocXVlcnlTZXQpOworICAgIEFTU0VSVChjb252ZXJ0ZWRRdWVyeVNldCk7CisgICAg
aWYgKCFjb252ZXJ0ZWRRdWVyeVNldCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5k
UmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OldyaXRlVGltZXN0
YW1wKGNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6OnJlc29s
dmVRdWVyeVNldCgKQEAgLTEzNSwyMSArMjAyLDM2IEBAIHZvaWQgUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eTo6cmVzb2x2ZVF1ZXJ5U2V0KAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXIm
IGRlc3RpbmF0aW9uLAogICAgIFBBTDo6V2ViR1BVOjpTaXplNjQgZGVzdGluYXRpb25PZmZzZXQp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5U2V0KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RR
dWVyeSk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShk
ZXN0aW5hdGlvbik7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uT2Zmc2V0KTsKKyAgICBh
dXRvIGNvbnZlcnRlZFF1ZXJ5U2V0ID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhxdWVyeVNldCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFF1ZXJ5U2V0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3Rp
bmF0aW9uKTsKKyAgICBpZiAoIWNvbnZlcnRlZFF1ZXJ5U2V0IHx8ICFjb252ZXJ0ZWREZXN0aW5h
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlQ29tbWFuZEVuY29kZXI6OlJlc29sdmVRdWVyeVNldChjb252ZXJ0ZWRRdWVy
eVNldCwgZmlyc3RRdWVyeSwgcXVlcnlDb3VudCwgY29udmVydGVkRGVzdGluYXRpb24sIGRlc3Rp
bmF0aW9uT2Zmc2V0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiBS
ZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRCdWZmZXI+IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk6
OmZpbmlzaChjb25zdCBQQUw6OldlYkdQVTo6Q29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCiB7Ci0gICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6Y3JlYXRlKG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9
IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7
CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVDb21tYW5kQnVmZmVy
UHJveHk6OmNyZWF0ZShtX3BhcmVudCwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0g
V2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6RmluaXNoKCpjb252ZXJ0ZWREZXNjcmlw
dG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisg
ICAgcmV0dXJuIFJlbW90ZUNvbW1hbmRCdWZmZXJQcm94eTo6Y3JlYXRlKG1fcGFyZW50LCBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21t
YW5kRW5jb2RlclByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVDb21tYW5kRW5jb2Rlcjo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21tYW5kRW5jb2RlclByb3h5LmgKaW5kZXgg
ZWQ5NzhlNzYzM2RjMGM1MGYxOGNhMDc4MjFkMWM3YzI0NjkzYmY4NC4uODNiNWQwYmYwOTJmYTM2
MGNiN2U0MTA1ZTdiYzk2ZTM3YjViMmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bW1hbmRFbmNvZGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJH
UFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21t
YW5kRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2lu
Z0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJs
aWMgUEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4
dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVDb21tYW5k
RW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVy
IGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkocGFyZW50LCBjb252
ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
flJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkg
eyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIERvd25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1v
dGVDb21tYW5kRW5jb2RlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVt
b3RlQ29tbWFuZEVuY29kZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVDb21tYW5kRW5jb2Rl
clByb3h5KGNvbnN0IFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBS
ZW1vdGVDb21tYW5kRW5jb2RlclByb3h5KFJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkmJikgPSBk
ZWxldGU7CkBAIC01NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNvbW1hbmRFbmNv
ZGVyUHJveHkmIG9wZXJhdG9yPShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiYpID0gZGVsZXRl
OwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
aW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0
U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVy
biByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwg
YmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5j
UmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVs
dFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlJlbmRlclBhc3NF
bmNvZGVyPiBiZWdpblJlbmRlclBhc3MoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NEZXNj
cmlwdG9yJikgZmluYWw7CiAgICAgUmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGFzc0VuY29kZXI+
IGJlZ2luQ29tcHV0ZVBhc3MoY29uc3Qgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6Q29tcHV0
ZVBhc3NEZXNjcmlwdG9yPiYpIGZpbmFsOwpAQCAtMTAyLDggKzExOCw5IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBX
ZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkg
fTsKKyAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFj
a2luZ0NvbnRleHQ+IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURl
dmljZVByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5j
cHAKaW5kZXggM2UyZTViNmI5ODgyM2ZhMGM2ZDllNjVlNzc4N2Q1NjBhMDY4MmY1My4uNzFmNjc5
NTVhYjdkNTY5N2FhM2M2YzE4YjA2NjMzZDAyOTJhYjlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1
IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRl
UGFzc0VuY29kZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUNvbXB1dGVQ
YXNzRW5jb2RlclByb3h5OjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShDb252ZXJ0VG9C
YWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyUHJveHk6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2Jh
Y2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVy
dFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQz
LDQyICs0Niw2NSBAQCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6flJlbW90ZUNvbXB1
dGVQYXNzRW5jb2RlclByb3h5KCkKIAogdm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94
eTo6c2V0UGlwZWxpbmUoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYgY29tcHV0
ZVBpcGVsaW5lKQogewotICAgIFVOVVNFRF9QQVJBTShjb21wdXRlUGlwZWxpbmUpOworICAgIGF1
dG8gY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhjb21wdXRlUGlwZWxpbmUpOworICAgIEFTU0VSVChjb252ZXJ0ZWRD
b21wdXRlUGlwZWxpbmUpOworICAgIGlmICghY29udmVydGVkQ29tcHV0ZVBpcGVsaW5lKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDb21wdXRlUGFzc0VuY29kZXI6OlNldFBpcGVsaW5lKGNvbnZlcnRlZENvbXB1dGVQaXBlbGlu
ZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZGlzcGF0Y2goUEFMOjpXZWJHUFU6OlNpemUzMiB4LCBz
dGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHksIHN0ZDo6b3B0aW9uYWw8UEFMOjpX
ZWJHUFU6OlNpemUzMj4geikKIHsKLSAgICBVTlVTRURfUEFSQU0oeCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHkpOwotICAgIFVOVVNFRF9QQVJBTSh6KTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5k
KE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OkRpc3BhdGNoKHgsIHksIHopKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0
ZVBhc3NFbmNvZGVyUHJveHk6OmRpc3BhdGNoSW5kaXJlY3QoY29uc3QgUEFMOjpXZWJHUFU6OkJ1
ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpTaXplNjQgaW5kaXJlY3RPZmZzZXQp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0o
aW5kaXJlY3RPZmZzZXQpOworICAgIGF1dG8gY29udmVydGVkSW5kaXJlY3RCdWZmZXIgPSBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGluZGlyZWN0QnVmZmVyKTsK
KyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIpOworICAgIGlmICghY29udmVydGVk
SW5kaXJlY3RCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9
IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6RGlzcGF0Y2hJbmRpcmVj
dChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJlY3RPZmZzZXQpKTsKKyAgICBVTlVTRURf
VkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVy
UHJveHk6OmJlZ2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUEFMOjpXZWJHUFU6OlF1
ZXJ5U2V0JiBxdWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAg
IFVOVVNFRF9QQVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOwor
ICAgIGF1dG8gY29udmVydGVkUXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5j
b252ZXJ0VG9CYWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQp
OworICAgIGlmICghY29udmVydGVkUXVlcnlTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6
QmVnaW5QaXBlbGluZVN0YXRpc3RpY3NRdWVyeShjb252ZXJ0ZWRRdWVyeVNldCwgcXVlcnlJbmRl
eCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXJQcm94eTo6ZW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKQogewor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5j
b2Rlcjo6RW5kUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5Ojpl
bmRQYXNzKCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVD
b21wdXRlUGFzc0VuY29kZXI6OkVuZFBhc3MoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5k
R3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIgaW5kZXgsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5k
R3JvdXAmIGJpbmRHcm91cCwKICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxQQUw6OldlYkdQVTo6
QnVmZmVyRHluYW1pY09mZnNldD4+JiYgb2Zmc2V0cykKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5k
ZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShvZmZz
ZXRzKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fY29udmVydFRvQmFja2luZ0Nv
bnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVk
QmluZEdyb3VwKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyOjpTZXRCaW5kR3JvdXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgV1RGTW92
ZShvZmZzZXRzKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9p
ZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BV
OjpJbmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAs
CkBAIC04NywzMSArMTEzLDM3IEBAIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHk6
OnNldEJpbmRHcm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29uCiAgICAgUEFMOjpX
ZWJHUFU6OlNpemU2NCBkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCwKICAgICBQQUw6OldlYkdQVTo6
U2l6ZTMyIGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5k
ZXgpOwotICAgIFVOVVNFRF9QQVJBTShiaW5kR3JvdXApOwotICAgIFVOVVNFRF9QQVJBTShkeW5h
bWljT2Zmc2V0c0FycmF5QnVmZmVyKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNB
cnJheUJ1ZmZlckxlbmd0aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YVN0
YXJ0KTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKTsKKyAgICBh
dXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZl
cnRUb0JhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVkQmluZEdyb3VwKTsK
KyAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpT
ZXRCaW5kR3JvdXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgVmVjdG9yPFBBTDo6V2ViR1BV
OjpCdWZmZXJEeW5hbWljT2Zmc2V0PihkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyICsgZHluYW1p
Y09mZnNldHNEYXRhU3RhcnQsIGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCkpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlQ29tcHV0ZVBhc3NFbmNv
ZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGdyb3VwTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rlcjo6UHVzaERlYnVnR3JvdXAoV1RGTW92ZShncm91
cExhYmVsKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6cG9wRGVidWdHcm91cCgpCiB7CisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyOjpQ
b3BEZWJ1Z0dyb3VwKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eTo6aW5zZXJ0RGVidWdNYXJrZXIoU3Ry
aW5nJiYgbWFya2VyTGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcmtlckxhYmVsKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVDb21wdXRlUGFzc0VuY29k
ZXI6Okluc2VydERlYnVnTWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKSk7CisgICAgVU5VU0VE
X1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
clByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZB
UklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5LmgKaW5k
ZXggYmFkNDE1MzBlYzY4NTRhY2Y3MTI1MjlmZjQ1MGFiNzk3MjU0Mjg4Mi4uZDY5ODBiODcyNGNj
YmI2NjU1NWJlMTUyZmQxNDg0MmJkZjYyODVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBF
TkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGlj
cy9XZWJHUFUvV2ViR1BVQ29tcHV0ZVBhc3NFbmNvZGVyLmg+CiAKQEAgLTM2LDE3ICszNywyMCBA
QCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyUHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkNvbXB1dGVQYXNzRW5j
b2RlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQ
cm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5PiBjcmVh
dGUoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQYXNz
RW5jb2RlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KHBhcmVudCwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eSgpOwogCisgICAgUmVtb3RlQ29tbWFuZEVuY29k
ZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94
eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsg
fQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0OwogCi0gICAgUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkoQ29udmVydFRvQmFj
a2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVDb21wdXRlUGFzc0VuY29kZXJQcm94eShSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5KGNvbnN0IFJlbW90
ZUNvbXB1dGVQYXNzRW5jb2RlclByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlQ29tcHV0ZVBh
c3NFbmNvZGVyUHJveHkoUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmJikgPSBkZWxldGU7
CkBAIC01NCw2ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNvbXB1dGVQYXNzRW5jb2Rl
clByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQ29tcHV0ZVBhc3NFbmNvZGVyUHJveHkmJikgPSBkZWxl
dGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1
bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2Up
LCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkp
CisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5z
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0UGlwZWxpbmUoY29uc3QgUEFM
OjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2goUEFM
OjpXZWJHUFU6OlNpemUzMiB4LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpTaXplMzI+IHks
IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlNpemUzMj4pIGZpbmFsOwpAQCAtNzksOCArOTUs
OSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYp
IGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAg
UmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owor
ICAgIFJlZjxSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVDb21w
dXRlUGlwZWxpbmVQcm94eS5jcHAKaW5kZXggMGYxMWJjNzQ3YmY0N2MxMDgxMmU3YmEzNTY1Yjk5
ZWM2MzBmYjhjNy4uNjhkYzczZDg3NDdiNzY2MmIzZTE2Mjg5Y2YxODJhMzk2MjA1MGM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmNwcApAQCAt
MjksMTIgKzI5LDE1IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVt
b3RlQmluZEdyb3VwTGF5b3V0UHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGlwZWxp
bmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUNvbXB1dGVQaXBlbGluZVBy
b3h5OjpSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYg
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OlJl
bW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZl
cnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRp
ZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9w
YXJlbnQocGFyZW50KQogewogfQogCkBAIC00NCwxMyArNDcsMTcgQEAgUmVtb3RlQ29tcHV0ZVBp
cGVsaW5lUHJveHk6On5SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSgpCiAKIFJlZjxQQUw6Oldl
YkdQVTo6QmluZEdyb3VwTGF5b3V0PiBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6Z2V0Qmlu
ZEdyb3VwTGF5b3V0KHVpbnQzMl90IGluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7
Ci0gICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVDb21wdXRlUGlwZWxpbmU6OkdldEJpbmRHcm91cExheW91dChpbmRleCwgaWRlbnRpZmllcikp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVC
aW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKG1fcGFyZW50LCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94
eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
Q29tcHV0ZVBpcGVsaW5lOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNv
bXB1dGVQaXBlbGluZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eS5oCmluZGV4IDMwOTBlYWM2MDVi
ZTI3MDMzNjFmZjI0MmQ4ZTFkNmVlNjg2M2JjZDcuLjZiNzNiOWQ2MDRkNTgxMjJiNWU4Nzc3OGRj
ZjM5NDBiYmU5ZGY0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21wdXRlUGlwZWxp
bmUuaD4KIApAQCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCiBjbGFzcyBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6
OldlYkdQVTo6Q29tcHV0ZVBpcGVsaW5lIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFJlbW90ZUNvbXB1dGVQaXBlbGluZVByb3h5KHBhcmVudCwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7
IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90
ZUNvbXB1dGVQaXBlbGluZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVt
b3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVtb3RlQ29tcHV0ZVBpcGVs
aW5lUHJveHkoY29uc3QgUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkmKSA9IGRlbGV0ZTsKICAg
ICBSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eShSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eSYm
KSA9IGRlbGV0ZTsKQEAgLTU0LDEzICs1OCwyNiBAQCBwcml2YXRlOgogICAgIFJlbW90ZUNvbXB1
dGVQaXBlbGluZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHkmJikg
PSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVy
biBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRz
IGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAg
ICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1l
c3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6
U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rp
b24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygp
LCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIFJlZjxQQUw6OldlYkdQVTo6Qmlu
ZEdyb3VwTGF5b3V0PiBnZXRCaW5kR3JvdXBMYXlvdXQodWludDMyX3QgaW5kZXgpIGZpbmFsOwog
CiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAg
V2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
IH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVE
ZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQ
VQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlRGV2aWNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuY3BwCmluZGV4IDgyOWY4NTU1NDRmMjhm
ODQwZmZjMWYwMGIxZjk1ZjEzYjA0YTZjZDkuLjJiNDRiM2U3N2U5NGY5MTVhZWE2MjhkNmJlNDAz
OWExNDc4OGJjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5jcHAKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJSZW1vdGVCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJl
bW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVDb21wdXRlUGlwZWxp
bmVQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZURldmljZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVQaXBlbGluZUxh
eW91dFByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUXVlcnlTZXRQcm94eS5oIgpAQCAtNDYsOSAr
NDcsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlRGV2aWNlUHJv
eHk6OlJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkRmVhdHVyZXM+
JiYgZmVhdHVyZXMsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYmIGxpbWl0cywg
Q29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3Rl
RGV2aWNlUHJveHk6OlJlbW90ZURldmljZVByb3h5KFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVk
RmVhdHVyZXM+JiYgZmVhdHVyZXMsIFJlZjxQQUw6OldlYkdQVTo6U3VwcG9ydGVkTGltaXRzPiYm
IGxpbWl0cywgUmVtb3RlQWRhcHRlclByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogRGV2aWNlKFdURk1vdmUoZmVhdHVyZXMpLCBXVEZNb3ZlKGxpbWl0cykpCisgICAg
LCBtX2JhY2tpbmcoaWRlbnRpZmllcikKICAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAK
QEAgLTYyLDEwNyArNjUsMjYwIEBAIHZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OmRlc3Ryb3koKQog
CiBSZWY8UEFMOjpXZWJHUFU6OkJ1ZmZlcj4gUmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZUJ1ZmZl
cihjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUJ1ZmZlclByb3h5
OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWRE
ZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhk
ZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8g
RklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZUJ1
ZmZlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9
IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVCdWZmZXIoKmNvbnZlcnRlZERlc2NyaXB0
b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAg
ICByZXR1cm4gUmVtb3RlQnVmZmVyUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6VGV4dHVyZT4g
UmVtb3RlRGV2aWNlUHJveHk6OmNyZWF0ZVRleHR1cmUoY29uc3QgUEFMOjpXZWJHUFU6OlRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9y
KTsKLSAgICByZXR1cm4gUmVtb3RlVGV4dHVyZVByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9C
YWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNv
bnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBo
YW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVRleHR1cmVQcm94eTo6Y3JlYXRlKCp0aGlz
LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmlj
ZTo6Q3JlYXRlVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVUZXh0dXJl
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmll
cik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6U2FtcGxlcj4gUmVtb3RlRGV2aWNlUHJveHk6OmNy
ZWF0ZVNhbXBsZXIoY29uc3QgUEFMOjpXZWJHUFU6OlNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3Rl
U2FtcGxlclByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0
byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsK
KyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0
dXJuIFJlbW90ZVNhbXBsZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2Vu
ZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlU2FtcGxlcigqY29u
dmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5k
UmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVTYW1wbGVyUHJveHk6OmNyZWF0ZSgqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6Oldl
YkdQVTo6RXh0ZXJuYWxUZXh0dXJlPiBSZW1vdGVEZXZpY2VQcm94eTo6aW1wb3J0RXh0ZXJuYWxU
ZXh0dXJlKGNvbnN0IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVt
b3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVz
Y3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgor
ICAgICAgICByZXR1cm4gUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OmNyZWF0ZSgqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7
CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6
OkltcG9ydEV4dGVybmFsVGV4dHVyZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikp
OworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVF
eHRlcm5hbFRleHR1cmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXBMYXlvdXQ+
IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCaW5kR3JvdXBMYXlvdXQoY29uc3QgUEFMOjpXZWJH
UFU6OkJpbmRHcm91cExheW91dERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VE
X1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94
eTo6Y3JlYXRlKG1fY29udmVydFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVk
RGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
ZGVzY3JpcHRvcik7CisgICAgaWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVC
aW5kR3JvdXBMYXlvdXRQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6Q3JlYXRlQmluZEdyb3VwTGF5b3V0
KCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5Ojpj
cmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpOwogfQog
CiBSZWY8UEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0PiBSZW1vdGVEZXZpY2VQcm94eTo6Y3Jl
YXRlUGlwZWxpbmVMYXlvdXQoY29uc3QgUEFMOjpXZWJHUFU6OlBpcGVsaW5lTGF5b3V0RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAg
cmV0dXJuIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29u
dmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhh
bmRsaW5nLgorICAgICAgICByZXR1cm4gUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6Y3JlYXRl
KCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpnZW5l
cmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZURldmljZTo6Q3JlYXRlUGlwZWxpbmVMYXlvdXQoKmNvbnZlcnRlZERlc2NyaXB0b3IsIGlkZW50
aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4g
UmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpCaW5kR3JvdXA+
IFJlbW90ZURldmljZVByb3h5OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgUEFMOjpXZWJHUFU6OkJp
bmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBQcm94eTo6Y3JlYXRlKG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQpOworICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAg
aWYgKCFjb252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
ZXJyb3IgaGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVCaW5kR3JvdXBQcm94eTo6Y3Jl
YXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZURldmljZTo6Q3JlYXRlQmluZEdyb3VwKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlm
aWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJl
bW90ZUJpbmRHcm91cFByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIGlkZW50aWZpZXIpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OlNoYWRlck1vZHVsZT4gUmVt
b3RlRGV2aWNlUHJveHk6OmNyZWF0ZVNoYWRlck1vZHVsZShjb25zdCBQQUw6OldlYkdQVTo6U2hh
ZGVyTW9kdWxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVz
Y3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5OjpjcmVhdGUobV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVNoYWRlck1vZHVsZVBy
b3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50
aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0KKworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVTaGFkZXJNb2R1bGUoKmNvbnZlcnRlZERlc2NyaXB0
b3IsIGlkZW50aWZpZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAg
ICByZXR1cm4gUmVtb3RlU2hhZGVyTW9kdWxlUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6Q29t
cHV0ZVBpcGVsaW5lPiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tcHV0ZVBpcGVsaW5lKGNv
bnN0IFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gUmVtb3RlQ29tcHV0
ZVBpcGVsaW5lUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBh
dXRvIGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252
ZXJ0VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikg
eworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICBy
ZXR1cm4gUmVtb3RlQ29tcHV0ZVBpcGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQor
CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUNv
bXB1dGVQaXBlbGluZSgqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllcikpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVybiBSZW1vdGVDb21wdXRlUGlw
ZWxpbmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVu
dGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4gUmVtb3RlRGV2
aWNlUHJveHk6OmNyZWF0ZVJlbmRlclBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQ
aXBlbGluZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpjcmVhdGUobV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsK
KyAgICBpZiAoIWNvbnZlcnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVJlbmRlclBpcGVsaW5l
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSk7CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2Vi
R1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZVJlbmRlclBpcGVsaW5lKCpjb252ZXJ0ZWREZXNj
cmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwor
CisgICAgcmV0dXJuIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2
aWNlUHJveHk6OmNyZWF0ZUNvbXB1dGVQaXBlbGluZUFzeW5jKGNvbnN0IFBBTDo6V2ViR1BVOjpD
b21wdXRlUGlwZWxpbmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
UmVmPFBBTDo6V2ViR1BVOjpDb21wdXRlUGlwZWxpbmU+JiYpPiYmIGNhbGxiYWNrKQogewotICAg
IFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOwor
ICAgIGF1dG8gY29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2Ny
aXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVh
dGVDb21wdXRlUGlwZWxpbmVBc3luYygqY29udmVydGVkRGVzY3JpcHRvciwgaWRlbnRpZmllciks
IHsgfSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxs
YmFjayhSZW1vdGVDb21wdXRlUGlwZWxpbmVQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlUHJv
eHk6OmNyZWF0ZVJlbmRlclBpcGVsaW5lQXN5bmMoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBp
cGVsaW5lRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQQUw6
OldlYkdQVTo6UmVuZGVyUGlwZWxpbmU+JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9Q
QVJBTShkZXNjcmlwdG9yKTsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8g
Y29udmVydGVkRGVzY3JpcHRvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRU
b0JhY2tpbmcoZGVzY3JpcHRvcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc2NyaXB0b3IpOwor
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVSZW5kZXJQ
aXBlbGluZUFzeW5jKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSwgeyB9KTsKKyAg
ICBpZiAoIXNlbmRSZXN1bHQpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxiYWNrKFJlbW90
ZVJlbmRlclBpcGVsaW5lUHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOwogfQogCiBSZWY8UEFMOjpXZWJHUFU6OkNvbW1hbmRFbmNvZGVy
PiBSZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlQ29tbWFuZEVuY29kZXIoY29uc3Qgc3RkOjpvcHRp
b25hbDxQQUw6OldlYkdQVTo6Q29tbWFuZEVuY29kZXJEZXNjcmlwdG9yPiYgZGVzY3JpcHRvcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZUNvbW1h
bmRFbmNvZGVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBz
dGQ6Om9wdGlvbmFsPENvbW1hbmRFbmNvZGVyRGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRv
cjsKKyAgICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0g
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvcik7
CisgICAgICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVD
b21tYW5kRW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6OkNyZWF0ZUNvbW1h
bmRFbmNvZGVyKFdURk1vdmUoY29udmVydGVkRGVzY3JpcHRvciksIGlkZW50aWZpZXIpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICByZXR1cm4gUmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGVFbmNvZGVyPiBS
ZW1vdGVEZXZpY2VQcm94eTo6Y3JlYXRlUmVuZGVyQnVuZGxlRW5jb2Rlcihjb25zdCBQQUw6Oldl
YkdQVTo6UmVuZGVyQnVuZGxlRW5jb2RlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBhdXRv
IGNvbnZlcnRlZERlc2NyaXB0b3IgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGRlc2NyaXB0b3IpOworICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgewor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGVycm9yIGhhbmRsaW5nLgorICAgICAgICByZXR1
cm4gUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgIH0K
KworICAgIGF1dG8gaWRlbnRpZmllciA9IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Cisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlRGV2aWNlOjpDcmVhdGVS
ZW5kZXJCdW5kbGVFbmNvZGVyKCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXJQcm94eTo6Y3JlYXRlKCp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogUmVmPFBBTDo6V2ViR1BVOjpRdWVyeVNldD4gUmVtb3Rl
RGV2aWNlUHJveHk6OmNyZWF0ZVF1ZXJ5U2V0KGNvbnN0IFBBTDo6V2ViR1BVOjpRdWVyeVNldERl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwot
ICAgIHJldHVybiBSZW1vdGVRdWVyeVNldFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXNjcmlwdG9yKTsKKyAgICBpZiAoIWNvbnZl
cnRlZERlc2NyaXB0b3IpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBlcnJvciBoYW5k
bGluZy4KKyAgICAgICAgcmV0dXJuIFJlbW90ZVF1ZXJ5U2V0UHJveHk6OmNyZWF0ZSgqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7
CisgICAgfQorCisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJh
dGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEZXZpY2U6
OkNyZWF0ZVF1ZXJ5U2V0KCpjb252ZXJ0ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVF1ZXJ5U2V0
UHJveHk6OmNyZWF0ZSgqdGhpcywgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OnB1c2hFcnJvclNjb3BlKFBBTDo6V2Vi
R1BVOjpFcnJvckZpbHRlciBlcnJvckZpbHRlcikKIHsKLSAgICBVTlVTRURfUEFSQU0oZXJyb3JG
aWx0ZXIpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmlj
ZTo6UHVzaEVycm9yU2NvcGUoZXJyb3JGaWx0ZXIpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OnBvcEVycm9yU2NvcGUoV1RG
OjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OkVycm9yPiYmKT4mJiBj
YWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIHN0ZDo6b3B0aW9u
YWw8RXJyb3I+IGVycm9yOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2Vz
OjpSZW1vdGVEZXZpY2U6OlBvcEVycm9yU2NvcGUoKSwgeyBlcnJvciB9KTsKKyAgICBVTlVTRURf
VkFSSUFCTEUoc2VuZFJlc3VsdCk7CisKKyAgICBpZiAoIWVycm9yKSB7CisgICAgICAgIGNhbGxi
YWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBXVEY6OnN3
aXRjaE9uKFdURk1vdmUoKmVycm9yKSwgWyZdIChPdXRPZk1lbW9yeUVycm9yJiYgb3V0T2ZNZW1v
cnlFcnJvcikgeworICAgICAgICBjYWxsYmFjayh7IFBBTDo6V2ViR1BVOjpPdXRPZk1lbW9yeUVy
cm9yOjpjcmVhdGUoKSB9KTsKKyAgICB9LCBbJl0gKFZhbGlkYXRpb25FcnJvciYmIHZhbGlkYXRp
b25FcnJvcikgeworICAgICAgICBjYWxsYmFjayh7IFBBTDo6V2ViR1BVOjpWYWxpZGF0aW9uRXJy
b3I6OmNyZWF0ZShXVEZNb3ZlKHZhbGlkYXRpb25FcnJvci5tZXNzYWdlKSkgfSk7CisgICAgfSk7
CiB9CiAKIHZvaWQgUmVtb3RlRGV2aWNlUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZURldmljZTo6U2V0TGFiZWwobGFiZWwpKTsKKyAg
ICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRGV2aWNlUHJveHkuaAppbmRleCA2NjI2OTRhMzA5
OGMwMWEzNmVjY2NlNTk3ZDJiNzUxYWI5NzNkYWJiLi44ZWJlMzVjNWQ5MDliNGU1NmExZWNiMmEy
OTM1NDc5ZDFlZTI2NzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVEZXZpY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZURldmljZVByb3h5LmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90
ZUFkYXB0ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbW1hbmRFbmNvZGVyRGVzY3JpcHRvci5oPgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRGV2aWNlLmg+CkBAIC0zOCwxNyAr
MzksMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZURl
dmljZVByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpEZXZpY2UgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IGNyZWF0ZShSZWY8UEFMOjpXZWJHUFU6
OlN1cHBvcnRlZEZlYXR1cmVzPiYmIGZlYXR1cmVzLCBSZWY8UEFMOjpXZWJHUFU6OlN1cHBvcnRl
ZExpbWl0cz4mJiBsaW1pdHMsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZURldmljZVByb3h5PiBjcmVhdGUoUmVm
PFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiBmZWF0dXJlcywgUmVmPFBBTDo6V2Vi
R1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYgbGltaXRzLCBSZW1vdGVBZGFwdGVyUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSZW1vdGVEZXZpY2VQcm94eShXVEZNb3ZlKGZlYXR1cmVzKSwgV1RGTW92ZShsaW1pdHMp
LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBSZW1vdGVEZXZpY2VQcm94eShXVEZNb3ZlKGZlYXR1cmVzKSwgV1RGTW92ZShsaW1pdHMpLCBw
YXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCi0g
ICAgflJlbW90ZURldmljZVByb3h5KCk7CisgICAgdmlydHVhbCB+UmVtb3RlRGV2aWNlUHJveHko
KTsKKworICAgIFJlbW90ZUFkYXB0ZXJQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7
IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQo
KTsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0OwogCi0gICAgUmVtb3RlRGV2aWNlUHJveHkoUmVmPFBBTDo6V2ViR1BVOjpTdXBw
b3J0ZWRGZWF0dXJlcz4mJiwgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRMaW1pdHM+JiYsIENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlRGV2aWNlUHJveHkoUmVmPFBBTDo6
V2ViR1BVOjpTdXBwb3J0ZWRGZWF0dXJlcz4mJiwgUmVmPFBBTDo6V2ViR1BVOjpTdXBwb3J0ZWRM
aW1pdHM+JiYsIFJlbW90ZUFkYXB0ZXJQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jiwg
V2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVEZXZpY2VQcm94eShjb25zdCBSZW1vdGVE
ZXZpY2VQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZURldmljZVByb3h5KFJlbW90ZURldmlj
ZVByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTYsNiArNjAsMTggQEAgcHJpdmF0ZToKICAgICBSZW1v
dGVEZXZpY2VQcm94eSYgb3BlcmF0b3I9KFJlbW90ZURldmljZVByb3h5JiYpID0gZGVsZXRlOwog
CiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5n
OyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2Vu
ZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBy
b290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFj
a2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVz
dWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5
bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNl
bmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIGRlc3Ryb3koKSBmaW5hbDsKIApAQCAtODgs
OCArMTA0LDkgQEAgcHJpdmF0ZToKICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoUmVmPFBB
TDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZT4mJik+PiBtX2NyZWF0ZVJlbmRlclBpcGVsaW5lQXN5
bmNDYWxsYmFja3M7CiAgICAgRGVxdWU8V1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8
UEFMOjpXZWJHUFU6OkVycm9yPiYmKT4+IG1fcG9wRXJyb3JTY29wZUNhbGxiYWNrczsKIAotICAg
IFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9C
YWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3Rl
QWRhcHRlclByb3h5PiBtX3BhcmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2Vi
R1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eS5jcHAK
aW5kZXggZTg4ZTRkOWVhNjcxODY2YTlmZTRjMzA1YjBlOWFhODAzOTlmYzJjZC4uYWI4NzJmMTY0
ZTczMjhmYmUxMjBhYmJlMTc0OWNlM2I5NTRjMjBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVFeHRlcm5hbFRleHR1cmVN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5
OjpSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29u
dmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNv
bnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk6OlJlbW90
ZUV4dGVybmFsVGV4dHVyZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJl
bnQocGFyZW50KQogewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZUV4dGVybmFsVGV4dHVy
ZVByb3h5Ojp+UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoKQogCiB2b2lkIFJlbW90ZUV4dGVy
bmFsVGV4dHVyZVByb3h5OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVFeHRlcm5hbFRleHR1cmU6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5LmgKaW5k
ZXggYzM4ZjRjNmFjOTA1ODk4ODRkOWMwODkwZDM1NDIxMWRkMjU0NDY1Ny4uZmU0YjhjMzljNmY3
NjA2MTI2MDk5NWU5ZjEyZDE4MDMxY2Y1ZGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUg
IldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQ
VUV4dGVybmFsVGV4dHVyZS5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRv
QmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5IGZpbmFs
IDogcHVibGljIFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoY29udmVydFRvQmFja2luZ0NvbnRleHQpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHko
cGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgflJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KCk7CiAKKyAgICBSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQ
cm94eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
OwogCi0gICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRl
eHQmKTsKKyAgICBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVFeHRlcm5hbFRleHR1cmVQcm94eShjb25zdCBSZW1vdGVFeHRlcm5hbFRleHR1cmVQcm94eSYp
ID0gZGVsZXRlOwogICAgIFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5KFJlbW90ZUV4dGVybmFs
VGV4dHVyZVByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZhdGU6CiAg
ICAgUmVtb3RlRXh0ZXJuYWxUZXh0dXJlUHJveHkmIG9wZXJhdG9yPShSZW1vdGVFeHRlcm5hbFRl
eHR1cmVQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygp
IGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29u
c3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2Up
CisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5z
ZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAg
ICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBD
OjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFt
Q2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVw
bHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBz
ZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRp
ZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2Vi
R1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0
PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4g
bV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlR1BV
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlR1BVUHJveHkuY3BwCmluZGV4IDllMzhkN2ZmM2U4OGE1YmJkOTRlNmU3Y2MxMmU0MTRh
NmVkMWQyYzkuLjY0OTIyODM4ZDljNmFlYzNlMWI4YmRlMTM2Mjc3MWY4YWQ1NzI2ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZUdQVVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVHUFVQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwyMSBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNp
bmNsdWRlICJSZW1vdGVBZGFwdGVyUHJveHkuaCIKKyNpbmNsdWRlICJSZW1vdGVHUFVNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTdXBwb3J0ZWRGZWF0dXJlcy5oPgorI2luY2x1
ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVU3VwcG9ydGVkTGltaXRzLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQ6OldlYkdQVSB7CiAKLVJlbW90ZUdQVVByb3h5OjpSZW1vdGVHUFVQcm94eShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdFN0cmVhbVNpemUgPSAxIDw8IDIxOworCitSZW1vdGVH
UFVQcm94eTo6UmVtb3RlR1BVUHJveHkoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3ND
b25uZWN0aW9uLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlm
aWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICAsIG1fc3RyZWFtQ29ubmVjdGlvbihncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25u
ZWN0aW9uKCksIGRlZmF1bHRTdHJlYW1TaXplKQogewogfQogCkBAIC00Myw4ICs1Miw1MCBAQCBS
ZW1vdGVHUFVQcm94eTo6flJlbW90ZUdQVVByb3h5KCkKIAogdm9pZCBSZW1vdGVHUFVQcm94eTo6
cmVxdWVzdEFkYXB0ZXIoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0aW9ucyYg
b3B0aW9ucywgV1RGOjpGdW5jdGlvbjx2b2lkKFJlZlB0cjxQQUw6OldlYkdQVTo6QWRhcHRlcj4m
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKG9wdGlvbnMpOwotICAgIFVOVVNF
RF9QQVJBTShjYWxsYmFjayk7CisgICAgYXV0byBjb252ZXJ0ZWRPcHRpb25zID0gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhvcHRpb25zKTsKKyAgICBBU1NFUlQo
Y29udmVydGVkT3B0aW9ucyk7CisgICAgaWYgKCFjb252ZXJ0ZWRPcHRpb25zKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOworICAgIFN0cmluZyBuYW1lOworICAgIFN1cHBvcnRlZEZlYXR1cmVzIHN1cHBvcnRlZEZl
YXR1cmVzOworICAgIFN1cHBvcnRlZExpbWl0cyBzdXBwb3J0ZWRMaW1pdHM7CisgICAgYm9vbCBp
c0ZhbGxiYWNrQWRhcHRlcjsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kU3luYyhNZXNzYWdl
czo6UmVtb3RlR1BVOjpSZXF1ZXN0QWRhcHRlcigqY29udmVydGVkT3B0aW9ucywgaWRlbnRpZmll
ciksIHsgbmFtZSwgc3VwcG9ydGVkRmVhdHVyZXMsIHN1cHBvcnRlZExpbWl0cywgaXNGYWxsYmFj
a0FkYXB0ZXIgfSk7CisgICAgaWYgKCFzZW5kUmVzdWx0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHJlc3VsdFN1cHBvcnRlZEZlYXR1cmVzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZEZl
YXR1cmVzOjpjcmVhdGUoV1RGTW92ZShzdXBwb3J0ZWRGZWF0dXJlcy5mZWF0dXJlcykpOworICAg
IGF1dG8gcmVzdWx0U3VwcG9ydGVkTGltaXRzID0gUEFMOjpXZWJHUFU6OlN1cHBvcnRlZExpbWl0
czo6Y3JlYXRlKAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjFE
LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjJELAorICAgICAg
ICBzdXBwb3J0ZWRMaW1pdHMubWF4VGV4dHVyZURpbWVuc2lvbjNELAorICAgICAgICBzdXBwb3J0
ZWRMaW1pdHMubWF4VGV4dHVyZUFycmF5TGF5ZXJzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWF4QmluZEdyb3VwcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heER5bmFtaWNVbmlmb3Jt
QnVmZmVyc1BlclBpcGVsaW5lTGF5b3V0LAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4RHlu
YW1pY1N0b3JhZ2VCdWZmZXJzUGVyUGlwZWxpbmVMYXlvdXQsCisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhTYW1wbGVkVGV4dHVyZXNQZXJTaGFkZXJTdGFnZSwKKyAgICAgICAgc3VwcG9ydGVk
TGltaXRzLm1heFNhbXBsZXJzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhTdG9yYWdlQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4U3RvcmFnZVRleHR1cmVzUGVyU2hhZGVyU3RhZ2UsCisgICAgICAgIHN1cHBvcnRlZExp
bWl0cy5tYXhVbmlmb3JtQnVmZmVyc1BlclNoYWRlclN0YWdlLAorICAgICAgICBzdXBwb3J0ZWRM
aW1pdHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBzdXBwb3J0ZWRMaW1p
dHMubWF4U3RvcmFnZUJ1ZmZlckJpbmRpbmdTaXplLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMu
bWluVW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCwKKyAgICAgICAgc3VwcG9ydGVkTGltaXRz
Lm1pblN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQsCisgICAgICAgIHN1cHBvcnRlZExpbWl0
cy5tYXhWZXJ0ZXhCdWZmZXJzLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4VmVydGV4QXR0
cmlidXRlcywKKyAgICAgICAgc3VwcG9ydGVkTGltaXRzLm1heFZlcnRleEJ1ZmZlckFycmF5U3Ry
aWRlLAorICAgICAgICBzdXBwb3J0ZWRMaW1pdHMubWF4SW50ZXJTdGFnZVNoYWRlckNvbXBvbmVu
dHMsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU3RvcmFnZVNp
emUsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlSW52b2NhdGlvbnNQZXJXb3Jr
Z3JvdXAsCisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVgs
CisgICAgICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVksCisgICAg
ICAgIHN1cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3VwU2l6ZVosCisgICAgICAgIHN1
cHBvcnRlZExpbWl0cy5tYXhDb21wdXRlV29ya2dyb3Vwc1BlckRpbWVuc2lvbgorICAgICk7Cisg
ICAgY2FsbGJhY2soUmVtb3RlQWRhcHRlclByb3h5OjpjcmVhdGUoV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShyZXN1bHRTdXBwb3J0ZWRGZWF0dXJlcyksIFdURk1vdmUocmVzdWx0U3VwcG9ydGVkTGlt
aXRzKSwgaXNGYWxsYmFja0FkYXB0ZXIsICp0aGlzLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBpZGVudGlmaWVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFVQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlR1BVUHJveHkuaAppbmRleCA1YTk0YjMwOWEzZGRiOGEwNWFlNjFiYTlmYmVjYmVh
Y2JiOTAzYjE1Li4wZmZlYTM4Y2Y4YzZmYmE3ODhhYTkwZWNiYWJkYTNmMjA1NjA0ODkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVHUFVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZUdQVVByb3h5LmgKQEAgLTI3LDI3ICsyNywzNiBAQAogCiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiU3RyZWFtQ2xpZW50Q29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BV
L1dlYkdQVS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIEdQVVByb2Nlc3NDb25uZWN0aW9uOworfQorCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJH
UFUgewogCiBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlR1BV
UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OkdQVSB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxSZW1vdGVHUFVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUdQVVByb3h5PiBj
cmVhdGUoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIGdwdVByb2Nlc3NDb25uZWN0aW9uLCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90
ZUdQVVByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFJlbW90ZUdQVVByb3h5KGdwdVByb2Nlc3NDb25uZWN0aW9uLCBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZUdQVVByb3h5KCk7CiAKKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJuICp0aGlz
OyB9CisKKyAgICBJUEM6OlN0cmVhbUNsaWVudENvbm5lY3Rpb24mIHN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oKSB7IHJldHVybiBtX3N0cmVhbUNvbm5lY3Rpb247IH0KKwogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90
ZUdQVVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlR1BVUHJveHko
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24mLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlR1BVUHJveHkoY29uc3QgUmVtb3RlR1BVUHJveHkmKSA9
IGRlbGV0ZTsKICAgICBSZW1vdGVHUFVQcm94eShSZW1vdGVHUFVQcm94eSYmKSA9IGRlbGV0ZTsK
QEAgLTU1LDEzICs2NCwyNiBAQCBwcml2YXRlOgogICAgIFJlbW90ZUdQVVByb3h5JiBvcGVyYXRv
cj0oUmVtb3RlR1BVUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJh
Y2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5s
aW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBt
ZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0
aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91
dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVU
VVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2Us
IHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgp
LnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZN
b3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAg
IHZvaWQgcmVxdWVzdEFkYXB0ZXIoY29uc3QgUEFMOjpXZWJHUFU6OlJlcXVlc3RBZGFwdGVyT3B0
aW9ucyYsIFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpXZWJHUFU6OkFkYXB0ZXI+JiYp
PiYmKSBmaW5hbDsKIAogICAgIERlcXVlPFdURjo6RnVuY3Rpb248dm9pZChSZWZQdHI8UEFMOjpX
ZWJHUFU6OkFkYXB0ZXI+JiYpPj4gbV9jYWxsYmFja3M7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVy
IG1fYmFja2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJ
ZGVudGlmaWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1f
Y29udmVydFRvQmFja2luZ0NvbnRleHQ7CisgICAgSVBDOjpTdHJlYW1DbGllbnRDb25uZWN0aW9u
IG1fc3RyZWFtQ29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BV
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwCmluZGV4
IDExNzA3YTE5OTFkYzQ0Yzg1ZDRiYThiNTc4YjljOTc3NmVkNDMyNjUuLjc0MjFhOWUwOTFmMjgx
NWVkM2QxYjNkN2FhMzFiM2FjNDRjODQyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVBpcGVsaW5lTGF5b3V0UHJveHkuY3BwCkBAIC0yOCwxMiArMjgsMTUgQEAKIAogI2lmIEVOQUJM
RShHUFVfUFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZVBpcGVsaW5lTGF5b3V0TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpSZW1vdGVQ
aXBlbGluZUxheW91dFByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCitSZW1vdGVQaXBlbGluZUxheW91dFByb3h5OjpSZW1vdGVQaXBlbGluZUxh
eW91dFByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQog
ewogfQogCkBAIC00Myw3ICs0Niw4IEBAIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHk6On5SZW1v
dGVQaXBlbGluZUxheW91dFByb3h5KCkKIAogdm9pZCBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5
OjpzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKGxhYmVsKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVQ
aXBlbGluZUxheW91dDo6U2V0TGFiZWwobGFiZWwpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2Vu
ZFJlc3VsdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVQaXBl
bGluZUxheW91dFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVQaXBlbGluZUxheW91dFByb3h5LmgKaW5kZXggNGQ2ZWNjYTkyODAzYjkw
MWE0ZTk4NWUyMDFmMzVlY2FjNDU1MjgyMy4uMGM5ZDM0N2U4MWI2Mjg2YzNkNzc0YWNiYjM2M2Uy
MTc3MWJiYmJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVBpcGVsaW5lTGF5b3V0UHJv
eHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5j
bHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVQaXBlbGluZUxheW91dC5oPgog
CkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNs
YXNzIFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6
OlBpcGVsaW5lTGF5b3V0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVBpcGVsaW5l
TGF5b3V0UHJveHk+IGNyZWF0ZShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJlZjxSZW1vdGVQaXBlbGluZUxheW91dFByb3h5PiBj
cmVhdGUoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQm
IGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVQaXBlbGluZUxheW91dFBy
b3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkocGFyZW50LCBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90ZVBpcGVsaW5l
TGF5b3V0UHJveHkoKTsKIAorICAgIFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQoKSB7IHJldHVy
biBtX3BhcmVudDsgfQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJl
bnQtPnBhcmVudCgpLnBhcmVudCgpOyB9CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERv
d25jYXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVQaXBlbGluZUxheW91
dFByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUGlwZWxpbmVMYXlv
dXRQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2Vi
R1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5KGNvbnN0IFJl
bW90ZVBpcGVsaW5lTGF5b3V0UHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVQaXBlbGluZUxh
eW91dFByb3h5KFJlbW90ZVBpcGVsaW5lTGF5b3V0UHJveHkmJikgPSBkZWxldGU7CkBAIC01NCwx
MSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVQaXBlbGluZUxheW91dFByb3h5JiBvcGVy
YXRvcj0oUmVtb3RlUGlwZWxpbmVMYXlvdXRQcm94eSYmKSA9IGRlbGV0ZTsKIAogICAgIFdlYkdQ
VUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2luZzsgfQorICAgIAor
ICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNlbmRUaW1lb3V0ID0g
MzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBi
b29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVh
bUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJhY2tpbmcoKSwgZGVm
YXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBX
QVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jlc3VsdCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAgICB7CisgICAgICAg
IHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7
CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJl
ZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmNwcAppbmRleCBk
MDNlMzcxZTk3NzQzZjAxMGQ4NDZkZjM5YWJiZTBhYjUwYzY1YThkLi4yZmQxNDhhYzdhY2IxMGJl
N2FhYTE2NTkyYTc0NjRiNDBiYjdkZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNl
dFByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1Mp
CiAKKyNpbmNsdWRlICJSZW1vdGVRdWVyeVNldE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BV
Q29udmVydFRvQmFja2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsK
IAotUmVtb3RlUXVlcnlTZXRQcm94eTo6UmVtb3RlUXVlcnlTZXRQcm94eShDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlUXVlcnlTZXRQcm94
eTo6UmVtb3RlUXVlcnlTZXRQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsMTEgKzQ2LDE0IEBAIFJlbW90ZVF1ZXJ5U2V0UHJv
eHk6On5SZW1vdGVRdWVyeVNldFByb3h5KCkKIAogdm9pZCBSZW1vdGVRdWVyeVNldFByb3h5Ojpk
ZXN0cm95KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVR
dWVyeVNldDo6RGVzdHJveSgpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9
CiAKIHZvaWQgUmVtb3RlUXVlcnlTZXRQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJp
bmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVlcnlTZXQ6OlNldExhYmVsKGxhYmVsKSk7Cisg
ICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVlcnlTZXRQcm94eS5oCmluZGV4IGI3YTJj
ODYyNmZhYjdlMjg1MWQwZGMwNDMwZTZhODlkOGJjM2JiMTEuLmQ4YzZjYTcxNmFmMzkxNzE5ZWZk
Y2ZlZTBjNDA3ZTYzYjllOGU0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXJ5U2V0UHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWVyeVNldFByb3h5
LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVlcnlTZXQuaD4KIApAQCAtMzYs
MTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1v
dGVRdWVyeVNldFByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpRdWVyeVNldCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVRdWVyeVNldFByb3h5PiBjcmVhdGUoQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgIHN0YXRpYyBS
ZWY8UmVtb3RlUXVlcnlTZXRQcm94eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BV
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVtb3RlUXVlcnlTZXRQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVRdWVyeVNldFByb3h5KHBhcmVudCwgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5S
ZW1vdGVRdWVyeVNldFByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50KCkg
eyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94eSYgcm9vdCgpIHsgcmV0dXJu
IG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCi0gICAgUmVtb3RlUXVlcnlT
ZXRQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVF1ZXJ5U2V0UHJv
eHkoUmVtb3RlRGV2aWNlUHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlk
ZW50aWZpZXIpOwogCiAgICAgUmVtb3RlUXVlcnlTZXRQcm94eShjb25zdCBSZW1vdGVRdWVyeVNl
dFByb3h5JikgPSBkZWxldGU7CiAgICAgUmVtb3RlUXVlcnlTZXRQcm94eShSZW1vdGVRdWVyeVNl
dFByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTMgKzU4LDI2IEBAIHByaXZhdGU6CiAgICAgUmVt
b3RlUXVlcnlTZXRQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVF1ZXJ5U2V0UHJveHkmJikgPSBkZWxl
dGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1
bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2Up
LCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5
bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkp
CisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5z
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZh
dWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgZGVzdHJveSgpIGZpbmFsOwogCiAg
ICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2Vi
R1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07
CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tp
bmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZp
Y2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
UmVtb3RlUXVldWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcAppbmRleCA2M2E4YzA2MDBkMjE3MTA1MzA4
OTIyMTM3NjA3MmU3NzI4NjA5NGU0Li42MDMwY2U2ZTMzM2FjMWQwODI2NTU2NmE0OTI3NTEzMzU4
NmI4MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVRdWV1ZVByb3h5LmNwcApAQCAtMjgsMTIgKzI4
LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVRdWV1
ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0NvbnRleHQuaCIK
IAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUXVldWVQcm94eTo6UmVtb3Rl
UXVldWVQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorUmVtb3RlUXVldWVQcm94eTo6UmVtb3RlUXVldWVQcm94eShSZW1vdGVEZXZpY2VQcm94
eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRl
eHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlm
aWVyKQorICAgICwgbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICAsIG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsMTIgKzQ2LDI1IEBA
IFJlbW90ZVF1ZXVlUHJveHk6On5SZW1vdGVRdWV1ZVByb3h5KCkKIAogdm9pZCBSZW1vdGVRdWV1
ZVByb3h5OjpzdWJtaXQoVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UEFMOjpXZWJHUFU6
OkNvbW1hbmRCdWZmZXI+PiYmIGNvbW1hbmRCdWZmZXJzKQogewotICAgIFVOVVNFRF9QQVJBTShj
b21tYW5kQnVmZmVycyk7CisgICAgVmVjdG9yPFdlYkdQVUlkZW50aWZpZXI+IGNvbnZlcnRlZENv
bW1hbmRCdWZmZXJzOworICAgIGNvbnZlcnRlZENvbW1hbmRCdWZmZXJzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY29tbWFuZEJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gY29tbWFuZEJ1
ZmZlciA6IGNvbW1hbmRCdWZmZXJzKSB7CisgICAgICAgIGF1dG8gY29udmVydGVkQ29tbWFuZEJ1
ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoY29tbWFu
ZEJ1ZmZlcik7CisgICAgICAgIEFTU0VSVChjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKTsKKyAgICAg
ICAgaWYgKCFjb252ZXJ0ZWRDb21tYW5kQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjb252ZXJ0ZWRDb21tYW5kQnVmZmVycy51bmNoZWNrZWRBcHBlbmQoY29udmVydGVkQ29t
bWFuZEJ1ZmZlcik7CisgICAgfQorICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6
OlJlbW90ZVF1ZXVlOjpTdWJtaXQoY29udmVydGVkQ29tbWFuZEJ1ZmZlcnMpKTsKKyAgICBVTlVT
RURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6b25T
dWJtaXR0ZWRXb3JrRG9uZShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKIHsKLSAg
ICBVTlVTRURfUEFSQU0oY2FsbGJhY2spOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6T25TdWJtaXR0ZWRXb3JrRG9uZSgpLCB7IH0pOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZv
aWQgUmVtb3RlUXVldWVQcm94eTo6d3JpdGVCdWZmZXIoCkBAIC01OSwxMiArNzUsMTMgQEAgdm9p
ZCBSZW1vdGVRdWV1ZVByb3h5Ojp3cml0ZUJ1ZmZlcigKICAgICBQQUw6OldlYkdQVTo6U2l6ZTY0
IGRhdGFPZmZzZXQsCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShidWZmZXJP
ZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShieXRl
TGVuZ3RoKTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YU9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KHNpemUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZm
ZXIpOworICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6V3JpdGVCdWZmZXIo
Y29udmVydGVkQnVmZmVyLCBidWZmZXJPZmZzZXQsIFZlY3Rvcjx1aW50OF90PihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oc291cmNlKSArIGRhdGFPZmZzZXQsIHNpemUudmFsdWVfb3IoYnl0
ZUxlbmd0aCAtIGRhdGFPZmZzZXQpKSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogdm9pZCBSZW1vdGVRdWV1ZVByb3h5Ojp3cml0ZVRleHR1cmUoCkBAIC03NCwxMSAr
OTEsMTcgQEAgdm9pZCBSZW1vdGVRdWV1ZVByb3h5Ojp3cml0ZVRleHR1cmUoCiAgICAgY29uc3Qg
UEFMOjpXZWJHUFU6OkltYWdlRGF0YUxheW91dCYgZGF0YUxheW91dCwKICAgICBjb25zdCBQQUw6
OldlYkdQVTo6RXh0ZW50M0QmIHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9u
KTsKLSAgICBVTlVTRURfUEFSQU0oc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0oYnl0ZUxlbmd0
aCk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGFMYXlvdXQpOwotICAgIFVOVVNFRF9QQVJBTShzaXpl
KTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29u
dGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5hdGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZlcnRlZERhdGFMYXlvdXQgPSBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKGRhdGFMYXlvdXQpOworICAgIEFTU0VS
VChjb252ZXJ0ZWREYXRhTGF5b3V0KTsKKyAgICBhdXRvIGNvbnZlcnRlZFNpemUgPSBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHNpemUpOworICAgIEFTU0VSVChj
b252ZXJ0ZWRTaXplKTsKKyAgICBpZiAoIWNvbnZlcnRlZERlc3RpbmF0aW9uIHx8ICFjb252ZXJ0
ZWREYXRhTGF5b3V0IHx8ICFjb252ZXJ0ZWRTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVRdWV1ZTo6V3JpdGVUZXh0dXJl
KCpjb252ZXJ0ZWREZXN0aW5hdGlvbiwgVmVjdG9yPHVpbnQ4X3Q+KHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzb3VyY2UpLCBieXRlTGVuZ3RoKSwgKmNvbnZlcnRlZERhdGFMYXlvdXQsICpj
b252ZXJ0ZWRTaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2
b2lkIFJlbW90ZVF1ZXVlUHJveHk6OmNvcHlFeHRlcm5hbEltYWdlVG9UZXh0dXJlKApAQCAtODYs
MTQgKzEwOSwyMyBAQCB2b2lkIFJlbW90ZVF1ZXVlUHJveHk6OmNvcHlFeHRlcm5hbEltYWdlVG9U
ZXh0dXJlKAogICAgIGNvbnN0IFBBTDo6V2ViR1BVOjpJbWFnZUNvcHlUZXh0dXJlVGFnZ2VkJiBk
ZXN0aW5hdGlvbiwKICAgICBjb25zdCBQQUw6OldlYkdQVTo6RXh0ZW50M0QmIGNvcHlTaXplKQog
ewotICAgIFVOVVNFRF9QQVJBTShzb3VyY2UpOwotICAgIFVOVVNFRF9QQVJBTShkZXN0aW5hdGlv
bik7Ci0gICAgVU5VU0VEX1BBUkFNKGNvcHlTaXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZFNvdXJj
ZSA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcoc291cmNlKTsK
KyAgICBBU1NFUlQoY29udmVydGVkU291cmNlKTsKKyAgICBhdXRvIGNvbnZlcnRlZERlc3RpbmF0
aW9uID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhkZXN0aW5h
dGlvbik7CisgICAgQVNTRVJUKGNvbnZlcnRlZERlc3RpbmF0aW9uKTsKKyAgICBhdXRvIGNvbnZl
cnRlZENvcHlTaXplID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2lu
Zyhjb3B5U2l6ZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZENvcHlTaXplKTsKKyAgICBpZiAoIWNv
bnZlcnRlZFNvdXJjZSB8fCAhY29udmVydGVkRGVzdGluYXRpb24gfHwgIWNvbnZlcnRlZENvcHlT
aXplKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVRdWV1ZTo6Q29weUV4dGVybmFsSW1hZ2VUb1RleHR1cmUoKmNvbnZlcnRlZFNv
dXJjZSwgKmNvbnZlcnRlZERlc3RpbmF0aW9uLCAqY29udmVydGVkQ29weVNpemUpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUXVldWVQcm94eTo6
c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9QQVJB
TShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUXVl
dWU6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUXVldWVQ
cm94eS5oCmluZGV4IGU1MzA5NDhhNWI3NDUxZjMyZGEzZTEyZDk1YTA0MjE0MmU0MThmMmEuLmQ4
MjMyNGRlMTUyMGNhNGNlMjE0YTVkYmM3NzY3YzY1MTExOWE4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVF1ZXVlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVRdWV1ZVByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VT
UykKIAorI2luY2x1ZGUgIlJlbW90ZURldmljZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVSWRl
bnRpZmllci5oIgogI2luY2x1ZGUgPHBhbC9ncmFwaGljcy9XZWJHUFUvV2ViR1BVUXVldWUuaD4K
ICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KQEAgLTM3LDE3ICszOCwyMCBAQCBjbGFzcyBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUXVldWVQcm94eSBmaW5hbCA6IHB1Ymxp
YyBQQUw6OldlYkdQVTo6UXVldWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUXVl
dWVQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVF1ZXVlUHJveHk+IGNyZWF0ZShSZW1vdGVE
ZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFj
a2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVF1ZXVlUHJveHkoY29udmVydFRvQmFja2luZ0Nv
bnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUXVldWVQcm94eShw
YXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB+UmVtb3RlUXVldWVQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkm
IHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3Qo
KSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJl
bW90ZVF1ZXVlUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVRdWV1
ZVByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJH
UFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVF1ZXVlUHJveHkoY29uc3QgUmVtb3RlUXVldWVQ
cm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVF1ZXVlUHJveHkoUmVtb3RlUXVldWVQcm94eSYm
KSA9IGRlbGV0ZTsKQEAgLTU1LDYgKzU5LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUXVldWVQ
cm94eSYgb3BlcmF0b3I9KFJlbW90ZVF1ZXVlUHJveHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJH
UFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAK
KyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9
IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4g
Ym9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJl
YW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRl
ZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAg
V0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5
bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCisgICAgeworICAgICAg
ICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3Zl
KG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgIH0KIAogICAgIHZvaWQgc3VibWl0KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PFBBTDo6V2ViR1BVOjpDb21tYW5kQnVmZmVyPj4mJikgZmluYWw7CiAKQEAgLTg0LDggKzEwMCw5
IEBAIHByaXZhdGU6CiAKICAgICBEZXF1ZTxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IG1fY2FsbGJh
Y2tzOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVm
PENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAg
IFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eS5jcHAKaW5kZXggOTdjZGEwMzc2YmQ5YTExMWYzMjVlYmE1MDA5M2YzYTg3
ZjU1ZWM5OC4uMmI2ZDJkN2Q5NDFlNGY4YmFjYTUyZjVkODRmYzQ0MzhhMTdiMjE1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuY3Bw
CkBAIC0yOCwxMyArMjgsMTYgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAorI2luY2x1
ZGUgIlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlckJ1bmRsZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFja2luZ0Nv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5OjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkoQ29udmVydFRv
QmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVJlbmRlckJ1
bmRsZUVuY29kZXJQcm94eTo6UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KFJlbW90ZURl
dmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5n
KGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJlbnQocGFyZW50KQogewogfQogCkBAIC00NCwzMiAr
NDcsNDIgQEAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Ojp+UmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5KCkKIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OnNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYgcmVuZGVyUGlw
ZWxpbmUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlbmRlclBpcGVsaW5lKTsKKyAgICBhdXRvIGNv
bnZlcnRlZFJlbmRlclBpcGVsaW5lID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVy
dFRvQmFja2luZyhyZW5kZXJQaXBlbGluZSk7CisgICAgQVNTRVJUKGNvbnZlcnRlZFJlbmRlclBp
cGVsaW5lKTsKKyAgICBpZiAoIWNvbnZlcnRlZFJlbmRlclBpcGVsaW5lKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJC
dW5kbGVFbmNvZGVyOjpTZXRQaXBlbGluZShjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5k
bGVFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVyKGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXIm
IGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGluZGV4Rm9ybWF0LCBQQUw6OldlYkdQ
VTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXpl
KQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRleEZv
cm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHNpemUp
OworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+
Y29udmVydFRvQmFja2luZyhidWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRCdWZmZXIpOwor
ICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyOjpTZXRJ
bmRleEJ1ZmZlcihjb252ZXJ0ZWRCdWZmZXIsIGluZGV4Rm9ybWF0LCBvZmZzZXQsIHNpemUpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5OjpzZXRWZXJ0ZXhCdWZmZXIoUEFMOjpXZWJHUFU6OkluZGV4MzIg
c2xvdCwgY29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgYnVmZmVyLCBQQUw6OldlYkdQVTo6U2l6
ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewot
ICAgIFVOVVNFRF9QQVJBTShzbG90KTsKLSAgICBVTlVTRURfUEFSQU0oYnVmZmVyKTsKLSAgICBV
TlVTRURfUEFSQU0ob2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisgICAgYXV0byBj
b252ZXJ0ZWRCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJ1ZmZlcik7CisgICAgaWYgKCFjb252
ZXJ0ZWRCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNl
bmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlNldFZlcnRleEJ1ZmZlcihz
bG90LCBjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSkpOworICAgIFVOVVNFRF9WQVJJQUJM
RShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6
OmRyYXcoUEFMOjpXZWJHUFU6OlNpemUzMiB2ZXJ0ZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUz
MiBpbnN0YW5jZUNvdW50LAogICAgIFBBTDo6V2ViR1BVOjpTaXplMzIgZmlyc3RWZXJ0ZXgsIFBB
TDo6V2ViR1BVOjpTaXplMzIgZmlyc3RJbnN0YW5jZSkKIHsKLSAgICBVTlVTRURfUEFSQU0odmVy
dGV4Q291bnQpOwotICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZUNvdW50KTsKLSAgICBVTlVTRURf
UEFSQU0oZmlyc3RWZXJ0ZXgpOwotICAgIFVOVVNFRF9QQVJBTShmaXJzdEluc3RhbmNlKTsKKyAg
ICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyOjpEcmF3KHZlcnRleENvdW50LCBpbnN0YW5jZUNvdW50LCBmaXJzdFZlcnRleCwgZmlyc3RJ
bnN0YW5jZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBS
ZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKFBBTDo6V2ViR1BVOjpT
aXplMzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNvdW50LApAQCAt
NzcsMzEgKzkwLDQyIEBAIHZvaWQgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5OjpkcmF3
SW5kZXhlZChQQUw6OldlYkdQVTo6U2l6ZTMyIGluZGV4Q291bnQsCiAgICAgUEFMOjpXZWJHUFU6
OlNpZ25lZE9mZnNldDMyIGJhc2VWZXJ0ZXgsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBmaXJz
dEluc3RhbmNlKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleENvdW50KTsKLSAgICBVTlVTRURf
UEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5kZXgpOwotICAg
IFVOVVNFRF9QQVJBTShiYXNlVmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJbnN0YW5j
ZSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2Rlcjo6RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VDb3VudCwgZmlyc3RJ
bmRleCwgYmFzZVZlcnRleCwgZmlyc3RJbnN0YW5jZSkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRy
YXdJbmRpcmVjdChjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBpbmRpcmVjdEJ1ZmZlciwgUEFM
OjpXZWJHUFU6OlNpemU2NCBpbmRpcmVjdE9mZnNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oaW5k
aXJlY3RCdWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdE9mZnNldCk7CisgICAgYXV0
byBjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNv
bnZlcnRUb0JhY2tpbmcoaW5kaXJlY3RCdWZmZXIpOworICAgIEFTU0VSVChjb252ZXJ0ZWRJbmRp
cmVjdEJ1ZmZlcik7CisgICAgaWYgKCFjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyQnVuZGxlRW5jb2Rlcjo6RHJhd0luZGlyZWN0KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyLCBp
bmRpcmVjdE9mZnNldCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkSW5kaXJlY3Qo
Y29uc3QgUEFMOjpXZWJHUFU6OkJ1ZmZlciYgaW5kaXJlY3RCdWZmZXIsIFBBTDo6V2ViR1BVOjpT
aXplNjQgaW5kaXJlY3RPZmZzZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVy
KTsKLSAgICBVTlVTRURfUEFSQU0oaW5kaXJlY3RPZmZzZXQpOworICAgIGF1dG8gY29udmVydGVk
SW5kaXJlY3RCdWZmZXIgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGluZGlyZWN0QnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkSW5kaXJlY3RCdWZmZXIp
OworICAgIGlmICghY29udmVydGVkSW5kaXJlY3RCdWZmZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXI6OkRyYXdJbmRleGVkSW5kaXJlY3QoY29udmVydGVkSW5kaXJlY3RCdWZmZXIsIGluZGly
ZWN0T2Zmc2V0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lk
IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BV
OjpJbmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAs
CiAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZz
ZXQ+PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAg
VU5VU0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRz
KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVkQmlu
ZEdyb3VwKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcjo6U2V0QmluZEdyb3VwKGluZGV4LCBjb252ZXJ0ZWRCaW5kR3JvdXAsIGR5bmFtaWNP
ZmZzZXRzKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJ
bmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCkBA
IC0xMTAsMzcgKzEzNCw1MyBAQCB2b2lkIFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eTo6
c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJbmRleDMyIGluZGV4LCBjbwogICAgIFBBTDo6V2Vi
R1BVOjpTaXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCiAgICAgUEFMOjpXZWJHUFU6OlNp
emUzMiBkeW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4
KTsKLSAgICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1p
Y09mZnNldHNBcnJheUJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJy
YXlCdWZmZXJMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFTdGFy
dCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7CisgICAgYXV0
byBjb252ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0
VG9CYWNraW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7Cisg
ICAgaWYgKCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
c2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlNl
dEJpbmRHcm91cChpbmRleCwgY29udmVydGVkQmluZEdyb3VwLCBWZWN0b3I8UEFMOjpXZWJHUFU6
OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+KGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZmZXIgKyBkeW5hbWlj
T2Zmc2V0c0RhdGFTdGFydCwgZHluYW1pY09mZnNldHNEYXRhTGVuZ3RoKSkpOworICAgIFVOVVNF
RF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHk6OnB1c2hEZWJ1Z0dyb3VwKFN0cmluZyYmIGdyb3VwTGFiZWwpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGdyb3VwTGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3Jv
dXBMYWJlbCkpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5Ojpwb3BEZWJ1Z0dyb3VwKCkKIHsKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVy
OjpQb3BEZWJ1Z0dyb3VwKCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2Vy
KFN0cmluZyYmIG1hcmtlckxhYmVsKQogewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7
CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2Rlcjo6SW5zZXJ0RGVidWdNYXJrZXIoV1RGTW92ZShtYXJrZXJMYWJlbCkpKTsKKyAgICBV
TlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIFJlZjxQQUw6OldlYkdQVTo6UmVuZGVy
QnVuZGxlPiBSZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHk6OmZpbmlzaChjb25zdCBQQUw6
OldlYkdQVTo6UmVuZGVyQnVuZGxlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKLSAgICBVTlVT
RURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5
OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCk7CisgICAgYXV0byBjb252ZXJ0ZWRE
ZXNjcmlwdG9yID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhk
ZXNjcmlwdG9yKTsKKyAgICBBU1NFUlQoY29udmVydGVkRGVzY3JpcHRvcik7CisgICAgaWYgKCFj
b252ZXJ0ZWREZXNjcmlwdG9yKSB7CisgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZXJyb3Ig
aGFuZGxpbmcuCisgICAgICAgIHJldHVybiBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eTo6Y3JlYXRl
KG1fcGFyZW50LCBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpKTsKKyAgICB9CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXZWJHUFVJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OkZpbmlzaCgqY29udmVydGVkRGVzY3JpcHRvciwgaWRl
bnRpZmllcikpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIHJldHVy
biBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eTo6Y3JlYXRlKG1fcGFyZW50LCBtX2NvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAg
ICBVTlVTRURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5V
U0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9X
ZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJv
eHkuaAppbmRleCAyYTI0ZDg4NmEyZTI1ZmQ4ZDY0NGExZjg5OWE5NjU5Nzc3YmY0ZDBiLi4xMDA0
NWFlMmViZjI5ZTQxZWU4ZGVlYjkyNDg0YWQxNDEzODdhMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVF
bmNvZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVFbmNvZGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBA
QAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBo
aWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGVFbmNvZGVyLmg+CiAKQEAgLTM2LDE3ICszNywy
MCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlUmVuZGVy
QnVuZGxlRW5jb2RlclByb3h5IGZpbmFsIDogcHVibGljIFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5k
bGVFbmNvZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94
eT4gY3JlYXRlKFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlUmVuZGVyQnVuZGxl
RW5jb2RlclByb3h5KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZUVuY29kZXJQcm94eShwYXJlbnQsIGNvbnZl
cnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCi0gICAgflJlbW90ZVJl
bmRlckJ1bmRsZUVuY29kZXJQcm94eSgpOworICAgIHZpcnR1YWwgflJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eSgpOworCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0
dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRs
ZUVuY29kZXJQcm94eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVJlbmRl
ckJ1bmRsZUVuY29kZXJQcm94eShSZW1vdGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVFbmNv
ZGVyUHJveHkoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5JikgPSBkZWxldGU7
CiAgICAgUmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5KFJlbW90ZVJlbmRlckJ1bmRsZUVu
Y29kZXJQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDYgKzU4LDE4IEBAIHByaXZhdGU6CiAgICAg
UmVtb3RlUmVuZGVyQnVuZGxlRW5jb2RlclByb3h5JiBvcGVyYXRvcj0oUmVtb3RlUmVuZGVyQnVu
ZGxlRW5jb2RlclByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNr
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGlu
ZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVz
c2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlv
bigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQp
OworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVS
TiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0
eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5z
dHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2
b2lkIHNldFBpcGVsaW5lKGNvbnN0IFBBTDo6V2ViR1BVOjpSZW5kZXJQaXBlbGluZSYpIGZpbmFs
OwogCkBAIC04Nyw4ICsxMDMsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJlbEludGVy
bmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tp
bmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmll
ciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRU
b0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVt
b3RlUmVuZGVyQnVuZGxlUHJveHkuY3BwCmluZGV4IGY5MjczMGZjYjAwN2M5OTJlYzVmZGY5Njkw
NGU2MjlhNzY4MzU0YjUuLmEyNTFiNmQzMThjNzcxMzQ4YjViZTgwMDUxMWIzNDY0NzI2ZTQ5OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5jcHAKQEAgLTI4
LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVt
b3RlUmVuZGVyQnVuZGxlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVSZW5k
ZXJCdW5kbGVQcm94eTo6UmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5n
Q29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5
OjpSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252
ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50
aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9j
b252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1f
cGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsNyArNDYsOCBAQCBSZW1vdGVSZW5kZXJCdW5k
bGVQcm94eTo6flJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KCkKIAogdm9pZCBSZW1vdGVSZW5kZXJC
dW5kbGVQcm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAg
IFVOVVNFRF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyQnVuZGxlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJ
QUJMRShzZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1Jl
bW90ZVJlbmRlckJ1bmRsZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJCdW5kbGVQcm94eS5oCmluZGV4IDlhMDhkNzA3MTM4
YzUzMGY1NzhmMzM5MTIxY2ZkNjE2OTJkYjVmYzguLjdjMGRjNWVlOWY0ZmQyZDU0YzE3YzFkMjU3
MTAwNzdlZWJhZGJkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlckJ1bmRsZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyQnVuZGxlUHJv
eHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5j
bHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgi
CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVSZW5kZXJCdW5kbGUuaD4KIApA
QCAtMzYsMTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFz
cyBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVu
ZGVyQnVuZGxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlckJ1bmRsZVBy
b3h5PiBjcmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250
ZXh0KQorICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyQnVuZGxlUHJveHk+IGNyZWF0ZShSZW1v
dGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KGNvbnZlcnRU
b0JhY2tpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJl
bmRlckJ1bmRsZVByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZp
ZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJCdW5kbGVQcm94eSgpOwog
CisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9Cisg
ICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFy
ZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9C
YWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVJlbmRlckJ1bmRsZVByb3h5KENvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoUmVtb3RlRGV2aWNl
UHJveHkmLCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAg
ICAgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkoY29uc3QgUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkm
KSA9IGRlbGV0ZTsKICAgICBSZW1vdGVSZW5kZXJCdW5kbGVQcm94eShSZW1vdGVSZW5kZXJCdW5k
bGVQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDExICs1OCwyNCBAQCBwcml2YXRlOgogICAgIFJl
bW90ZVJlbmRlckJ1bmRsZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlUmVuZGVyQnVuZGxlUHJveHkm
JikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNv
bmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
KyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3Zl
KG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlv
bjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5
JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5l
Y3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2lu
ZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0TGFiZWxJbnRl
cm5hbChjb25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNr
aW5nIHsgV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZp
ZXIgbV9iYWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0
VG9CYWNraW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNv
ZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5jcHAKaW5kZXggOWQ5MzI2MTdmZTEzYWY0
M2EyZjY4MGQxZjE4OGY1YWUxMThmYjJlOC4uM2U4ZjVhNjNmNGFmMTI0NzJiOGYyM2Y1OGZkZjJk
ODdhYmZkMzUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eS5jcHAKQEAgLTI4LDEyICsyOCwxNSBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQogCisjaW5jbHVkZSAiUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYkdQVUNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVSB7CiAKLVJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OlJlbW90ZVJlbmRl
clBhc3NFbmNvZGVyUHJveHkoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCkKK1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OlJlbW90ZVJlbmRlclBh
c3NFbmNvZGVyUHJveHkoUmVtb3RlQ29tbWFuZEVuY29kZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwgbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAsIG1fcGFy
ZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsMzIgKzQ2LDQyIEBAIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHk6On5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KCkKIAogdm9pZCBSZW1v
dGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRQaXBlbGluZShjb25zdCBQQUw6OldlYkdQVTo6
UmVuZGVyUGlwZWxpbmUmIHJlbmRlclBpcGVsaW5lKQogewotICAgIFVOVVNFRF9QQVJBTShyZW5k
ZXJQaXBlbGluZSk7CisgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSA9IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmcocmVuZGVyUGlwZWxpbmUpOworICAg
IEFTU0VSVChjb252ZXJ0ZWRSZW5kZXJQaXBlbGluZSk7CisgICAgaWYgKCFjb252ZXJ0ZWRSZW5k
ZXJQaXBlbGluZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2Vu
ZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNldFBpcGVsaW5lKGNvbnZlcnRl
ZFJlbmRlclBpcGVsaW5lKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEluZGV4QnVmZmVyKGNvbnN0
IFBBTDo6V2ViR1BVOjpCdWZmZXImIGJ1ZmZlciwgUEFMOjpXZWJHUFU6OkluZGV4Rm9ybWF0IGlu
ZGV4Rm9ybWF0LCBQQUw6OldlYkdQVTo6U2l6ZTY0IG9mZnNldCwgc3RkOjpvcHRpb25hbDxQQUw6
OldlYkdQVTo6U2l6ZTY0PiBzaXplKQogewotICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwotICAg
IFVOVVNFRF9QQVJBTShpbmRleEZvcm1hdCk7Ci0gICAgVU5VU0VEX1BBUkFNKG9mZnNldCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHNpemUpOworICAgIGF1dG8gY29udmVydGVkQnVmZmVyID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZyhidWZmZXIpOworICAgIEFTU0VS
VChjb252ZXJ0ZWRCdWZmZXIpOworICAgIGlmICghY29udmVydGVkQnVmZmVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6U2V0SW5kZXhCdWZmZXIoY29udmVydGVkQnVmZmVyLCBpbmRleEZvcm1h
dCwgb2Zmc2V0LCBzaXplKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQog
CiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFZlcnRleEJ1ZmZlcihQQUw6
OldlYkdQVTo6SW5kZXgzMiBzbG90LCBjb25zdCBQQUw6OldlYkdQVTo6QnVmZmVyJiBidWZmZXIs
IFBBTDo6V2ViR1BVOjpTaXplNjQgb2Zmc2V0LCBzdGQ6Om9wdGlvbmFsPFBBTDo6V2ViR1BVOjpT
aXplNjQ+IHNpemUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHNsb3QpOwotICAgIFVOVVNFRF9QQVJB
TShidWZmZXIpOwotICAgIFVOVVNFRF9QQVJBTShvZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRl
eHQtPmNvbnZlcnRUb0JhY2tpbmcoYnVmZmVyKTsKKyAgICBBU1NFUlQoY29udmVydGVkQnVmZmVy
KTsKKyAgICBpZiAoIWNvbnZlcnRlZEJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNl
dFZlcnRleEJ1ZmZlcihzbG90LCBjb252ZXJ0ZWRCdWZmZXIsIG9mZnNldCwgc2l6ZSkpOworICAg
IFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNz
RW5jb2RlclByb3h5OjpkcmF3KFBBTDo6V2ViR1BVOjpTaXplMzIgdmVydGV4Q291bnQsIFBBTDo6
V2ViR1BVOjpTaXplMzIgaW5zdGFuY2VDb3VudCwKICAgICBQQUw6OldlYkdQVTo6U2l6ZTMyIGZp
cnN0VmVydGV4LCBQQUw6OldlYkdQVTo6U2l6ZTMyIGZpcnN0SW5zdGFuY2UpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKHZlcnRleENvdW50KTsKLSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7
Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0VmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmlyc3RJ
bnN0YW5jZSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OkRyYXcodmVydGV4Q291bnQsIGluc3RhbmNlQ291bnQsIGZpcnN0VmVy
dGV4LCBmaXJzdEluc3RhbmNlKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwog
fQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmRyYXdJbmRleGVkKFBBTDo6
V2ViR1BVOjpTaXplMzIgaW5kZXhDb3VudCwgUEFMOjpXZWJHUFU6OlNpemUzMiBpbnN0YW5jZUNv
dW50LApAQCAtNzYsMzEgKzg5LDQyIEBAIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eTo6ZHJhd0luZGV4ZWQoUEFMOjpXZWJHUFU6OlNpemUzMiBpbmRleENvdW50LCBQCiAgICAgUEFM
OjpXZWJHUFU6OlNpZ25lZE9mZnNldDMyIGJhc2VWZXJ0ZXgsCiAgICAgUEFMOjpXZWJHUFU6OlNp
emUzMiBmaXJzdEluc3RhbmNlKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleENvdW50KTsKLSAg
ICBVTlVTRURfUEFSQU0oaW5zdGFuY2VDb3VudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGZpcnN0SW5k
ZXgpOwotICAgIFVOVVNFRF9QQVJBTShiYXNlVmVydGV4KTsKLSAgICBVTlVTRURfUEFSQU0oZmly
c3RJbnN0YW5jZSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OkRyYXdJbmRleGVkKGluZGV4Q291bnQsIGluc3RhbmNlQ291bnQs
IGZpcnN0SW5kZXgsIGJhc2VWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eTo6ZHJhd0luZGlyZWN0KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVy
LCBQQUw6OldlYkdQVTo6U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJB
TShpbmRpcmVjdEJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0T2Zmc2V0KTsKKyAg
ICBhdXRvIGNvbnZlcnRlZEluZGlyZWN0QnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4
dC0+Y29udmVydFRvQmFja2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyKTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJQYXNzRW5jb2Rlcjo6RHJhd0luZGlyZWN0KGNvbnZlcnRlZEluZGlyZWN0QnVmZmVy
LCBpbmRpcmVjdE9mZnNldCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0K
IAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5OjpkcmF3SW5kZXhlZEluZGlyZWN0
KGNvbnN0IFBBTDo6V2ViR1BVOjpCdWZmZXImIGluZGlyZWN0QnVmZmVyLCBQQUw6OldlYkdQVTo6
U2l6ZTY0IGluZGlyZWN0T2Zmc2V0KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRpcmVjdEJ1ZmZl
cik7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGlyZWN0QnVmZmVyKTsKKyAgICBhdXRvIGNvbnZlcnRl
ZEluZGlyZWN0QnVmZmVyID0gbV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFj
a2luZyhpbmRpcmVjdEJ1ZmZlcik7CisgICAgQVNTRVJUKGNvbnZlcnRlZEluZGlyZWN0QnVmZmVy
KTsKKyAgICBpZiAoIWNvbnZlcnRlZEluZGlyZWN0QnVmZmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5j
b2Rlcjo6RHJhd0luZGV4ZWRJbmRpcmVjdChjb252ZXJ0ZWRJbmRpcmVjdEJ1ZmZlciwgaW5kaXJl
Y3RPZmZzZXQpKTsKKyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQg
UmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6c2V0QmluZEdyb3VwKFBBTDo6V2ViR1BVOjpJ
bmRleDMyIGluZGV4LCBjb25zdCBQQUw6OldlYkdQVTo6QmluZEdyb3VwJiBiaW5kR3JvdXAsCiAg
ICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UEFMOjpXZWJHUFU6OkJ1ZmZlckR5bmFtaWNPZmZzZXQ+
PiYmIGR5bmFtaWNPZmZzZXRzKQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGJpbmRHcm91cCk7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzKTsK
KyAgICBhdXRvIGNvbnZlcnRlZEJpbmRHcm91cCA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQt
PmNvbnZlcnRUb0JhY2tpbmcoYmluZEdyb3VwKTsKKyAgICBBU1NFUlQoY29udmVydGVkQmluZEdy
b3VwKTsKKyAgICBpZiAoIWNvbnZlcnRlZEJpbmRHcm91cCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29k
ZXI6OlNldEJpbmRHcm91cChpbmRleCwgY29udmVydGVkQmluZEdyb3VwLCBkeW5hbWljT2Zmc2V0
cykpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVS
ZW5kZXJQYXNzRW5jb2RlclByb3h5OjpzZXRCaW5kR3JvdXAoUEFMOjpXZWJHUFU6OkluZGV4MzIg
aW5kZXgsIGNvbnN0IFBBTDo6V2ViR1BVOjpCaW5kR3JvdXAmIGJpbmRHcm91cCwKQEAgLTEwOSw5
MCArMTMzLDEyMCBAQCB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEJpbmRH
cm91cChQQUw6OldlYkdQVTo6SW5kZXgzMiBpbmRleCwgY29ucwogICAgIFBBTDo6V2ViR1BVOjpT
aXplNjQgZHluYW1pY09mZnNldHNEYXRhU3RhcnQsCiAgICAgUEFMOjpXZWJHUFU6OlNpemUzMiBk
eW5hbWljT2Zmc2V0c0RhdGFMZW5ndGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGluZGV4KTsKLSAg
ICBVTlVTRURfUEFSQU0oYmluZEdyb3VwKTsKLSAgICBVTlVTRURfUEFSQU0oZHluYW1pY09mZnNl
dHNBcnJheUJ1ZmZlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzQXJyYXlCdWZm
ZXJMZW5ndGgpOwotICAgIFVOVVNFRF9QQVJBTShkeW5hbWljT2Zmc2V0c0RhdGFTdGFydCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCk7CisgICAgYXV0byBjb252
ZXJ0ZWRCaW5kR3JvdXAgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9CYWNr
aW5nKGJpbmRHcm91cCk7CisgICAgQVNTRVJUKGNvbnZlcnRlZEJpbmRHcm91cCk7CisgICAgaWYg
KCFjb252ZXJ0ZWRCaW5kR3JvdXApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRCaW5kR3Jv
dXAoaW5kZXgsIGNvbnZlcnRlZEJpbmRHcm91cCwgVmVjdG9yPFBBTDo6V2ViR1BVOjpCdWZmZXJE
eW5hbWljT2Zmc2V0PihkeW5hbWljT2Zmc2V0c0FycmF5QnVmZmVyICsgZHluYW1pY09mZnNldHNE
YXRhU3RhcnQsIGR5bmFtaWNPZmZzZXRzRGF0YUxlbmd0aCkpKTsKKyAgICBVTlVTRURfVkFSSUFC
TEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eTo6
cHVzaERlYnVnR3JvdXAoU3RyaW5nJiYgZ3JvdXBMYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0o
Z3JvdXBMYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OlB1c2hEZWJ1Z0dyb3VwKFdURk1vdmUoZ3JvdXBMYWJlbCkpKTsK
KyAgICBVTlVTRURfVkFSSUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVy
UGFzc0VuY29kZXJQcm94eTo6cG9wRGVidWdHcm91cCgpCiB7CisgICAgYXV0byBzZW5kUmVzdWx0
ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlBvcERlYnVnR3JvdXAo
KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJl
bmRlclBhc3NFbmNvZGVyUHJveHk6Omluc2VydERlYnVnTWFya2VyKFN0cmluZyYmIG1hcmtlckxh
YmVsKQogewotICAgIFVOVVNFRF9QQVJBTShtYXJrZXJMYWJlbCk7CisgICAgYXV0byBzZW5kUmVz
dWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6Okluc2VydERlYnVn
TWFya2VyKFdURk1vdmUobWFya2VyTGFiZWwpKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRS
ZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFZpZXdw
b3J0KGZsb2F0IHgsIGZsb2F0IHksCiAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwKICAg
ICBmbG9hdCBtaW5EZXB0aCwgZmxvYXQgbWF4RGVwdGgpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHgp
OwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAgIFVO
VVNFRF9QQVJBTShoZWlnaHQpOwotICAgIFVOVVNFRF9QQVJBTShtaW5EZXB0aCk7Ci0gICAgVU5V
U0VEX1BBUkFNKG1heERlcHRoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6U2V0Vmlld3BvcnQoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgbWluRGVwdGgsIG1heERlcHRoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFNjaXNzb3JSZWN0
KFBBTDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSB4LCBQQUw6OldlYkdQVTo6SW50ZWdlckNv
b3JkaW5hdGUgeSwKICAgICBQQUw6OldlYkdQVTo6SW50ZWdlckNvb3JkaW5hdGUgd2lkdGgsIFBB
TDo6V2ViR1BVOjpJbnRlZ2VyQ29vcmRpbmF0ZSBoZWlnaHQpCiB7Ci0gICAgVU5VU0VEX1BBUkFN
KHgpOwotICAgIFVOVVNFRF9QQVJBTSh5KTsKLSAgICBVTlVTRURfUEFSQU0od2lkdGgpOwotICAg
IFVOVVNFRF9QQVJBTShoZWlnaHQpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpTZXRTY2lzc29yUmVjdCh4LCB5LCB3aWR0aCwg
aGVpZ2h0KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldEJsZW5kQ29uc3RhbnQoUEFMOjpXZWJHUFU6
OkNvbG9yIGNvbG9yKQogewotICAgIFVOVVNFRF9QQVJBTShjb2xvcik7CisgICAgYXV0byBjb252
ZXJ0ZWRDb2xvciA9IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQtPmNvbnZlcnRUb0JhY2tpbmco
Y29sb3IpOworICAgIEFTU0VSVChjb252ZXJ0ZWRDb2xvcik7CisgICAgaWYgKCFjb252ZXJ0ZWRD
b2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNz
YWdlczo6UmVtb3RlUmVuZGVyUGFzc0VuY29kZXI6OlNldEJsZW5kQ29uc3RhbnQoKmNvbnZlcnRl
ZENvbG9yKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJl
bW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OnNldFN0ZW5jaWxSZWZlcmVuY2UoUEFMOjpXZWJH
UFU6OlN0ZW5jaWxWYWx1ZSBzdGVuY2lsVmFsdWUpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHN0ZW5j
aWxWYWx1ZSk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXI6OlNldFN0ZW5jaWxSZWZlcmVuY2Uoc3RlbmNpbFZhbHVlKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHk6OmJlZ2luT2NjbHVzaW9uUXVlcnkoUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVy
eUluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShxdWVyeUluZGV4KTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6QmVnaW5PY2Ns
dXNpb25RdWVyeShxdWVyeUluZGV4KSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmVuZE9jY2x1c2lvblF1
ZXJ5KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJQYXNzRW5jb2Rlcjo6RW5kT2NjbHVzaW9uUXVlcnkoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmJl
Z2luUGlwZWxpbmVTdGF0aXN0aWNzUXVlcnkoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JiBx
dWVyeVNldCwgUEFMOjpXZWJHUFU6OlNpemUzMiBxdWVyeUluZGV4KQogewotICAgIFVOVVNFRF9Q
QVJBTShxdWVyeVNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKHF1ZXJ5SW5kZXgpOworICAgIGF1dG8g
Y29udmVydGVkUXVlcnlTZXQgPSBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0LT5jb252ZXJ0VG9C
YWNraW5nKHF1ZXJ5U2V0KTsKKyAgICBBU1NFUlQoY29udmVydGVkUXVlcnlTZXQpOworICAgIGlm
ICghY29udmVydGVkUXVlcnlTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gc2VuZFJl
c3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBhc3NFbmNvZGVyOjpCZWdpblBpcGVs
aW5lU3RhdGlzdGljc1F1ZXJ5KGNvbnZlcnRlZFF1ZXJ5U2V0LCBxdWVyeUluZGV4KSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NF
bmNvZGVyUHJveHk6OmVuZFBpcGVsaW5lU3RhdGlzdGljc1F1ZXJ5KCkKIHsKKyAgICBhdXRvIHNl
bmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6RW5kUGlw
ZWxpbmVTdGF0aXN0aWNzUXVlcnkoKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQp
OwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk6OmV4ZWN1dGVCdW5kbGVz
KFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFBBTDo6V2ViR1BVOjpSZW5kZXJCdW5kbGU+
PiYmIHJlbmRlckJ1bmRsZXMpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlbmRlckJ1bmRsZXMpOwor
ICAgIFZlY3RvcjxXZWJHUFVJZGVudGlmaWVyPiBjb252ZXJ0ZWRSZW5kZXJCdW5kbGVzOworICAg
IGNvbnZlcnRlZFJlbmRlckJ1bmRsZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZW5kZXJCdW5k
bGVzLnNpemUoKSk7CisgICAgZm9yIChhdXRvIHJlbmRlckJ1bmRsZSA6IHJlbmRlckJ1bmRsZXMp
IHsKKyAgICAgICAgYXV0byBjb252ZXJ0ZWRSZW5kZXJCdW5kbGUgPSBtX2NvbnZlcnRUb0JhY2tp
bmdDb250ZXh0LT5jb252ZXJ0VG9CYWNraW5nKHJlbmRlckJ1bmRsZSk7CisgICAgICAgIEFTU0VS
VChjb252ZXJ0ZWRSZW5kZXJCdW5kbGUpOworICAgICAgICBpZiAoIWNvbnZlcnRlZFJlbmRlckJ1
bmRsZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29udmVydGVkUmVuZGVyQnVuZGxl
cy51bmNoZWNrZWRBcHBlbmQoY29udmVydGVkUmVuZGVyQnVuZGxlKTsKKyAgICB9CisKKyAgICBh
dXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6
RXhlY3V0ZUJ1bmRsZXMoV1RGTW92ZShjb252ZXJ0ZWRSZW5kZXJCdW5kbGVzKSkpOworICAgIFVO
VVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJQYXNzRW5j
b2RlclByb3h5OjplbmRQYXNzKCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVSZW5kZXJQYXNzRW5jb2Rlcjo6RW5kUGFzcygpKTsKKyAgICBVTlVTRURfVkFS
SUFCTEUoc2VuZFJlc3VsdCk7CiB9CiAKIHZvaWQgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNFRF9Q
QVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxF
KHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3Rl
UmVuZGVyUGFzc0VuY29kZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eS5oCmluZGV4IGYyMDdi
OWVhNmY1MWIwZTdkNjhlNzMwZDMwODE2MjkyYjFjMzQzMTUuLjc0Mjc5ZDE5NmE3NDg3MzU4ODcz
MGNlMThkMTFlMWVlZmY3ZTJmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5k
ZXJQYXNzRW5jb2RlclByb3h5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAorI2luY2x1ZGUgIlJlbW90ZUNvbW1hbmRFbmNvZGVyUHJveHkuaCIKICNpbmNs
dWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVSZW5kZXJQYXNzRW5jb2Rlci5oPgogCkBAIC0zNiwxNyArMzcsMjAgQEAgY2xhc3MgQ29u
dmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlJlbmRlclBhc3NFbmNvZGVyIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHk+IGNyZWF0ZShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5PiBjcmVhdGUoUmVtb3RlQ29tbWFu
ZEVuY29kZXJQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRv
QmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0
LCBpZGVudGlmaWVyKSk7CiAgICAgfQogCi0gICAgflJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHkoKTsKKyAgICB2aXJ0dWFsIH5SZW1vdGVSZW5kZXJQYXNzRW5jb2RlclByb3h5KCk7CisKKyAg
ICBSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudDsg
fQorICAgIFJlbW90ZUdQVVByb3h5JiByb290KCkgeyByZXR1cm4gbV9wYXJlbnQtPnBhcmVudCgp
LnBhcmVudCgpLnBhcmVudCgpOyB9CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIERvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKLSAgICBSZW1vdGVSZW5kZXJQYXNzRW5jb2Rl
clByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAgUmVtb3RlUmVuZGVyUGFzc0Vu
Y29kZXJQcm94eShSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5JiwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlclBhc3NFbmNvZGVy
UHJveHkoY29uc3QgUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94eSYpID0gZGVsZXRlOwogICAg
IFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJveHkoUmVtb3RlUmVuZGVyUGFzc0VuY29kZXJQcm94
eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDYgKzU4LDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlUmVu
ZGVyUGFzc0VuY29kZXJQcm94eSYgb3BlcmF0b3I9KFJlbW90ZVJlbmRlclBhc3NFbmNvZGVyUHJv
eHkmJikgPSBkZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBT
ZWNvbmRzIGRlZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZN
b3ZlKG1lc3NhZ2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVj
dGlvbjo6U2VuZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJl
cGx5JiYgcmVwbHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENv
bm5lY3Rpb24oKS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFj
a2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgc2V0UGlwZWxp
bmUoY29uc3QgUEFMOjpXZWJHUFU6OlJlbmRlclBpcGVsaW5lJikgZmluYWw7CiAKQEAgLTEwNCw4
ICsxMjAsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7
CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OworICAgIFJlZjxSZW1vdGVDb21tYW5kRW5jb2RlclByb3h5PiBtX3BhcmVudDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90
ZVJlbmRlclBpcGVsaW5lUHJveHkuY3BwCmluZGV4IDQ4NDMyNzk1NDA2NmNiN2UyZmY2MzQ4ZDVh
NTkyYzgwM2NkOGFhYWQuLjBhZDJmMzlmZWU2NjA2NjBmOWJlZWQzZTlkYTdmNmQ4ZWZmYjNkMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuY3BwCkBA
IC0yOSwxMiArMjksMTUgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJS
ZW1vdGVCaW5kR3JvdXBMYXlvdXRQcm94eS5oIgorI2luY2x1ZGUgIlJlbW90ZVJlbmRlclBpcGVs
aW5lTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVSZW5kZXJQaXBlbGluZVBy
b3h5OjpSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBj
b252ZXJ0VG9CYWNraW5nQ29udGV4dCkKLSAgICA6IG1fY29udmVydFRvQmFja2luZ0NvbnRleHQo
Y29udmVydFRvQmFja2luZ0NvbnRleHQpCitSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5OjpSZW1v
dGVSZW5kZXJQaXBlbGluZVByb3h5KFJlbW90ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRU
b0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmll
ciBpZGVudGlmaWVyKQorICAgIDogbV9iYWNraW5nKGlkZW50aWZpZXIpCisgICAgLCBtX2NvbnZl
cnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorICAgICwgbV9wYXJl
bnQocGFyZW50KQogewogfQogCkBAIC00NCwxMyArNDcsMTcgQEAgUmVtb3RlUmVuZGVyUGlwZWxp
bmVQcm94eTo6flJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoKQogCiBSZWY8UEFMOjpXZWJHUFU6
OkJpbmRHcm91cExheW91dD4gUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eTo6Z2V0QmluZEdyb3Vw
TGF5b3V0KHVpbnQzMl90IGluZGV4KQogewotICAgIFVOVVNFRF9QQVJBTShpbmRleCk7Ci0gICAg
cmV0dXJuIFJlbW90ZUJpbmRHcm91cExheW91dFByb3h5OjpjcmVhdGUobV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dCk7CisgICAgYXV0byBpZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5k
ZXJQaXBlbGluZTo6R2V0QmluZEdyb3VwTGF5b3V0KGluZGV4LCBpZGVudGlmaWVyKSk7CisgICAg
VU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOworCisgICAgcmV0dXJuIFJlbW90ZUJpbmRHcm91
cExheW91dFByb3h5OjpjcmVhdGUobV9wYXJlbnQsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQs
IGlkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk6OnNldExh
YmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFi
ZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlclBp
cGVsaW5lOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShzZW5kUmVzdWx0
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVJlbmRlclBpcGVs
aW5lUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BV
L1JlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkuaAppbmRleCBmOTE0NDg0YmZmOTYwY2YxNGUyOTMy
MzYwMjY5OWZjM2I3OWYyYzdiLi4wM2NkNGNjNjk0ZjVmOWRhM2FiMjAzZTA2N2I3MDZmMDFmNDEy
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVEZXZpY2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkdQVUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVVJlbmRlclBpcGVsaW5lLmg+CiAKQEAgLTM2
LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAogY2xhc3MgUmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6UmVuZGVy
UGlwZWxpbmUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHk+IGNyZWF0ZShS
ZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVy
dFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoY29u
dmVydFRvQmFja2luZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVt
b3RlUmVuZGVyUGlwZWxpbmVQcm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBp
ZGVudGlmaWVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+UmVtb3RlUmVuZGVyUGlwZWxpbmVQ
cm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFy
ZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFy
ZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHko
Q29udmVydFRvQmFja2luZ0NvbnRleHQmKTsKKyAgICBSZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5
KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmLCBXZWJHUFVJZGVu
dGlmaWVyKTsKIAogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkoY29uc3QgUmVtb3RlUmVu
ZGVyUGlwZWxpbmVQcm94eSYpID0gZGVsZXRlOwogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJv
eHkoUmVtb3RlUmVuZGVyUGlwZWxpbmVQcm94eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDEzICs1OCwy
NiBAQCBwcml2YXRlOgogICAgIFJlbW90ZVJlbmRlclBpcGVsaW5lUHJveHkmIG9wZXJhdG9yPShS
ZW1vdGVSZW5kZXJQaXBlbGluZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRp
ZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3Rh
dGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50
Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2Vu
ZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9
CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OkJpbmRHcm91cExheW91dD4gZ2V0QmluZEdyb3VwTGF5
b3V0KHVpbnQzMl90IGluZGV4KSBmaW5hbDsKIAogICAgIHZvaWQgc2V0TGFiZWxJbnRlcm5hbChj
b25zdCBTdHJpbmcmKSBmaW5hbDsKIAotICAgIFdlYkdQVUlkZW50aWZpZXIgbV9iYWNraW5nIHsg
V2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSB9OworICAgIFdlYkdQVUlkZW50aWZpZXIgbV9i
YWNraW5nOwogICAgIFJlZjxDb252ZXJ0VG9CYWNraW5nQ29udGV4dD4gbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKKyAgICBSZWY8UmVtb3RlRGV2aWNlUHJveHk+IG1fcGFyZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTYW1wbGVy
UHJveHkuY3BwCmluZGV4IGUyNDA4OWQ2ZTNmZGYxNGZmMzgzMmRmY2UxMzE1OWQ2M2YyYmFmN2Yu
Ljk1MWEzMzk4NmVjZDhmZGE0MWUyMDRjYzM0MzFlZDRkODVhZmQ1NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNhbXBsZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlU2FtcGxlclByb3h5LmNwcApAQCAtMjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFC
TEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1vdGVTYW1wbGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0OjpXZWJHUFUgewogCi1SZW1vdGVTYW1wbGVyUHJveHk6OlJlbW90ZVNhbXBsZXJQcm94eShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBt
X2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3Rl
U2FtcGxlclByb3h5OjpSZW1vdGVTYW1wbGVyUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVu
dCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJH
UFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAg
ICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisg
ICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlU2Ft
cGxlclByb3h5Ojp+UmVtb3RlU2FtcGxlclByb3h5KCkKIAogdm9pZCBSZW1vdGVTYW1wbGVyUHJv
eHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURf
UEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVNhbXBsZXI6OlNldExhYmVsKGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2FtcGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1v
dGVTYW1wbGVyUHJveHkuaAppbmRleCAyN2RhNDcxMzE3OTMyOTNlNzY1OTQ0ZTZmZmNiZjRmOGNm
Njc1YWNlLi4xYjcxYzAxODNhOWFjMjllOTlmOTFkMDJlZTBhOWQ2NTFjYzcxOTJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVT
YW1wbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTYW1wbGVyUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNs
dWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9X
ZWJHUFVTYW1wbGVyLmg+CiAKQEAgLTM2LDE3ICszNywyMCBAQCBjbGFzcyBDb252ZXJ0VG9CYWNr
aW5nQ29udGV4dDsKIAogY2xhc3MgUmVtb3RlU2FtcGxlclByb3h5IGZpbmFsIDogcHVibGljIFBB
TDo6V2ViR1BVOjpTYW1wbGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVNhbXBs
ZXJQcm94eT4gY3JlYXRlKENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5n
Q29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZVNhbXBsZXJQcm94eT4gY3JlYXRlKFJlbW90
ZURldmljZVByb3h5JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlU2FtcGxlclByb3h5KGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNhbXBsZXJQ
cm94eShwYXJlbnQsIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBpZGVudGlmaWVyKSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+UmVtb3RlU2FtcGxlclByb3h5KCk7CiAKKyAgICBSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICBSZW1vdGVHUFVQcm94
eSYgcm9vdCgpIHsgcmV0dXJuIG1fcGFyZW50LT5wYXJlbnQoKS5wYXJlbnQoKTsgfQorCiBwcml2
YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Owog
Ci0gICAgUmVtb3RlU2FtcGxlclByb3h5KENvbnZlcnRUb0JhY2tpbmdDb250ZXh0Jik7CisgICAg
UmVtb3RlU2FtcGxlclByb3h5KFJlbW90ZURldmljZVByb3h5JiwgQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmLCBXZWJHUFVJZGVudGlmaWVyKTsKIAogICAgIFJlbW90ZVNhbXBsZXJQcm94eShjb25z
dCBSZW1vdGVTYW1wbGVyUHJveHkmKSA9IGRlbGV0ZTsKICAgICBSZW1vdGVTYW1wbGVyUHJveHko
UmVtb3RlU2FtcGxlclByb3h5JiYpID0gZGVsZXRlOwpAQCAtNTQsMTEgKzU4LDI0IEBAIHByaXZh
dGU6CiAgICAgUmVtb3RlU2FtcGxlclByb3h5JiBvcGVyYXRvcj0oUmVtb3RlU2FtcGxlclByb3h5
JiYpID0gZGVsZXRlOwogCiAgICAgV2ViR1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNraW5nOyB9CisgICAgCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vj
b25kcyBkZWZhdWx0U2VuZFRpbWVvdXQgPSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgYmFja2luZygpLCBkZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rp
b246OlNlbmRTeW5jUmVzdWx0IHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25u
ZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tp
bmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CiAKICAgICB2b2lkIHNldExhYmVsSW50
ZXJuYWwoY29uc3QgU3RyaW5nJikgZmluYWw7CiAKLSAgICBXZWJHUFVJZGVudGlmaWVyIG1fYmFj
a2luZyB7IFdlYkdQVUlkZW50aWZpZXI6OmdlbmVyYXRlKCkgfTsKKyAgICBXZWJHUFVJZGVudGlm
aWVyIG1fYmFja2luZzsKICAgICBSZWY8Q29udmVydFRvQmFja2luZ0NvbnRleHQ+IG1fY29udmVy
dFRvQmFja2luZ0NvbnRleHQ7CisgICAgUmVmPFJlbW90ZURldmljZVByb3h5PiBtX3BhcmVudDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9S
ZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5jcHAKaW5kZXggZTI3M2YzMTMxNWFlMWU1ZjNkNDhkOGVm
ZWZlOTJlM2MxYjM2Y2M4NS4uYTJiMGFlMTQ3NmQxMjE3YTk3MGMwNDk4M2Y2NGI5OGNhM2NjMGFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJH
UFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmNwcApAQCAt
MjgsMTIgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVTaGFkZXJNb2R1bGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkdQVUNvbnZlcnRUb0Jh
Y2tpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVDb21w
aWxhdGlvbkluZm8uaD4KKyNpbmNsdWRlIDxwYWwvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVUNvbXBp
bGF0aW9uTWVzc2FnZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVT
aGFkZXJNb2R1bGVQcm94eTo6UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoQ29udmVydFRvQmFja2lu
Z0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQotICAgIDogbV9jb252ZXJ0VG9CYWNr
aW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKK1JlbW90ZVNoYWRlck1vZHVsZVBy
b3h5OjpSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICA6IG1fYmFja2luZyhpZGVudGlmaWVyKQorICAgICwg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dChjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkKKyAgICAs
IG1fcGFyZW50KHBhcmVudCkKIHsKIH0KIApAQCAtNDMsMTIgKzQ4LDIwIEBAIFJlbW90ZVNoYWRl
ck1vZHVsZVByb3h5Ojp+UmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoKQogCiB2b2lkIFJlbW90ZVNo
YWRlck1vZHVsZVByb3h5Ojpjb21waWxhdGlvbkluZm8oV1RGOjpGdW5jdGlvbjx2b2lkKFJlZjxQ
QUw6OldlYkdQVTo6Q29tcGlsYXRpb25JbmZvPiYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworICAgIFZlY3RvcjxDb21waWxhdGlvbk1lc3NhZ2U+IG1lc3Nh
Z2VzOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpSZW1vdGVTaGFk
ZXJNb2R1bGU6OkNvbXBpbGF0aW9uSW5mbygpLCB7IG1lc3NhZ2VzIH0pOworICAgIFVOVVNFRF9W
QVJJQUJMRShzZW5kUmVzdWx0KTsKKworICAgIGF1dG8gYmFja2luZ01lc3NhZ2VzID0gbWVzc2Fn
ZXMubWFwKFtdIChDb21waWxhdGlvbk1lc3NhZ2UgY29tcGlsYXRpb25NZXNzYWdlKSB7CisgICAg
ICAgIHJldHVybiBQQUw6OldlYkdQVTo6Q29tcGlsYXRpb25NZXNzYWdlOjpjcmVhdGUoV1RGTW92
ZShjb21waWxhdGlvbk1lc3NhZ2UubWVzc2FnZSksIGNvbXBpbGF0aW9uTWVzc2FnZS50eXBlLCBj
b21waWxhdGlvbk1lc3NhZ2UubGluZU51bSwgY29tcGlsYXRpb25NZXNzYWdlLmxpbmVQb3MsIGNv
bXBpbGF0aW9uTWVzc2FnZS5vZmZzZXQsIGNvbXBpbGF0aW9uTWVzc2FnZS5sZW5ndGgpOworICAg
IH0pOworICAgIGNhbGxiYWNrKFBBTDo6V2ViR1BVOjpDb21waWxhdGlvbkluZm86OmNyZWF0ZShX
VEZNb3ZlKGJhY2tpbmdNZXNzYWdlcykpKTsKIH0KIAogdm9pZCBSZW1vdGVTaGFkZXJNb2R1bGVQ
cm94eTo6c2V0TGFiZWxJbnRlcm5hbChjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIFVOVVNF
RF9QQVJBTShsYWJlbCk7CisgICAgYXV0byBzZW5kUmVzdWx0ID0gc2VuZChNZXNzYWdlczo6UmVt
b3RlU2hhZGVyTW9kdWxlOjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVNo
YWRlck1vZHVsZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVTaGFkZXJNb2R1bGVQcm94eS5oCmluZGV4IDc0ZTBmMTkzN2NiMzhmYjVl
MDM1ZDRjN2JlYTk5ZTk0MTdmNzE3NTMuLmY2MWFkOTU0YmNlMzcxY2FhOWMwMmNlOWVmYjc4MzEz
NjExMGZjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvV2ViR1BVL1JlbW90ZVNoYWRlck1vZHVsZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCisjaW5jbHVkZSAi
UmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVTaGFkZXJNb2R1bGUuaD4KIApAQCAtMzYs
MTcgKzM3LDIwIEBAIGNsYXNzIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0OwogCiBjbGFzcyBSZW1v
dGVTaGFkZXJNb2R1bGVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6U2hhZGVyTW9k
dWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVNoYWRlck1vZHVsZVByb3h5PiBj
cmVhdGUoQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQor
ICAgIHN0YXRpYyBSZWY8UmVtb3RlU2hhZGVyTW9kdWxlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZp
Y2VQcm94eSYgcGFyZW50LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2lu
Z0NvbnRleHQsIFdlYkdQVUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KGNvbnZlcnRUb0JhY2tp
bmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZVNoYWRlck1v
ZHVsZVByb3h5KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIH5SZW1vdGVTaGFkZXJNb2R1bGVQcm94eSgpOwogCisgICAg
UmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVt
b3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAotICAgIFJlbW90ZVNoYWRlck1vZHVsZVByb3h5KENvbnZlcnRUb0JhY2tpbmdD
b250ZXh0Jik7CisgICAgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkm
LCBDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYsIFdlYkdQVUlkZW50aWZpZXIpOwogCiAgICAgUmVt
b3RlU2hhZGVyTW9kdWxlUHJveHkoY29uc3QgUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkmKSA9IGRl
bGV0ZTsKICAgICBSZW1vdGVTaGFkZXJNb2R1bGVQcm94eShSZW1vdGVTaGFkZXJNb2R1bGVQcm94
eSYmKSA9IGRlbGV0ZTsKQEAgLTU0LDEzICs1OCwyNiBAQCBwcml2YXRlOgogICAgIFJlbW90ZVNo
YWRlck1vZHVsZVByb3h5JiBvcGVyYXRvcj0oUmVtb3RlU2hhZGVyTW9kdWxlUHJveHkmJikgPSBk
ZWxldGU7CiAKICAgICBXZWJHUFVJZGVudGlmaWVyIGJhY2tpbmcoKSBjb25zdCB7IHJldHVybiBt
X2JhY2tpbmc7IH0KKyAgICAKKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBTZWNvbmRzIGRl
ZmF1bHRTZW5kVGltZW91dCA9IDMwX3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBX
QVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZChXVEZNb3ZlKG1lc3Nh
Z2UpLCBiYWNraW5nKCksIGRlZmF1bHRTZW5kVGltZW91dCk7CisgICAgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJOIElQQzo6Q29ubmVjdGlvbjo6U2Vu
ZFN5bmNSZXN1bHQgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHkpCisgICAgeworICAgICAgICByZXR1cm4gcm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24o
KS5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgYmFja2luZygpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KIAogICAgIHZvaWQgY29tcGlsYXRpb25JbmZvKFdU
Rjo6RnVuY3Rpb248dm9pZChSZWY8UEFMOjpXZWJHUFU6OkNvbXBpbGF0aW9uSW5mbz4mJik+JiYp
IGZpbmFsOwogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpn
ZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENv
bnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJl
ZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRleHR1cmVQcm94eS5jcHAKaW5kZXggZDFm
ZDM0Mjk1ZTFkYTgxMThhYzE1YTU4NzcxYTg0ODljNzIyNjU1MS4uNGFlZWRmNzg2ZGI3ZmY2ZWMz
NjA1YTVhNzNhNWYxMmM5YTdkNGU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJv
eHkuY3BwCkBAIC0yOCwxNCArMjgsMTcgQEAKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAor
I2luY2x1ZGUgIlJlbW90ZVRleHR1cmVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVRleHR1
cmVWaWV3UHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIldlYkdQVVRleHR1cmVWaWV3RGVzY3JpcHRvci5oIgogCiBuYW1lc3BhY2Ug
V2ViS2l0OjpXZWJHUFUgewogCi1SZW1vdGVUZXh0dXJlUHJveHk6OlJlbW90ZVRleHR1cmVQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAg
OiBtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVt
b3RlVGV4dHVyZVByb3h5OjpSZW1vdGVUZXh0dXJlUHJveHkoUmVtb3RlRGV2aWNlUHJveHkmIHBh
cmVudCwgQ29udmVydFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBX
ZWJHUFVJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikK
KyAgICAsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQp
CisgICAgLCBtX3BhcmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQ1LDE3ICs0OCwzMiBAQCBSZW1v
dGVUZXh0dXJlUHJveHk6On5SZW1vdGVUZXh0dXJlUHJveHkoKQogCiBSZWY8UEFMOjpXZWJHUFU6
OlRleHR1cmVWaWV3PiBSZW1vdGVUZXh0dXJlUHJveHk6OmNyZWF0ZVZpZXcoY29uc3Qgc3RkOjpv
cHRpb25hbDxQQUw6OldlYkdQVTo6VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiYgZGVzY3JpcHRvcikK
IHsKLSAgICBVTlVTRURfUEFSQU0oZGVzY3JpcHRvcik7Ci0gICAgcmV0dXJuIFJlbW90ZVRleHR1
cmVWaWV3UHJveHk6OmNyZWF0ZShtX2NvbnZlcnRUb0JhY2tpbmdDb250ZXh0KTsKKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHR1cmVWaWV3RGVzY3JpcHRvcj4gY29udmVydGVkRGVzY3JpcHRvcjsKKyAg
ICBpZiAoZGVzY3JpcHRvcikgeworICAgICAgICBjb252ZXJ0ZWREZXNjcmlwdG9yID0gbV9jb252
ZXJ0VG9CYWNraW5nQ29udGV4dC0+Y29udmVydFRvQmFja2luZygqZGVzY3JpcHRvcik7CisgICAg
ICAgIGlmICghY29udmVydGVkRGVzY3JpcHRvcikgeworICAgICAgICAgICAgLy8gRklYTUU6IElt
cGxlbWVudCBlcnJvciBoYW5kbGluZy4KKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVUZXh0dXJl
Vmlld1Byb3h5OjpjcmVhdGUoKnRoaXMsIG1fY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQ
VUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBp
ZGVudGlmaWVyID0gV2ViR1BVSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKKyAgICBhdXRvIHNlbmRS
ZXN1bHQgPSBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVUZXh0dXJlOjpDcmVhdGVWaWV3KCpjb252ZXJ0
ZWREZXNjcmlwdG9yLCBpZGVudGlmaWVyKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1
bHQpOworCisgICAgcmV0dXJuIFJlbW90ZVRleHR1cmVWaWV3UHJveHk6OmNyZWF0ZSgqdGhpcywg
bV9jb252ZXJ0VG9CYWNraW5nQ29udGV4dCwgaWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3Rl
VGV4dHVyZVByb3h5OjpkZXN0cm95KCkKIHsKKyAgICBhdXRvIHNlbmRSZXN1bHQgPSBzZW5kKE1l
c3NhZ2VzOjpSZW1vdGVUZXh0dXJlOjpEZXN0cm95KCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogdm9pZCBSZW1vdGVUZXh0dXJlUHJveHk6OnNldExhYmVsSW50ZXJu
YWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOworICAg
IGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJlbW90ZVRleHR1cmU6OlNldExhYmVs
KGxhYmVsKSk7CisgICAgVU5VU0VEX1ZBUklBQkxFKHNlbmRSZXN1bHQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaApp
bmRleCBhMzhjZjM0M2YzOWRlMzU4MWU2ZTRhOTE2MjllOGEyY2U4OTRhMzA1Li45NDdmZWIyYTll
NmY2M2QxMTQ2MDRlNzUwZmYyZjhiNWQzYmJlMDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0
dXJlUHJveHkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQog
CisjaW5jbHVkZSAiUmVtb3RlRGV2aWNlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVJbnRlZ3JhbFR5cGVz
Lmg+CiAjaW5jbHVkZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlLmg+CkBAIC00
MCwxNyArNDEsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJl
bW90ZVRleHR1cmVQcm94eSBmaW5hbCA6IHB1YmxpYyBQQUw6OldlYkdQVTo6VGV4dHVyZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVUZXh0dXJlUHJveHk+IGNyZWF0ZShDb252ZXJ0
VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3RhdGljIFJl
ZjxSZW1vdGVUZXh0dXJlUHJveHk+IGNyZWF0ZShSZW1vdGVEZXZpY2VQcm94eSYgcGFyZW50LCBD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQsIFdlYkdQVUlk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJlbW90ZVRleHR1cmVQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4dCkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlUHJveHkocGFyZW50LCBjb252ZXJ0VG9C
YWNraW5nQ29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgflJlbW90
ZVRleHR1cmVQcm94eSgpOwogCisgICAgUmVtb3RlRGV2aWNlUHJveHkmIHBhcmVudCgpIHsgcmV0
dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJveHkmIHJvb3QoKSB7IHJldHVybiBtX3Bh
cmVudC0+cGFyZW50KCkucGFyZW50KCk7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3Mg
RG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDsKIAotICAgIFJlbW90ZVRleHR1cmVQcm94
eShDb252ZXJ0VG9CYWNraW5nQ29udGV4dCYpOworICAgIFJlbW90ZVRleHR1cmVQcm94eShSZW1v
dGVEZXZpY2VQcm94eSYsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmll
cik7CiAKICAgICBSZW1vdGVUZXh0dXJlUHJveHkoY29uc3QgUmVtb3RlVGV4dHVyZVByb3h5Jikg
PSBkZWxldGU7CiAgICAgUmVtb3RlVGV4dHVyZVByb3h5KFJlbW90ZVRleHR1cmVQcm94eSYmKSA9
IGRlbGV0ZTsKQEAgLTU4LDYgKzYyLDE4IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlVGV4dHVyZVBy
b3h5JiBvcGVyYXRvcj0oUmVtb3RlVGV4dHVyZVByb3h5JiYpID0gZGVsZXRlOwogCiAgICAgV2Vi
R1BVSWRlbnRpZmllciBiYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nOyB9CisgICAg
CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0U2VuZFRpbWVvdXQg
PSAzMF9zOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgV0FSTl9VTlVTRURfUkVUVVJO
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHJldHVybiByb290KCkuc3Ry
ZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgYmFja2luZygpLCBk
ZWZhdWx0U2VuZFRpbWVvdXQpOworICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IFdBUk5fVU5VU0VEX1JFVFVSTiBJUEM6OkNvbm5lY3Rpb246OlNlbmRTeW5jUmVzdWx0IHNlbmRT
eW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHJvb3QoKS5zdHJlYW1DbGllbnRDb25uZWN0aW9uKCkuc2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGJhY2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0
KTsKKyAgICB9CiAKICAgICBSZWY8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3PiBjcmVhdGVWaWV3
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3RGVzY3JpcHRvcj4m
KSBmaW5hbDsKIApAQCAtNjUsOCArODEsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRMYWJl
bEludGVybmFsKGNvbnN0IFN0cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBt
X2JhY2tpbmcgeyBXZWJHUFVJZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRl
bnRpZmllciBtX2JhY2tpbmc7CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2Nv
bnZlcnRUb0JhY2tpbmdDb250ZXh0OworICAgIFJlZjxSZW1vdGVEZXZpY2VQcm94eT4gbV9wYXJl
bnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYkdQVQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZp
ZXdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQ
VS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmNwcAppbmRleCBlZTAzZjVlZTIwOGZlMDRhMTcyMzU1
ZDkzNzBjZTZhMmZkZWM1ZWJlLi40OWFmODkyZGY0Y2M0YTFmNTdlODFjMGNmNTNkZjgwNTczZDRh
MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dl
YkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmNwcApAQCAt
MjgsMTIgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJS
ZW1vdGVUZXh0dXJlVmlld01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViR1BVQ29udmVydFRvQmFj
a2luZ0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViR1BVIHsKIAotUmVtb3RlVGV4
dHVyZVZpZXdQcm94eTo6UmVtb3RlVGV4dHVyZVZpZXdQcm94eShDb252ZXJ0VG9CYWNraW5nQ29u
dGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCi0gICAgOiBtX2NvbnZlcnRUb0JhY2tpbmdD
b250ZXh0KGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0KQorUmVtb3RlVGV4dHVyZVZpZXdQcm94eTo6
UmVtb3RlVGV4dHVyZVZpZXdQcm94eShSZW1vdGVUZXh0dXJlUHJveHkmIHBhcmVudCwgQ29udmVy
dFRvQmFja2luZ0NvbnRleHQmIGNvbnZlcnRUb0JhY2tpbmdDb250ZXh0LCBXZWJHUFVJZGVudGlm
aWVyIGlkZW50aWZpZXIpCisgICAgOiBtX2JhY2tpbmcoaWRlbnRpZmllcikKKyAgICAsIG1fY29u
dmVydFRvQmFja2luZ0NvbnRleHQoY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgLCBtX3Bh
cmVudChwYXJlbnQpCiB7CiB9CiAKQEAgLTQzLDcgKzQ2LDggQEAgUmVtb3RlVGV4dHVyZVZpZXdQ
cm94eTo6flJlbW90ZVRleHR1cmVWaWV3UHJveHkoKQogCiB2b2lkIFJlbW90ZVRleHR1cmVWaWV3
UHJveHk6OnNldExhYmVsSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBVTlVT
RURfUEFSQU0obGFiZWwpOworICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmQoTWVzc2FnZXM6OlJl
bW90ZVRleHR1cmVWaWV3OjpTZXRMYWJlbChsYWJlbCkpOworICAgIFVOVVNFRF9WQVJJQUJMRShz
ZW5kUmVzdWx0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1JlbW90ZVRl
eHR1cmVWaWV3UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
V2ViR1BVL1JlbW90ZVRleHR1cmVWaWV3UHJveHkuaAppbmRleCAxMmE2YTE5ZGZhNDc3N2U0YjU0
NmUzNzY4OTExN2VmNDYwMWUxMmFkLi41N2MxYzk4ZDVjNWZkODYxNmQzMTQyZjNkMjdlZDZiYTQy
NDU2NzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1dlYkdQVS9SZW1vdGVUZXh0dXJlVmlld1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvUmVtb3RlVGV4dHVyZVZpZXdQcm94eS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKKyNpbmNsdWRlICJSZW1v
dGVUZXh0dXJlUHJveHkuaCIKICNpbmNsdWRlICJXZWJHUFVJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSA8cGFsL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVUZXh0dXJlVmlldy5oPgogCkBAIC0zNiwxNyAr
MzcsMjAgQEAgY2xhc3MgQ29udmVydFRvQmFja2luZ0NvbnRleHQ7CiAKIGNsYXNzIFJlbW90ZVRl
eHR1cmVWaWV3UHJveHkgZmluYWwgOiBwdWJsaWMgUEFMOjpXZWJHUFU6OlRleHR1cmVWaWV3IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJlbW90ZVRleHR1cmVWaWV3UHJveHk+IGNyZWF0ZShD
b252ZXJ0VG9CYWNraW5nQ29udGV4dCYgY29udmVydFRvQmFja2luZ0NvbnRleHQpCisgICAgc3Rh
dGljIFJlZjxSZW1vdGVUZXh0dXJlVmlld1Byb3h5PiBjcmVhdGUoUmVtb3RlVGV4dHVyZVByb3h5
JiBwYXJlbnQsIENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiBjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCwgV2ViR1BVSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUmVtb3RlVGV4dHVyZVZpZXdQcm94eShjb252ZXJ0VG9CYWNraW5nQ29udGV4
dCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdGVUZXh0dXJlVmlld1Byb3h5
KHBhcmVudCwgY29udmVydFRvQmFja2luZ0NvbnRleHQsIGlkZW50aWZpZXIpKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIH5SZW1vdGVUZXh0dXJlVmlld1Byb3h5KCk7CiAKKyAgICBSZW1vdGVUZXh0
dXJlUHJveHkmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgUmVtb3RlR1BVUHJv
eHkmIHJvb3QoKSB7IHJldHVybiBtX3BhcmVudC0+cGFyZW50KCkucGFyZW50KCkucGFyZW50KCk7
IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5n
Q29udGV4dDsKIAotICAgIFJlbW90ZVRleHR1cmVWaWV3UHJveHkoQ29udmVydFRvQmFja2luZ0Nv
bnRleHQmKTsKKyAgICBSZW1vdGVUZXh0dXJlVmlld1Byb3h5KFJlbW90ZVRleHR1cmVQcm94eSYs
IENvbnZlcnRUb0JhY2tpbmdDb250ZXh0JiwgV2ViR1BVSWRlbnRpZmllcik7CiAKICAgICBSZW1v
dGVUZXh0dXJlVmlld1Byb3h5KGNvbnN0IFJlbW90ZVRleHR1cmVWaWV3UHJveHkmKSA9IGRlbGV0
ZTsKICAgICBSZW1vdGVUZXh0dXJlVmlld1Byb3h5KFJlbW90ZVRleHR1cmVWaWV3UHJveHkmJikg
PSBkZWxldGU7CkBAIC01NCwxMSArNTgsMjQgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVUZXh0dXJl
Vmlld1Byb3h5JiBvcGVyYXRvcj0oUmVtb3RlVGV4dHVyZVZpZXdQcm94eSYmKSA9IGRlbGV0ZTsK
IAogICAgIFdlYkdQVUlkZW50aWZpZXIgYmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2lu
ZzsgfQorICAgIAorICAgIHN0YXRpYyBpbmxpbmUgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFNl
bmRUaW1lb3V0ID0gMzBfczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIHNlbmQoVCYmIG1lc3NhZ2UpCisgICAgeworICAgICAgICByZXR1cm4g
cm9vdCgpLnN0cmVhbUNsaWVudENvbm5lY3Rpb24oKS5zZW5kKFdURk1vdmUobWVzc2FnZSksIGJh
Y2tpbmcoKSwgZGVmYXVsdFNlbmRUaW1lb3V0KTsKKyAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBXQVJOX1VOVVNFRF9SRVRVUk4gSVBDOjpDb25uZWN0aW9uOjpTZW5kU3luY1Jl
c3VsdCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKKyAg
ICB7CisgICAgICAgIHJldHVybiByb290KCkuc3RyZWFtQ2xpZW50Q29ubmVjdGlvbigpLnNlbmRT
eW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBiYWNraW5nKCksIGRlZmF1bHRT
ZW5kVGltZW91dCk7CisgICAgfQogCiAgICAgdm9pZCBzZXRMYWJlbEludGVybmFsKGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogCi0gICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmcgeyBXZWJHUFVJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpIH07CisgICAgV2ViR1BVSWRlbnRpZmllciBtX2JhY2tpbmc7
CiAgICAgUmVmPENvbnZlcnRUb0JhY2tpbmdDb250ZXh0PiBtX2NvbnZlcnRUb0JhY2tpbmdDb250
ZXh0OworICAgIFJlZjxSZW1vdGVUZXh0dXJlUHJveHk+IG1fcGFyZW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25jYXN0Q29udmVydFRvQmFja2luZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUv
V2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKaW5kZXggZjg3ZmNmZTNk
NGM1MzNiNGJjZTE3YmRkOGIyOTgxNGY3ZTY5NGZjNS4uZDU2NzZhOGJkNjc0MDU2ZjNiZWMyZjU3
MDkzMWIwNmJhNWZmMzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9XZWJHUFUvV2Vi
R1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5jcHAKQEAgLTk4LDYgKzk4LDExIEBA
IFdlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVy
dFRvQmFja2luZyhjb25zdCBQQUw6OldlCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJl
bW90ZURldmljZVByb3h5Jj4oZGV2aWNlKS5iYWNraW5nKCk7CiB9CiAKK1dlYkdQVUlkZW50aWZp
ZXIgRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25z
dCBQQUw6OldlYkdQVTo6RXh0ZXJuYWxUZXh0dXJlJiBleHRlcm5hbFRleHR1cmUpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZUV4dGVybmFsVGV4dHVyZVByb3h5Jj4oZXh0
ZXJuYWxUZXh0dXJlKS5iYWNraW5nKCk7Cit9CisKIFdlYkdQVUlkZW50aWZpZXIgRG93bmNhc3RD
b252ZXJ0VG9CYWNraW5nQ29udGV4dDo6Y29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQ
VTo6R1BVJiBncHUpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFJlbW90ZUdQVVBy
b3h5Jj4oZ3B1KS5iYWNraW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJHUFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1dlYkdQVS9XZWJH
UFVEb3duY2FzdENvbnZlcnRUb0JhY2tpbmdDb250ZXh0LmgKaW5kZXggYTEzYzg4OTA0NjkyMzdi
YjYyOWM3Mjc1ZDU3MGU1ODQyNzgzYTg0OC4uNDQ3MWQwZWYwNzQ4YjY0NWVlYmQ0ZTk1MGY1Y2Y1
MDAwNTM2Njk1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9XZWJHUFUvV2ViR1BVRG93bmNhc3RDb252ZXJ0VG9CYWNraW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvV2ViR1BVL1dlYkdQVURvd25j
YXN0Q29udmVydFRvQmFja2luZ0NvbnRleHQuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0IFBBTDo6V2ViR1BVOjpD
b21wdXRlUGFzc0VuY29kZXImKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRU
b0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkNvbXB1dGVQaXBlbGluZSYpIGZpbmFsOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6RGV2
aWNlJikgZmluYWw7CisgICAgV2ViR1BVSWRlbnRpZmllciBjb252ZXJ0VG9CYWNraW5nKGNvbnN0
IFBBTDo6V2ViR1BVOjpFeHRlcm5hbFRleHR1cmUmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlm
aWVyIGNvbnZlcnRUb0JhY2tpbmcoY29uc3QgUEFMOjpXZWJHUFU6OkdQVSYpIGZpbmFsOwogICAg
IFdlYkdQVUlkZW50aWZpZXIgY29udmVydFRvQmFja2luZyhjb25zdCBQQUw6OldlYkdQVTo6UGlw
ZWxpbmVMYXlvdXQmKSBmaW5hbDsKICAgICBXZWJHUFVJZGVudGlmaWVyIGNvbnZlcnRUb0JhY2tp
bmcoY29uc3QgUEFMOjpXZWJHUFU6OlF1ZXJ5U2V0JikgZmluYWw7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>