<?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>224092</bug_id>
          
          <creation_ts>2021-04-01 19:42:53 -0700</creation_ts>
          <short_desc>Introduce ScriptBuffer class to wrap SharedBuffer containing a script</short_desc>
          <delta_ts>2021-12-12 14:23:19 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234215</see_also>
          <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>
          <dependson>224015</dependson>
          <blocked>224088</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>annulen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746364</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 19:42:53 -0700</bug_when>
    <thetext>Introduce ScriptBuffer class to SharedBuffer containing a script. We started using SharedBuffer to represent worker scripts instead of String, so that they can hold file mapped data and be shared across processes.
This patch introduces a new ScriptBuffer to wrap those SharedBuffers. The type makes it clearer what type of data we&apos;re dealing with. The helper functions used to convert between String and SharedBuffer can now simply be member functions on ScriptBuffer.
This also simplifies IPC code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746375</commentid>
    <comment_count>1</comment_count>
      <attachid>424983</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 20:16:29 -0700</bug_when>
    <thetext>Created attachment 424983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746382</commentid>
    <comment_count>2</comment_count>
      <attachid>424984</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 21:08:09 -0700</bug_when>
    <thetext>Created attachment 424984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746638</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-02 13:34:55 -0700</bug_when>
    <thetext>Can we use ScriptBuffer for regular scripts in the HTTP cache too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746639</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 13:37:08 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #3)
&gt; Can we use ScriptBuffer for regular scripts in the HTTP cache too?

The HTTP cache serves many different types of files, not just scripts. I don&apos;t think it would be practical to use it there. The HTTP cache uses ShareableResource::Handle directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746640</commentid>
    <comment_count>5</comment_count>
      <attachid>424984</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-02 13:37:44 -0700</bug_when>
    <thetext>Comment on attachment 424984
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746641</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 13:38:24 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 424984 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746643</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-02 13:40:08 -0700</bug_when>
    <thetext>r=me

It&apos;s nice to get this improvement for workers, but it really makes me wonder what we do for other scripts, and if we can share some code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746644</commentid>
    <comment_count>8</comment_count>
      <attachid>425050</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 13:41:54 -0700</bug_when>
    <thetext>Created attachment 425050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746649</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 13:51:22 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #7)
&gt; r=me
&gt; 
&gt; It&apos;s nice to get this improvement for workers, but it really makes me wonder
&gt; what we do for other scripts, and if we can share some code.

Main thread scripts are not really treated different from other resources. They are stored in the memory cache as a SharedBuffer inside the CachedResource. Once the network process has saved the resource to disk, it sends a URL + ShareableResource::Handle to the WebProcess. The WebProcess looks up the CachedResource using the URL in the memory cache, then tries and replace the CachedResource&apos;s SharedBuffer with the file-mapped version.

This logic does not currently work with dedicated or service workers because they do not use CachedScript or the memory cache. The memory cache is currently main-thread only.

Also, service workers are interestingly different (than usual network resources or even dedicated worker scripts) because they are persisted on disk with the service worker registration, independently from the HTTP disk cache. Therefore, it is highly preferable to use a version of the service worker script file-mapped from the service worker storage on disk, rather than the HTTP disk cache.

For dedicated workers, we should in theory be able to leverage the existing NetworkProcessConnection::DidCacheResource IPC to replace the in-memory version of the script with the file-mapped version from the HTTP disk cache. I have not worked on this part yet and I have been focusing on Service Workers since this is what&apos;s covered by PLUM3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746680</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 14:53:36 -0700</bug_when>
    <thetext>Committed r275443: &lt;https://commits.webkit.org/r275443&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425050.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746681</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 14:54:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/76166419&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746709</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-02 15:57:01 -0700</bug_when>
    <thetext>&gt; They are stored in the memory cache as a SharedBuffer inside the
&gt; CachedResource. Once the network process has saved the resource to disk, it
&gt; sends a URL + ShareableResource::Handle to the WebProcess. The WebProcess
&gt; looks up the CachedResource using the URL in the memory cache, then tries
&gt; and replace the CachedResource&apos;s SharedBuffer with the file-mapped version.

I see: CachedScript has a dirty string m_script; but that&apos;s the decoded data that we throw away periodically. The encoded data is already SharedBuffer.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424983</attachid>
            <date>2021-04-01 20:16:29 -0700</date>
            <delta_ts>2021-04-01 21:18:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224092-20210401201628.patch</filename>
            <type>text/plain</type>
            <size>76665</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc0MjAxM2Y0NjhmMjQz
MDU1ZDEwMTkyZDQzOTA4MWFjZDkyYjY0OC4uZDM4YzBlNWIwY2I4ZDliYTkyZTFkMWE5YjJkNzFh
Zjg4M2IxODgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIxLTA0LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcmlwdEJ1
ZmZlciBjbGFzcyB0byB3cmFwIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwOTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2Ny
aXB0QnVmZmVyIGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzY3JpcHQu
IFdlIHN0YXJ0ZWQgdXNpbmcgU2hhcmVkQnVmZmVyIHRvIHJlcHJlc2VudAorICAgICAgICB3b3Jr
ZXIgc2NyaXB0cyBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkIGZpbGUg
bWFwcGVkIGRhdGEgYW5kIGJlIHNoYXJlZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGlz
IHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2NyaXB0QnVmZmVyIHRvIHdyYXAgdGhvc2UgU2hhcmVk
QnVmZmVycy4gVGhlIHR5cGUgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHR5cGUgb2YKKyAgICAgICAg
ZGF0YSB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gY29u
dmVydCBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyIGNhbiBub3cgc2ltcGx5CisgICAg
ICAgIGJlIG1lbWJlciBmdW5jdGlvbnMgb24gU2NyaXB0QnVmZmVyLiBUaGlzIGFsc28gc2ltcGxp
ZmllcyBJUEMgY29kZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBTY3JpcHRCdWZm
ZXIgY2xhc3MgdG8gcHJvamVjdCBmaWxlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIFVzZSBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgaW5zdGVhZCBvZiBzY3JpcHRCdWZmZXJUb1N0cmluZygpLgorCisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgTmV3IFNjcmlwdEJ1
ZmZlciBjbGFzcyB0aGF0IHdyYXBzIGEgU2hhcmVkQnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIGEg
c2NyaXB0LgorICAgICAgICBUaGlzIGNsYXNzIGhlbHBzIG1ha2UgaXQgY2xlYXIgd2hhdCBkYXRh
IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQgYWxzbyBmYWNpbGl0YXRlcworICAgICAgICBjb252ZXJz
aW9uIHRvIGFuZCBmcm9tIGEgU3RyaW5nIHdoZW4gbmVlZGVkLiBUaGUgY2xhc3MgYWxzbyBoYXMg
aXRzIG93biBJUEMKKyAgICAgICAgY29kZXIgYXQgV2ViS2l0IGxheWVyIHRvIGVuY29kZSB0aGUg
c2NyaXB0IGFzIGEgU2hhcmVhYmxlUmVzb3VyY2Ugd2hlbiBmaWxlCisgICAgICAgIG1hcHBlZC4K
KworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBV
c2UgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGluc3RlYWQgb2Ygc2NyaXB0QnVmZmVyVG9TdHJp
bmcoKS4KKyAgICAgICAgQW5kIHVzZSBTdHJpbmdCdWZmZXIgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBhIFN0cmluZyBpbnN0ZWFkIG9mIHN0cmluZ1RvU2NyaXB0QnVmZmVyKCkuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorICAgICAgICAt
IFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmb3Igc2Ny
aXB0cy4KKyAgICAgICAgLSBEcm9wIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgJiBzdHJpbmdUb1Nj
cmlwdEJ1ZmZlcigpIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIC0gTW92
ZSBJUEMgY29kZXJzIGZvciBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgYmFjayBmcm9tIFdlYkNv
cmVBcmd1bWVudENvZGVycyBiYWNrCisgICAgICAgICAgdG8gdGhlIFdlYkNvcmUgY2xhc3MsIG5v
dyB0aGF0IHRoZSBjb2RlcnMgbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIFNoYXJlYWJsZVJl
c291cmNlCisgICAgICAgICAgZGlyZWN0bHkuIFdlIG5vdyBlbmNvZGUgLyBkZWNvZGUgU2NyaXB0
QnVmZmVyIG9iamVjdHMgYW5kIGl0cyBjb2RlciB0YWtlcyBjYXJlIG9mCisgICAgICAgICAgdXNp
bmcgYSBTaGFyZWFibGVSZXNvdXJjZSB3aGVuZXZlciBwb3NzaWJsZS4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2spOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJl
YWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9y
YWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlz
ayk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlV29ya2VyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNjcmlwdEJ1ZmZlciBpbnN0
ZWFkIG9mIFNoYXJlZEJ1ZmZlci4KKwogMjAyMS0wNC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBob2xk
IG9uIHRvIGEgZmlsZSBtYXBwZWQgdmVyc2lvbiBvZiB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0
cyB0byBzYXZlIGRpcnR5IG1lbW9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjYTEzNzZjNDU1NWNjZTU4ZTdlMDVm
ZDgwOTg2MTgyMzMwYzc2NzhkLi5mODZmNDE4ZThiMTQ4NDNjOWIwNWRiZTczMzQwZTU3YjkyOWJl
MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA0LTAxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcmlwdEJ1ZmZlciBjbGFz
cyB0byB3cmFwIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2NyaXB0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwOTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2NyaXB0QnVmZmVy
IGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzY3JpcHQuIFdlIHN0YXJ0
ZWQgdXNpbmcgU2hhcmVkQnVmZmVyIHRvIHJlcHJlc2VudAorICAgICAgICB3b3JrZXIgc2NyaXB0
cyBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkIGZpbGUgbWFwcGVkIGRh
dGEgYW5kIGJlIHNoYXJlZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgYSBuZXcgU2NyaXB0QnVmZmVyIHRvIHdyYXAgdGhvc2UgU2hhcmVkQnVmZmVycy4g
VGhlIHR5cGUgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHR5cGUgb2YKKyAgICAgICAgZGF0YSB3ZSdy
ZSBkZWFsaW5nIHdpdGguIFRoZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gY29udmVydCBiZXR3
ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyIGNhbiBub3cgc2ltcGx5CisgICAgICAgIGJlIG1l
bWJlciBmdW5jdGlvbnMgb24gU2NyaXB0QnVmZmVyLiBUaGlzIGFsc28gc2ltcGxpZmllcyBJUEMg
Y29kZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVXNlIFNjcmlwdEJ1ZmZlciBpbnN0ZWFkIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjp0
cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIC0gQWRkIElQQyBl
bmNvZGVyIC8gZGVjb2RlciBmb3IgU2NyaXB0QnVmZmVyIHdoaWNoIHRyaWVzIHRvIGVuY29kZSAv
IGRlY29kZSBhcyBhIFNoYXJlYWJsZVJlc291cmNlIHdoZW5ldmVyCisgICAgICAgICAgcG9zc2li
bGUgKHNpbmdsZSBzZWdtZW50IHRoYXQgaXMgZmlsZSBtYXBwZWQpLiBUaGlzIGxvZ2ljIHVzZWQg
dG8gYmUgaW4gdGhlIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YQorICAgICAgICAgIGNvZGVycy4g
Tm93IHRoYXQgdGhlIGxvZ2ljIGlzIGluIHRoZSBTY3JpcHRCdWZmZXIgY29kZXIsIHRoZSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgZW5jb2RpbmcgLyBkZWNvZGluZworICAgICAgICAgIGJlY29t
ZXMgbXVjaCBzaW1wbGVyLgorICAgICAgICAtIE1vdmVkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSBjb2RlcnMgZnJvbSBXZWJDb3JlQXJndW1lbnRDb2RlcnMgYmFjayB0byBpdHMgY2xhc3MgaW4g
V2ViQ29yZSwgbm93IHRoYXQKKyAgICAgICAgICB0aGV5IG5vIGxvbmdlciBuZWVkIHRvIGRlYWwg
d2l0aCBTaGFyZWFibGVSZXNvdXJjZSBkaXJlY3RseS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICBTZW5kIHNjcmlwdHMgb3ZlciBJUEMgYXMg
U2NyaXB0QnVmZmVyIGluc3RlYWQgb2YgdXNpbmcgU2hhcmVhYmxlUmVzb3VyY2UgZGlyZWN0bHku
IFRoZSBuZXcgSVBDIGVuY29kZXIgLworICAgICAgICBkZWNvZGVyIGZvciBTY3JpcHRCdWZmZXIg
dGFrZXMgY2FyZSBvZiB1c2luZyBTaGFyZWFibGVSZXNvdXJjZSBmb3IgdXMuCisKIDIwMjEtMDQt
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRoZSBT
ZXJ2aWNlV29ya2VyIHByb2Nlc3MgaG9sZCBvbiB0byBhIGZpbGUgbWFwcGVkIHZlcnNpb24gb2Yg
dGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgdG8gc2F2ZSBkaXJ0eSBtZW1vcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggNjllNWY5OTExODNkMzE1M2M4MzkxODc4NzVlNTI5YTM1NmQzOThiNy4uOWU0ZmE2
MGNjZGRhZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2
NDIsNiArMjY0Miw3IEBAIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAog
d29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcAogd29ya2Vycy9Xb3JrZXIuY3BwCiB3b3JrZXJzL1dvcmtlckFuaW1hdGlv
bkNvbnRyb2xsZXIuY3BwCiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTZh
NmNjZTM0MjY4NDdkMDY2MGU2MjliNGM1NDgyNTYyMjdkMDM0Yi4uNDZmYmYwZDhiOWQxOTZmZTkz
MDEwZDczMTIxZTk1NzEwOGZkNzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3Myw2ICsxMjczLDcgQEAKIAkJNDYwRTMw
NzcyMjJGNEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9u
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlz
c2lvblN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3
MkQ2MUUwMDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkx
IC8qIFNXU2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MkU0
QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNBMkM2NyAvKiBT
Y3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIw
MEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNF
QjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdE
MDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpT
VUlFdmVudEluaXQuaCAqLzsgfTsKQEAgLTgyNTEsNiArODI1Miw4IEBACiAJCTQ2MEQxOTQ0MUZD
RTIxREQwMEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYw
RTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNj
cmlwdEJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZm
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyRTRDNEYyNjE2QTgwMTAwM0Ey
QzY3IC8qIFNjcmlwdEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTY3JpcHRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0
NTkyQjFBQzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1By
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd1Byb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBX
aW5kb3dQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5k
b3dQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTM3MCw2ICsxOTM3
Myw4IEBACiAJCQkJNDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlLmlkbCAqLywKIAkJCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyog
RGVkaWNhdGVkV29ya2VyVGhyZWFkLmggKi8sCisJCQkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3
IC8qIFNjcmlwdEJ1ZmZlci5jcHAgKi8sCisJCQkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8q
IFNjcmlwdEJ1ZmZlci5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3Jr
ZXIuY3BwICovLAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywK
IAkJCQkyRTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKQEAgLTMyMjQ4
LDYgKzMyMjUzLDcgQEAKIAkJCQk5MzMwOURFODA5OUU2NDkyMDA1NkU1ODEgLyogRWRpdGluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEYxNTM0REUxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdC
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYxNTM0RTAxMUI1MzMwMjAwMjFGRDg2IC8q
IEVkaXRpbmdCZWhhdmlvclR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2MkU0QzUwMjYxNkE4
MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTNBQzY0OEIy
MTI5RTE0NjUwMEMzRUIyNSAvKiBFZGl0aW5nQm91bmRhcnkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlCQUI2QzZDMTI1NTA2MzEwMDE2MjZENCAvKiBFZGl0aW5nU3R5bGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRCMzA0M0NEMEFFMDM3M0IwMEE4MjY0NyAvKiBFZGl0b3IuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vy
dmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXggM2Y1MjQ5MWRhMGFjNWQ5Zjc5YjU0NGY3
YzVmYzk0MDBiNGJhNzI1NC4uMzk0YzA5NTAwYWFiYjk0ODU4OWMxZjdmZDlhNGU1YjhhYTgyZmQ5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvU2Vy
dmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2VydmljZVdvcmtlcjo6Q29uZmlndXJhdGlv
bj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJnZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdpbigpLT50b1Jhd1N0cmluZygpKQogICAg
ICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNvbnRleHREYXRhKCkuc2Ny
aXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29udGVudChzY3JpcHRCdWZmZXJUb1N0cmlu
ZyhtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb250ZXh0RGF0YSgpLnNjcmlwdCkpCisgICAg
ICAgIC5zZXRDb250ZW50KG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNvbnRleHREYXRhKCku
c2NyaXB0LnRvU3RyaW5nKCkpCiAgICAgICAgIC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMzFjNmFjODNmYjljNGY2YWNl
Y2MwYjZhMzM4YTJmNTdhY2I5ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JpcHRCdWZmZXI6OlNjcmlw
dEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHV0ZjggPSBzdHJpbmcu
dXRmOCgpOworICAgIG1fYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRhKCks
IHV0ZjgubGVuZ3RoKCkpOworfQorCitTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGNv
bnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAoYXV0byBpdCA9IG1fYnVmZmVyLT5i
ZWdpbigpOyBpdCAhPSBtX2J1ZmZlci0+ZW5kKCk7ICsraXQpCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNp
emUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK2Jvb2wgU2NyaXB0
QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09uZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+
YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpOworfQorCitib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBjb25zdCBTY3JpcHRCdWZmZXImIGIpCit7
CisgICAgaWYgKGEuYnVmZmVyKCkgPT0gYi5idWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKCFhLmJ1ZmZlcigpIHx8ICFiLmJ1ZmZlcigpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuICphLmJ1ZmZlcigpID09ICpiLmJ1ZmZlcigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jYWE1MmI0ZjgzN2IxYWEyY2Y3MjQ1NjA3YzVkMjFmYzkzY2RhMzAzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuaApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEJ1ZmZlciB7CitwdWJsaWM6CisgICAgU2NyaXB0
QnVmZmVyKCkgPSBkZWZhdWx0OworCisgICAgU2NyaXB0QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKKyAgICB7
CisgICAgfQorCisgICAgZXhwbGljaXQgU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOworCisg
ICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAgU2hhcmVkQnVmZmVyKiBidWZmZXIoKSBj
b25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQorCisgICAgU2NyaXB0QnVmZmVyIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxT
aGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDogbnVsbHB0cik7IH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2J1ZmZlcjsgfQorCisgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRh
aW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KK307CisKK2Jvb2wgb3BlcmF0b3I9PShjb25z
dCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZmZXImKTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3Bw
CmluZGV4IGE0YmUxMDA0MGJlMjg1OTIxMGI3MmNlZDIzMTgyYWYwNjQ3YTc4MmIuLmUxYzgxMjM1
ZmJhOGE0NTg3ZDJlYWQ0ZjU0OGFmOTkzZmM1YmVhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8
RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgewog
ICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2UgPSBkb3duY2FzdDxTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zY3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0g
ICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJl
c291cmNlLT5zY3JpcHQpKTsKKyAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRSZXNv
dXJjZS0+c2NyaXB0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgbV9yZXNwb25zZVVSTCA9IHNj
cmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAgICAgICAgIG1fcmVzcG9uc2VNSU1FVHlw
ZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3Jp
cHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShy
ZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdv
cmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBwb3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5
cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdv
cmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQoKSks
IG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlwZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJHbG9iYWxTY29wZSkuc2V0U2NyaXB0UmVz
b3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgU2Ny
aXB0QnVmZmVyIHsgc2NyaXB0KCkgfSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBl
IH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXgg
NmFhZTQ1NTZiZGE2YTFmMDEzNGM3MWNjNThiMmFkMTY4Yjg4NjE0MS4uM2NiNWIwY2JiYWNhNTQ4
Y2M4MjM1NmNiYTIxYThhNjU4MDEyMDllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtNDIsNyArNDIsNiBAQCBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNl
cnZpY2VXb3JrZXJDb250YWluZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwot
Y2xhc3MgU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
U3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyU3RhdGUgOiB1aW50OF90
OwogZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgOiBib29sOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcAppbmRleCAxZWE1OTAxYmQ5ZDJmZDljNzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1
Li4xNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNkOGE5OWI1ZWRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRl
eHREYXRhLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICBqb2JE
YXRhSWRlbnRpZmllciwKICAgICAgICAgcmVnaXN0cmF0aW9uLmlzb2xhdGVkQ29weSgpLAogICAg
ICAgICBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwKLSAgICAgICAgc2NyaXB0LT5jb3B5KCksCisg
ICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgY2VydGlmaWNhdGVJbmZvLmlz
b2xhdGVkQ29weSgpLAogICAgICAgICBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5
KCksCiAgICAgICAgIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLApAQCAtNDgsMjAgKzQ4
LDYgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQogCi1TdHJpbmcgc2NyaXB0QnVmZmVyVG9T
dHJpbmcoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGZvciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdpbigpOyBpdCAhPSBidWZmZXIuZW5kKCk7
ICsraXQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21l
bnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOwotICAgIHJldHVybiBidWlsZGVyLnRv
U3RyaW5nKCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0g
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgp
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4IGExNjA0ODkwMjM5NGZlNTk2Y2NjZGNm
M2IxOThmYTgxMWE1Y2YwY2QuLmRiYTYyMzVlMGI2MDZhODMxM2MzYzRjMzFkN2QyY2JmYTYxNmZm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiAjaW5jbHVkZSAi
Q2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9u
c2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiU2NyaXB0QnVmZmVyLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTQwLDIyICs0MCw0OCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhT
aGFyZWRCdWZmZXImKTsKLVJlZjxTaGFyZWRCdWZmZXI+IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNv
bnN0IFN0cmluZyYpOwotCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBz
dHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3Jp
cHQ7CisgICAgICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7CiAgICAgICAgIFVSTCByZXNwb25zZVVS
TDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0gICAgICAgIEltcG9ydGVkU2NyaXB0IGlz
b2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5jb3B5KCksIHJlc3BvbnNlVVJM
Lmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHkoKSB9OyB9CisgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgc2NyaXB0IDw8IHJlc3BvbnNlVVJM
IDw8IG1pbWVUeXBlOworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKKyAgICAgICAgeworICAgICAgICAgICAgT3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7
CisgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICAgICAgICAgIGlmICghc2NyaXB0
KQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIE9w
dGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAgICAgICBkZWNvZGVyID4+IHJlc3BvbnNl
VVJMOworICAgICAgICAgICAgaWYgKCFyZXNwb25zZVVSTCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBl
OworICAgICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKKyAgICAgICAgICAgIGlmICghbWlt
ZVR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgICAgICAg
ICAgcmV0dXJuIHt7CisgICAgICAgICAgICAgICAgV1RGTW92ZSgqc2NyaXB0KSwKKyAgICAgICAg
ICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgICAgICAgICAgV1RGTW92ZSgq
bWltZVR5cGUpCisgICAgICAgICAgICB9fTsKKyAgICAgICAgfQorCisgICAgICAgIEltcG9ydGVk
U2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29w
eSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwgbWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkg
fTsgfQogICAgIH07CiAKICAgICBPcHRpb25hbDxTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZp
ZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
IHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcjsKLSAgICBSZWY8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CisgICAgU2NyaXB0QnVm
ZmVyIHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7
CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAtNjQsOSArOTAsODUgQEAgc3RydWN0IFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgYm9vbCBsb2FkZWRGcm9tRGlzazsKICAgICBI
YXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwogCisgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlwdCA8PCBjb250ZW50U2VjdXJpdHlQb2xp
Y3kgPDwgcmVmZXJyZXJQb2xpY3kKKyAgICAgICAgPDwgc2NyaXB0VVJMIDw8IHdvcmtlclR5cGUg
PDwgbG9hZGVkRnJvbURpc2sgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZv
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorT3B0aW9uYWw8U2VydmljZVdvcmtlckNv
bnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRp
Zmllcj4+IGpvYkRhdGFJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gam9iRGF0YUlkZW50aWZp
ZXI7CisgICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiByZWdp
c3RyYXRpb247CisgICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb247CisgICAgaWYgKCFyZWdpc3Ry
YXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyID0gU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmRlY29kZShkZWNvZGVy
KTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CisgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVu
dFNlY3VyaXR5UG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGVudFNlY3VyaXR5
UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmluZyByZWZl
cnJlclBvbGljeTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVyUG9saWN5KSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFVSTCBzY3JpcHRVUkw7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
d29ya2VyVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBib29sIGxv
YWRlZEZyb21EaXNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVkRnJvbURpc2spKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVk
U2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlw
dFJlc291cmNlTWFwKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlv
bmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOworICAgIGRlY29kZXIgPj4gY2Vy
dGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlmaWNhdGVJbmZvKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7CisgICAgICAgIFdURk1vdmUoKmpvYkRhdGFJ
ZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKKyAgICAgICAgV1RG
TW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAorICAgICAgICBXVEZNb3ZlKCpzY3JpcHQp
LAorICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLAorICAgICAgICBXVEZNb3ZlKGNv
bnRlbnRTZWN1cml0eVBvbGljeSksCisgICAgICAgIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLAor
ICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCisgICAgICAgIHdvcmtlclR5cGUsCisgICAgICAg
IGxvYWRlZEZyb21EaXNrLAorICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKQorICAg
IH19OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGIwM2YzZGFjYjkzOTMyMzJl
MWM4NWMwNTVkOTllYWZlMzRlMTIyMDcuLjE4YmQ0YTllNWNiM2IxOGU3NDU2ZGVjZDFiMDRjNTNl
ZDBmMTU5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUsMTggKzE1NSwxOCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJM
JiB1cmwsIFNlcnZpY2VXb3JrZXJDbwogICAgIG1fY29udGV4dERhdGEuc2NyaXB0UmVzb3VyY2VN
YXAuc2V0KHVybCwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2Ny
aXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRz
KQordm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNj
cmlwdEJ1ZmZlciYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRl
ZFNjcmlwdHMpCiB7CiAgICAgLy8gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRv
IHRoZSBvbmVzIHdlIGhhdmUuIEhvd2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhl
bSBoZWxwcyByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdlLgogICAgIGlmIChzY3JpcHQpIHsKLSAg
ICAgICAgQVNTRVJUKG1fY29udGV4dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQpOwotICAg
ICAgICBtX2NvbnRleHREYXRhLnNjcmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
ICAgICBBU1NFUlQobV9jb250ZXh0RGF0YS5zY3JpcHQgPT0gc2NyaXB0KTsKKyAgICAgICAgbV9j
b250ZXh0RGF0YS5zY3JpcHQgPSBXVEZNb3ZlKHNjcmlwdCk7CiAgICAgfQogICAgIGZvciAoYXV0
byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewogICAgICAgICBhdXRvIGl0ID0gbV9jb250ZXh0
RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5maW5kKHBhaXIua2V5KTsKICAgICAgICAgaWYgKGl0ID09
IG1fY29udGV4dERhdGEuc2NyaXB0UmVzb3VyY2VNYXAuZW5kKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgQVNTRVJUKCppdC0+dmFsdWUuc2NyaXB0ID09ICpwYWlyLnZhbHVlKTsg
Ly8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCisg
ICAgICAgIEFTU0VSVChpdC0+dmFsdWUuc2NyaXB0ID09IHBhaXIudmFsdWUpOyAvLyBEbyBhIG1l
bWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KICAgICAgICAgaXQt
PnZhbHVlLnNjcmlwdCA9IFdURk1vdmUocGFpci52YWx1ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oCmluZGV4IGVlNzVlZTllZDFhMzI5N2MzMzI2OWU5M2ZkMDZlNzhlZTNhMGM1YjguLmFm
YmM0MGU5YzMyYmJhOTEyMGZkOThiNTJhNDFmZjA3Nzc4NzRkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQqIHNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYpIGNvbnN0
OwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiwgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKIAotICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNU
b0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpOworICAgIHZvaWQgZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKIAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29u
dGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRE
YXRhLmNlcnRpZmljYXRlSW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA4ODEzYWI2
OWExNmQ1NzRmMDE1MWFiNThkMWJlMDIxYWZiODdlOGYyLi4yOGQwYWJjNDA1MzhkZWY4NzA5NDYw
OGNlY2ZmNDIwNGI2Y2UyYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMTIwLDcgKzEy
MCw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2VydmljZVdv
cmtlciwgdGltZW91dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFNX
Q29udGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQordm9pZCBTV0NvbnRl
eHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBp
ZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZm
ZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKQogewogICAgIGlmIChhdXRvIHNlcnZpY2VXb3JrZXIgPSBt
X3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgIHNlcnZpY2VXb3JrZXItPmRpZFNh
dmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBkZGJlYjU4NTRhYzIxOWMxOThjNmI2N2QxM2ZhNThl
ODk5NjhiYjhkLi5mNTcwY2U0M2Q1YzA4YzkwODgyOTAyMmExNzI2ZGQyYjhhOTkwZDAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dD
b250ZXh0TWFuYWdlci5oCkBAIC05MCw3ICs5MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQsIEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNj
cmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0
cyk7CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcAppbmRleCAyODgxMjI4YTgyNGQ0ZGY0ODkxMGJmOWJjNzllMDA5NjBlYTUz
YjliLi5kMGNlMGE2MWRkMmQwMGNmZDE4YmQ2NDFhOWI4MjZhMzA2MzdjZWM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQsNyBAQCBwcml2YXRlOgogLy8gRklYTUU6
IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VX
b3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3RyaW5nJiYgdXNl
ckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9h
ZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5
LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2Nr
ZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNj
cmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRl
bnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwg
cGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEu
Y29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwg
ZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NW
YWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwg
ZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBX
b3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9y
aWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0
UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCisgICAgOiBX
b3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3Jr
ZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCks
IFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5
KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9ub3Rv
bmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50
aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0YS5zY3JpcHQudG9TdHJpbmcoKSwgbG9h
ZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGRhdGEucmVnaXN0cmF0aW9u
LmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJv
eHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgp
KQogICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcihkYXRhLnNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRpZmllcihkYXRhLmpvYkRhdGFJZGVudGlmaWVy
KQogICAgICwgbV9kYXRhKGNyb3NzVGhyZWFkQ29weShkYXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGI1NzQ4MzU4NGMwNTE5OTg5OWNmNjc1NWU5N2M5M2Jm
YjA4NmUyZTUuLmJlZGYyMDI3OTBiYmM3MWQ3MjE1ZGVlM2ViOTFmNzBhNDNiNDViODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlQWN0aXZhdGVFdmVudCgpCiAgICAgfSk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0c1RvRGlz
ayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKQogewogICAgIHRocmVhZCgpLnJ1
bkxvb3AoKS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92ZShzY3JpcHQpLCBpbXBvcnRlZFNjcmlw
dHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewog
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmRpZFNh
dmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggODVkOGNkZTc2MjFiODdi
ODIzOTZkZDhiMjJjNTIyNWFiOWE0N2EyMC4uM2ZlMmI0NDM1YWYyNWMwMjQ5YzFlZmNkZThjODgx
ZGFmYjhmYWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTc4LDcg
Kzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmKTsKICAg
ICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7
Ci0gICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNj
cmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0
cyk7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1h
cDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGQ4ODVhMjM3MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1
NDA4NDc5MTcuLjU5ZTAyOGU5MjY1NDNjNDcxZGM3Yjc0ZWM3YWI3OTY1YTY3MjQ0ODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC00NjksMTQgKzQ2OSwxNCBAQCBib29sIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+JgogICAgICAgICBBU1NFUlQobWFpblNjcmlwdCk7CiAgICAgICAgIGlmICgh
bWFpblNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgSGFzaE1hcDxV
UkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBpbXBvcnRlZFNjcmlwdHM7CisgICAgICAgIEhhc2hN
YXA8VVJMLCBTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2NyaXB0czsKICAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkgewotICAgICAgICAgICAgYXV0byBpbXBv
cnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBw
YWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAgICAgICAgICAgIGF1dG8gaW1wb3J0ZWRT
Y3JpcHQgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEucmVnaXN0cmF0aW9uLmtleSwgcGFpci5r
ZXksIHBhaXIudmFsdWUuc2NyaXB0KTsKICAgICAgICAgICAgIEFTU0VSVChpbXBvcnRlZFNjcmlw
dCk7CiAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3JpcHQpCi0gICAgICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBXVEZNb3ZlKGltcG9y
dGVkU2NyaXB0KSk7CisgICAgICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1Ro
cmVhZENvcHkocGFpci5rZXkpLCBjcm9zc1RocmVhZENvcHkoaW1wb3J0ZWRTY3JpcHQpKTsKICAg
ICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IG1haW5TY3JpcHQucmVsZWFzZU5vbk51bGwoKSwg
aW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11dGFibGUgewor
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgbWFpblNjcmlwdCA9IGNyb3NzVGhyZWFkQ29weShtYWluU2NyaXB0KSwgaW1wb3J0ZWRT
Y3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXSgpIG11dGFibGUgewogICAgICAgICAg
ICAgaWYgKG1fc3RvcmUpCiAgICAgICAgICAgICAgICAgbV9zdG9yZS0+ZGlkU2F2ZVdvcmtlclNj
cmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUobWFpblNjcmlwdCks
IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiAgICAgICAgIH0pOwpAQCAtNTY5LDcgKzU2OSw3
IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAg
IGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0g
U2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VX
b3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2VyVHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShz
Y29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVwZGF0ZUNoZWNrVGltZSwgV1RGOjpudWxs
b3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VydmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAg
IGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBXVEY6Om51bGxv
cHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgc2NyaXB0LnJlbGVh
c2VOb25OdWxsKCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRT
ZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVS
TCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9OworICAg
ICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUo
c2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwgV1RGTW92ZSgqY29udGVudFNlY3Vy
aXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSksIFdURk1vdmUoc2NyaXB0VVJMKSwg
KndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CiAKICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb250
ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRl
eHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmluZGV4IDkyMTE1NmFjMTYyYzQyYjRjYmQy
NGUyMTVkN2IyMmFmYjBlMDU3NGIuLjc0YTVjZDJmNDM5NGNiMDMzMTQ0YjMyMTMzYTMwMGZlMWJj
MTI1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBS
ZWdpc3RyYXRpb25TdG9yZTo6YWRkUmVnaXN0cmF0aW9uRnJvbURhdGFiYXNlKFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYmIGQKICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUo
V1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3Jr
ZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit2b2lkIFJlZ2lzdHJhdGlvblN0
b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1h
cDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAgICAgbV9zZXJ2ZXIu
ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdURk1v
dmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0
b3JlLmgKaW5kZXggMjY4NzhjZWViMGUyZjYwN2U3MDdlN2JiNDAxZmU0MjFjZDExZTlmZS4uYWY4
NmYyNTQzNTcyYTFhMzhiNTFmOTk0MTk4ODE1YTZmNGQ1NjI1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUu
aApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9t
RGF0YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYpOwogICAgIHZvaWQgZGF0YWJhc2VG
YWlsZWRUb09wZW4oKTsKICAgICB2b2lkIGRhdGFiYXNlT3BlbmVkQW5kUmVjb3Jkc0ltcG9ydGVk
KCk7Ci0gICAgdm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICB2b2lkIGRpZFNhdmVX
b3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXIm
JiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0
cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3Jp
cHRTdG9yYWdlLmNwcAppbmRleCA0NGEzNTg2YTE2N2EyNzcxZjFmZTJmMTM0OTczNzYzNzA1NjNi
NmRjLi5hYTdiNzZkMzg3ZWZiM2E3ZmE4MmE1MjcxYjg5ZTEyYTNkOTliNGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0
b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTgwLDcgKzgw
LDcgQEAgU3RyaW5nIFNXU2NyaXB0U3RvcmFnZTo6c2NyaXB0UGF0aChjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXQKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlZ2lzdHJhdGlvbkRpcmVjdG9yeShyZWdpc3RyYXRpb25L
ZXkpLCBzaGEySGFzaChzY3JpcHRVUkwpKTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dT
Y3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBy
ZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXIm
IHNjcmlwdCkKK1NjcmlwdEJ1ZmZlciBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3Jp
cHRVUkwsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwogCkBAIC04OCwzNSArODgsMzUgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dT
Y3JpcHRTdG9yYWdlOjpzdG9yZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jgog
ICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKHNjcmlwdFBhdGgpKTsKIAogICAgIGF1dG8gaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURh
dGEgPSBbJl0oY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIHdy
aXRlRGF0YSkgewotICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYmVnaW4oKTsgaXQgIT0g
c2NyaXB0LmVuZCgpOyArK2l0KQorICAgICAgICBmb3IgKGF1dG8gaXQgPSBzY3JpcHQuYnVmZmVy
KCktPmJlZ2luKCk7IGl0ICE9IHNjcmlwdC5idWZmZXIoKS0+ZW5kKCk7ICsraXQpCiAgICAgICAg
ICAgICB3cml0ZURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaXQtPnNlZ21l
bnQtPmRhdGEoKSksIGl0LT5zZWdtZW50LT5zaXplKCkpOwogICAgIH07CiAKLSAgICBpZiAoIXNo
b3VsZFVzZUZpbGVNYXBwaW5nKHNjcmlwdC5zaXplKCkpKSB7CisgICAgaWYgKCFzaG91bGRVc2VG
aWxlTWFwcGluZyhzY3JpcHQuYnVmZmVyKCktPnNpemUoKSkpIHsKICAgICAgICAgYXV0byBoYW5k
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShzY3JpcHRQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhh
bmRsZSkpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJT
V1NjcmlwdFN0b3JhZ2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjpv
cGVuRmlsZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAg
ICAgICAgaXRlcmF0ZU92ZXJCdWZmZXJBbmRXcml0ZURhdGEoWyZdKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CiAgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9KTsKICAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGhhbmRsZSk7Ci0gICAgICAgIHJldHVybiBzY3JpcHQuY29weSgpOworICAgICAgICBy
ZXR1cm4gc2NyaXB0OwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkZWxldGUgdGhlIGZp
bGUgYmVmb3JlIHdyaXRpbmcgYXMgdGhlcmUgbWF5IGJlIGNvZGUgdXNpbmcgYSBtbWFwJ2QgdmVy
c2lvbiBvZiB0aGlzIGZpbGUuCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzY3JpcHRQYXRo
KTsKLSAgICBhdXRvIG1hcHBlZEZpbGUgPSBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoc2NyaXB0UGF0
aCwgc2NyaXB0LnNpemUoKSwgV1RGTW92ZShpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSkp
OworICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRo
LCBzY3JpcHQuYnVmZmVyKCktPnNpemUoKSwgV1RGTW92ZShpdGVyYXRlT3ZlckJ1ZmZlckFuZFdy
aXRlRGF0YSkpOwogICAgIGlmICghbWFwcGVkRmlsZSkgewogICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpzdG9yZTogRmFpbHVyZSB0byBz
dG9yZSAlcywgRmlsZVN5c3RlbTo6bWFwVG9GaWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZp
bGUpKTsKKyAgICByZXR1cm4gU2NyaXB0QnVmZmVyIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZShtYXBwZWRGaWxlKSkgfTsKIH0KIAotUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRT
dG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQorU2NyaXB0QnVmZmVyIFNXU2NyaXB0
U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKIApAQCAtMTI0LDcgKzEyNCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNX
U2NyaXB0U3RvcmFnZTo6cmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
CiAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZp
bGVTaXplKHNjcmlwdFBhdGgsIGZpbGVTaXplKSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihTZXJ2aWNlV29ya2VyLCAiU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZTogRmFpbHVyZSB0byBy
ZXRyaWV2ZSAlcywgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoKSBmYWlsZWQiLCBzY3JpcHRQYXRo
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBkaXNhYmxlIGZpbGUg
bWFwcGluZyBpbiBtb3JlIGNhc2VzIHRvIGF2b2lkIGhhdmluZyB0b28gbWFueSBmaWxlIGRlc2Ny
aXB0b3JzIG9wZW4/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaAppbmRleCBhOWYwMTMwYzVlNTg2OTlmYzBkMjU3YTZl
Yjk3MDRiNDc1NjAzODU0Li40ZmY1MTRiYjdmZTYzNGMxMGVkYTFmZmY4ZDQzNzkxYmVlODg5NjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Ny
aXB0U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmgKQEAgLTI2LDIwICsyNiwyMSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBT
Y3JpcHRCdWZmZXI7CiAKIGNsYXNzIFNXU2NyaXB0U3RvcmFnZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5KTsKIAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwg
Y29uc3QgU2hhcmVkQnVmZmVyJiBzY3JpcHQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJl
dHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCk7CisgICAgU2NyaXB0QnVmZmVyIHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2NyaXB0QnVmZmVyJik7
CisgICAgU2NyaXB0QnVmZmVyIHJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGRjZTIwMTZm
YzE1MzgzMDBmZmFhMTE3NTllYWUzMzQwOGM0ZjllNTMuLmIwYzIwODc5YjYyM2JkOWNlYTY0Yzg4
OThmMDNkNjE4ZDg3NWUwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTV1NlcnZl
cjo6YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRh
dGEpCiAgICAgfSk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9E
aXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit2b2lkIFNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2Ny
aXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4m
JiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJRChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCiAgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNU
b0Rpc2soV1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKQEAg
LTYzOSw3ICs2MzksNyBAQCB2b2lkIFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVy
Ojp1cGRhdGVXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JE
YXRhSWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
JiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdv
cmtlclR5cGUgdHlwZSwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRl
eHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdp
c3RyYXRpb24uZGF0YSgpLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3Ry
aW5nVG9TY3JpcHRCdWZmZXIoc2NyaXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJp
dHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlw
dFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBTY3JpcHRCdWZmZXIgeyBzY3JpcHQg
fSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5
LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KIAog
dm9pZCBTV1NlcnZlcjo6dHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSYmIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmgKaW5kZXggNzk2YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0NTQ4YzVkOTUw
MS4uYzE2NjgwNWQ4MWU4NDA2ZjVmOTNiYWU1ZjBhNDQ3NDE4YjhiNDA5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTkwLDcg
KzE5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVl
c3RzKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbkZy
b21TdG9yZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7Ci0gICAgdm9pZCBkaWRTYXZlV29y
a2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKKyAgICB2b2lkIGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVS
TCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAgICAgdm9pZCByZWdpc3RyYXRp
b25TdG9yZUltcG9ydENvbXBsZXRlKCk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9yZURhdGFi
YXNlRmFpbGVkVG9PcGVuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCmluZGV4IDVjYTI1MjY5MTE0
NTNkYjA4ZjFmOGYyODMyZGJjNDA0NWU2NGFhNjUuLjYyN2FhMDliMWNkYmI3ZDRjMjZmZjhhMzE4
YWM2NTE2NjQ3MTM4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBA
IHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNl
V29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsCiAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBu
dWxsLCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgdXJsIGVxdWFscyBqb2IncyBzY3JpcHQgdXJsIHdp
dGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzCiAgICAgLy8gZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBz
b3VyY2UgdGV4dCBpcyBhIGJ5dGUtZm9yLWJ5dGUgbWF0Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBz
Y3JpcHQgcmVzb3VyY2UncyBzb3VyY2UKICAgICAvLyB0ZXh0LCB0aGVuOgotICAgIGlmIChuZXdl
c3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXIt
PnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBq
b2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5l
d2VzdFdvcmtlci0+c2NyaXB0KCkpICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRp
ZmljYXRlSW5mbywgbmV3ZXN0V29ya2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKKyAgICBpZiAo
bmV3ZXN0V29ya2VyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29y
a2VyLT5zY3JpcHRVUkwoKSwgam9iLnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkg
PT0gam9iLndvcmtlclR5cGUgJiYgcmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlw
dCgpLnRvU3RyaW5nKCkgJiYgZG9DZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJ
bmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNF
X0xPRyhTZXJ2aWNlV29ya2VyLCAiJXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZp
bmlzaGVkLCBzY3JpcHQgYW5kIGNlcnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0
aW9uSUQ9JWxsdSIsIHRoaXMsIHJlZ2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkp
OwogICAgICAgICAvLyBGSVhNRTogZm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBz
Y3JpcHTigJlzIG1vZHVsZSByZWNvcmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGUxOGEyZDFiYjkxMjk5ZmM2MGYwY2Uz
NjNkYTBjYzJhYjU0YTVlYzcuLjNhM2Y3YzAwMGNmN2M4NzNjNzRhYjhiYjM3Zjc5ZTUwYjk2MmQy
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdv
cmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQo
U2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTaGFyZWRCdWZmZXIm
IHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0
ZWRTY3JpcHRzKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFw
PFVSTCwgU2NyaXB0QnVmZmVyPiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFz
U2VjdXJpdHlFcnJvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCBmOTBiOGYyNzkyMGM0OTAzMWEx
N2I0OGY2YTMzOWE1OTFiMTQyYzJhLi4wOGRiMDYyM2M1NDkxZDExNTU2MjZlZjU3Mzg2YTc1MDM3
NTNiZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtl
ciogU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29y
a2VySWRlbnRpZgogfQogCiAvLyBGSVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2Ny
aXB0IGFuZCBjb250ZW50U2VjdXJpdHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldv
cmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9u
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lS
ZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQ
b2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
ciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYgc2NyaXB0UmVzb3VyY2VNYXApCitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dT
ZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVz
cG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9s
aWN5LCBXb3JrZXJUeXBlIHR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
IHNjcmlwdFJlc291cmNlTWFwKQogICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkK
ICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVn
aXN0cmF0aW9uKG1ha2VXZWFrUHRyKHJlZ2lzdHJhdGlvbikpCkBAIC0yMzgsMjEgKzIzOCwyMSBA
QCB2b2lkIFNXU2VydmVyV29ya2VyOjpzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiB1cmwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wbwogICAgIG1fc2NyaXB0UmVzb3VyY2VNYXAuc2V0KFdU
Rk1vdmUodXJsKSwgV1RGTW92ZShzY3JpcHQpKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQordm9pZCBT
V1NlcnZlcldvcmtlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgbWFpblNj
cmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAg
ICAgLy8gU2VuZCBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdv
cmtlciBwcm9jZXNzIHNvIHdlIGNhbiBzYXZlIGRpcnR5IG1lbW9yeS4KICAgICBpZiAoYXV0byog
Y29udGV4dENvbm5lY3Rpb24gPSB0aGlzLT5jb250ZXh0Q29ubmVjdGlvbigpKQogICAgICAgICBj
b250ZXh0Q29ubmVjdGlvbi0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWlu
U2NyaXB0LCBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZl
ZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRv
IHNhdmUgZGlydHkgbWVtb3J5LgotICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2Ny
aXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBp
ZGVudGljYWwuCisgICAgQVNTRVJUKG1haW5TY3JpcHQgPT0gbV9zY3JpcHQpOyAvLyBEbyBhIG1l
bWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KICAgICBtX3Njcmlw
dCA9IFdURk1vdmUobWFpblNjcmlwdCk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRT
Y3JpcHRzKSB7CiAgICAgICAgIGF1dG8gaXQgPSBtX3NjcmlwdFJlc291cmNlTWFwLmZpbmQocGFp
ci5rZXkpOwogICAgICAgICBBU1NFUlQoaXQgIT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSk7
CiAgICAgICAgIGlmIChpdCA9PSBtX3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAqcGFpci52
YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRp
Y2FsLgorICAgICAgICBBU1NFUlQoaXQtPnZhbHVlLnNjcmlwdCA9PSBwYWlyLnZhbHVlKTsgLy8g
RG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCiAgICAg
ICAgIGl0LT52YWx1ZS5zY3JpcHQgPSBXVEZNb3ZlKHBhaXIudmFsdWUpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaAppbmRleCBjNDVkYWRiY2FiODE5NzZiNzZmMGJlNTMxNGYzYjcxZjc3YjZiMjkxLi5m
NGMyYzNiNzU2YTllZjhmMWQwZjVkMzYyZjBhZWI5ODYwZWE4OGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBA
IC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4g
bV9zZXJ2ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
JiByZWdpc3RyYXRpb25LZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQog
ICAgIGNvbnN0IFVSTCYgc2NyaXB0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVS
TDsgfQotICAgIFNoYXJlZEJ1ZmZlciYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7
IH0KKyAgICBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
aXB0OyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25z
dCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS50eXBlOyB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZp
bmRDbGllbnRCeUlkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIm
KSBjb25zdDsKICAgICB2b2lkIG1hdGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAg
dm9pZCBzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJ
bXBvcnRlZFNjcmlwdCYmKTsKLSAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYmIGltcG9ydGVkU2NyaXB0cyk7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3Jp
cHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9y
dGVkU2NyaXB0cyk7CiAKICAgICB2b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBX
YWl0aW5nRmxhZ1NldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0K
QEAgLTEyOCw3ICsxMjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hl
Y2soKTsKIAogcHJpdmF0ZToKLSAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVy
UmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+JiYpOworICAgIFNXU2VydmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24mLCBjb25zdCBVUkwmLCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJp
bmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
KTsKIAogICAgIHZvaWQgY2FsbFdoZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vzcyk7CiAK
QEAgLTE0MSw3ICsxNDEsNyBAQCBwcml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CiAgICAgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlv
bj4gbV9yZWdpc3RyYXRpb247CiAgICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOwotICAgIFJl
ZjxTaGFyZWRCdWZmZXI+IG1fc2NyaXB0OworICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdDsKICAg
ICBDZXJ0aWZpY2F0ZUluZm8gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5UmVzcG9uc2VIZWFkZXJzIG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmlu
ZyBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA1NTM0YjhkOWI0NGZhOWRjNjA5ZDlmNGM3YjQzYjUz
MWQxNTA5ZmQyLi40ZjE4YTM1NzhhODE4Y2ExMmEwM2I3ZjkwZThmNjU5NTg1MjdkOTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApA
QCAtMTA3LDE5ICsxMDcsMTggQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXIKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNv
bnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykK
K3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlz
ayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U2NyaXB0QnVmZmVyJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBp
bXBvcnRlZFNjcmlwdHMpCiB7CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExB
VEZPUk0oQ09DT0EpCi0gICAgYXV0byBzY3JpcHRIYW5kbGUgPSBJUEM6OnRyeUNvbnZlcnRUb1No
YXJlYWJsZVJlc291cmNlSGFuZGxlKHNjcmlwdCk7Ci0gICAgSGFzaE1hcDxVUkwsIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU+IGltcG9ydGVkU2NyaXB0SGFuZGxlczsKKyAgICAvLyBTZW5kIGZp
bGUtbWFwcGVkIFNjcmlwdEJ1ZmZlcnMgb3ZlciB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNz
IHNvIHRoYXQgaXQgY2FuIHJlcGxhY2UgaXRzIGhlYXAtYWxsb2NhdGVkIGNvcGllcyBhbmQgc2F2
ZSBvbiBkaXJ0eSBtZW1vcnkuCisgICAgYXV0byBzY3JpcHRUb1NlbmQgPSBzY3JpcHQuY29udGFp
bnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpID8gc2NyaXB0IDogU2NyaXB0QnVmZmVyKCk7Cisg
ICAgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzVG9TZW5kOwogICAg
IGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewotICAgICAgICBhdXRvIGhhbmRs
ZSA9IElQQzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKnBhaXIudmFsdWUp
OwotICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGltcG9ydGVkU2NyaXB0SGFuZGxlcy5hZGQocGFpci5rZXksIFdURk1vdmUoaGFuZGxl
KSk7CisgICAgICAgIGlmIChwYWlyLnZhbHVlLmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21l
bnQoKSkKKyAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0c1RvU2VuZC5hZGQocGFpci5rZXksIHBh
aXIudmFsdWUpOwogICAgIH0KLSAgICBpZiAoIXNjcmlwdEhhbmRsZS5pc051bGwoKSB8fCAhaW1w
b3J0ZWRTY3JpcHRIYW5kbGVzLmlzRW1wdHkoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkRpZFNhdmVTY3JpcHRzVG9EaXNrIHsgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHNjcmlwdEhhbmRsZSwgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzIH0p
OworICAgIGlmIChzY3JpcHRUb1NlbmQgfHwgIWltcG9ydGVkU2NyaXB0c1RvU2VuZC5pc0VtcHR5
KCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpEaWRTYXZlU2NyaXB0c1RvRGlzayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHRU
b1NlbmQsIGltcG9ydGVkU2NyaXB0c1RvU2VuZCB9KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KHNjcmlwdCk7CiAgICAgVU5VU0VEX1BBUkFNKGltcG9ydGVkU2NyaXB0cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNjhmNzkyNTM2
N2QyNWZjOTNlNzU4ZjRiMDA3ZjU4MDQzYmM3MTIyMy4uMDBlOWMyMWU4NmQ0ZjllMmU5Zjc3YjA0
ZjM3NmM4NGFlOGFmMDQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmly
ZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAg
ICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0
LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBpbXBv
cnRlZFNjcmlwdHMpIGZpbmFsOworICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYs
IGNvbnN0IEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlw
dHMpIGZpbmFsOwogICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lk
IG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDEzNzRlMTU4
YzJlZTBmOTBmYmRlMmJkN2QxODhjNGMwNTIyOTQ2ZDcuLjI1NWEyY2JjNmM3N2NlZjFlNjA3MGVh
NDIwZjZiZGU5MGIyNDBhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVy
ZW5jZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNoYXJlYWJs
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIlN0cmVhbUNvbm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgpAQCAtNzMsNiArNzQsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29y
ZGluYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CkBAIC0yODI5
LDE0MiArMjgzMSw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFNlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZVNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChF
bmNvZGVyJiBlbmNvZGVyLCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKLXsKLSNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICBhdXRvIGhhbmRsZSA9IHRy
eUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKHNjcmlwdCk7Ci0gICAgYm9vbCBpc1No
YXJlYWJsZVJlc291cmNlSGFuZGxlID0gIWhhbmRsZS5pc051bGwoKTsKLSAgICBlbmNvZGVyIDw8
IGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7Ci0gICAgaWYgKGlzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUpIHsKLSAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0jZW5kaWYKLSAgICBlbmNvZGVyIDw8IG1ha2VSZWYoc2NyaXB0KTsKLX0KLQotc3RhdGlj
IE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBkZWNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGFTY3JpcHQoRGVjb2RlciYgZGVjb2RlcikKLXsKLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlOwotICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
LSAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0gICAgaWYgKCppc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKSB7Ci0gICAgICAg
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhbmRsZSkgfHwgaGFuZGxlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7Ci0gICAgICAgIGlmICghYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotICAgIH0K
LSNlbmRpZgotICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7Ci0gICAgZGVj
b2RlciA+PiBzY3JpcHQ7Ci0gICAgcmV0dXJuIHNjcmlwdDsKLX0KLQotdm9pZCBBcmd1bWVudENv
ZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYgaW1wb3J0ZWRTY3JpcHQpCi17Ci0gICAgZW5jb2RlU2VydmljZVdvcmtlckNvbnRleHRE
YXRhU2NyaXB0KGVuY29kZXIsICppbXBvcnRlZFNjcmlwdC5zY3JpcHQpOwotICAgIGVuY29kZXIg
PDwgaW1wb3J0ZWRTY3JpcHQucmVzcG9uc2VVUkwgPDwgaW1wb3J0ZWRTY3JpcHQubWltZVR5cGU7
Ci19Ci0KLU9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
IEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KGRlY29kZXIpOwotICAgIGlmICghc2NyaXB0KQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8VVJMPiByZXNwb25z
ZVVSTDsKLSAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOwotICAgIGlmICghcmVzcG9uc2VVUkwp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IG1p
bWVUeXBlOwotICAgIGRlY29kZXIgPj4gbWltZVR5cGU7Ci0gICAgaWYgKCFtaW1lVHlwZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZN
b3ZlKCpzY3JpcHQpLAotICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCi0gICAgICAgIFdU
Rk1vdmUoKm1pbWVUeXBlKQotICAgIH19OwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKLXsKLSAgICBlbmNvZGVTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGFTY3JpcHQoZW5jb2RlciwgZGF0YS5zY3JpcHQpOwotICAgIGVuY29kZXIgPDwgZGF0
YS5qb2JEYXRhSWRlbnRpZmllciA8PCBkYXRhLnJlZ2lzdHJhdGlvbiA8PCBkYXRhLnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIDw8IGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5IDw8IGRhdGEucmVm
ZXJyZXJQb2xpY3kKLSAgICAgICAgPDwgZGF0YS5zY3JpcHRVUkwgPDwgZGF0YS53b3JrZXJUeXBl
IDw8IGRhdGEubG9hZGVkRnJvbURpc2sgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCA8PCBkYXRh
LmNlcnRpZmljYXRlSW5mbzsKLX0KLQotT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRh
PiBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQotewotICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdvcmtlckNvbnRl
eHREYXRhU2NyaXB0KGRlY29kZXIpOwotICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBqb2JEYXRh
SWRlbnRpZmllcjsKLSAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGE+IHJlZ2lzdHJhdGlvbjsKLSAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKLSAgICBpZiAo
IXJlZ2lzdHJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8g
c2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2Rl
KGRlY29kZXIpOwotICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
dGVudFNlY3VyaXR5UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAg
IFN0cmluZyByZWZlcnJlclBvbGljeTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVy
UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFVSTCBzY3JpcHRV
Ukw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUod29ya2VyVHlwZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVk
RnJvbURpc2spKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291
cmNlTWFwOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQotICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAg
ICByZXR1cm4ge3sKLSAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAotICAgICAg
ICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAotICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciksCi0gICAgICAgIFdURk1vdmUoKnNjcmlwdCksCi0gICAgICAgIFdURk1vdmUo
KmNlcnRpZmljYXRlSW5mbyksCi0gICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5
KSwKLSAgICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGljeSksCi0gICAgICAgIFdURk1vdmUoc2Ny
aXB0VVJMKSwKLSAgICAgICAgd29ya2VyVHlwZSwKLSAgICAgICAgbG9hZGVkRnJvbURpc2ssCi0g
ICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApCi0gICAgfX07Ci19Ci0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTMyMDQsMTUgKzMwNzAsMTIgQEAgT3B0
aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4+OjpkZWNvZGUoRGUKIH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
ICYmIFBMQVRGT1JNKENPQ09BKQotU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0
VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBT
aGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFu
ZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KQogewotICAgIGlmICghYnVmZmVyLmhhc09u
ZVNlZ21lbnQoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9
OwotCi0gICAgYXV0byYgc2VnbWVudCA9IGJ1ZmZlci5iZWdpbigpLT5zZWdtZW50OwotICAgIGlm
ICghc2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpKQorICAgIGlmICghc2NyaXB0LmNv
bnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSkKICAgICAgICAgcmV0dXJuIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgeyB9OwogCisgICAgYXV0byYgc2VnbWVudCA9IHNjcmlwdC5idWZm
ZXIoKS0+YmVnaW4oKS0+c2VnbWVudDsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1l
bW9yeTo6d3JhcE1hcChjb25zdF9jYXN0PGNoYXIqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50
LT5zaXplKCksIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICgh
c2hhcmVkTWVtb3J5KQogICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7
IH07CkBAIC0zMjI1LDggKzMwODgsNTEgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlD
b252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICBz
aGFyZWFibGVSZXNvdXJjZS0+Y3JlYXRlSGFuZGxlKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsK
ICAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CiB9CisKK3N0YXRpYyBPcHRpb25h
bDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkgfHwgaGFuZGxl
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gYnVmZmVy
ID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiBXZWJDb3JlOjpTY3JpcHRCdWZm
ZXIgeyBXVEZNb3ZlKGJ1ZmZlcikgfTsKK30KKyNlbmRpZgorCit2b2lkIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciYgc2NyaXB0KQoreworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gaGFuZGxlID0gdHJ5Q29udmVydFRv
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoc2NyaXB0KTsKKyAgICBib29sIGlzU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUgPSAhaGFuZGxlLmlzTnVsbCgpOworICAgIGVuY29kZXIgPDwgaXNTaGFyZWFi
bGVSZXNvdXJjZUhhbmRsZTsKKyAgICBpZiAoaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkgewor
ICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBzY3JpcHQuYnVmZmVyKCkpOworfQor
CitPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgT3B0aW9uYWw8Ym9vbD4g
aXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICBkZWNvZGVyID4+IGlzU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGU7CisgICAgaWYgKCFpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgqaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZSkKKyAgICAgICAgcmV0dXJuIGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUoZGVjb2Rlcik7CiAjZW5kaWYKIAorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZl
cjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
ciB7IFdURk1vdmUoYnVmZmVyKSB9OworfQorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
IHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlJiBtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCBmMWJhMDA2NzY3Mzk0ZmM5NTJlN2ZiZTVkZDY4ZmIwMzQ2
ZWJiOTQ4Li40NWQ2MWY3MDVjODg3NWJhYzFhMjg5YzVkMDNlYWQ4YTg4NGM1YjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMjYsNyArMjYs
NiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRvcGxheUV2ZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
aWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNl
dHNJbmZvLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFs
dWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyVHlwZS5o
PgpAQCAtMTIyLDYgKzEyMCw3IEBAIGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3Mg
U2NyaXB0QnVmZmVyOwogY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBTcHJpbmdUaW1pbmdGdW5jdGlvbjsKQEAgLTczNywxNiArNzM2LDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShE
ZWNvZGVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYpOwogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7Ci19Owot
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQmKTsKLSAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTgwOCwxMSArNzk3LDEwIEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsK
ICAgICBzdGF0aWMgT3B0aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShE
ZWNvZGVyJik7CiB9OwogCi0jaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZP
Uk0oQ09DT0EpCi0vLyBJZiB0aGUgU2hhcmVkQnVmZmVyIGNvbnRhaW5zIGEgc2luZ2xlIHNlZ21l
bnQgYW5kIHRoZSBzZWdtZW50IGlzIE1hcHBlZEZpbGVEYXRhLCB0aGVuIGNvbnZlcnQgaXQgaW50
bwotLy8gYSBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgc28gdGhhdCBpdCBjYW4gYmUgc2VudCBv
dmVyIElQQyBhbmQgc2hhcmVkIHdpdGggYW5vdGhlciBwcm9jZXNzLgotV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYpOwotI2VuZGlmCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJik7CisgICAgc3RhdGljIE9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKK307CiAKICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBhNGYzNDJiMWVlZWZkNTA4YThjYTc2YjQ2YzBlNjM5YzFl
MGI4ZThjLi41MmMxYmVmZTMxMzMwNTIxYjBkMmUxNzM2MjRmNDFiYmU5ZDMwYmFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0yNjMsMjIgKzI2Myw5IEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVuCiB9CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAm
JiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRp
ZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIHNjcmlwdEhhbmRsZSwgY29u
c3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+JiBpbXBvcnRlZFNjcmlw
dEhhbmRsZXMpCi17Ci0gICAgYXV0byB0b1NoYXJlZEJ1ZmZlciA9IFtdKGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gewotICAg
ICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigp
OwotICAgICAgICBpZiAoIXNoYXJlZEJ1ZmZlcikKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFNlcnZpY2VXb3JrZXIsICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2s6IEZhaWxlZCB0byB3cmFwIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBp
biBhIFNoYXJlZEJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gc2hhcmVkQnVmZmVyOwotICAgIH07
Ci0gICAgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBpbXBvcnRlZFNjcmlwdHM7
Ci0gICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKSB7Ci0gICAgICAg
IGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IHRvU2hhcmVkQnVmZmVyKHBhaXIudmFsdWUpKQotICAg
ICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgV1RGTW92ZShzaGFyZWRCdWZm
ZXIpKTsKLSAgICB9Ci0gICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkU2F2ZVNj
cmlwdHNUb0Rpc2soaWRlbnRpZmllciwgdG9TaGFyZWRCdWZmZXIoc2NyaXB0SGFuZGxlKSwgV1RG
TW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFNjcmlwdEJ1ZmZlciYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1
ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBX
VEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCmluZGV4IDExZjllMDlmZDMzZDU5MGZmMTM3M2I2MmYzM2JjMGNkMGU5Njlh
MWYuLjc2NjIxODk1MzI4MGFjYTFmZWQwYjBlNjkxMDhkOWJjODc4OWRkZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwog
ICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLSAg
ICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBzY3JpcHQsIGNvbnN0IEhhc2hN
YXA8VVJMLCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAg
ICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogI2VuZGlmCiAgICAgdm9pZCBmaW5kQ2xpZW50
QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25h
bDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVy
cm9yKTsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVz
dElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IGFlNTcxNmI5YWYyMTRlYzkwZmQ4OTM3MGZjZmRlOWJlYThlZGFkMGMuLmZhMmZhMGIxZDJiY2Zm
ZWE5Y2E2MjZmNjdlOTJmZTIwOTg0ZTUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpcmVBY3Rp
dmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAg
ICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGU+IGltcG9ydGVkU2NyaXB0cyk7CisgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlNjcmlwdEJ1ZmZlciBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+
IGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3Ip
CiAgICAgTWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmll
ciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnRzRGF0YSkK
</data>
<flag name="commit-queue"
          id="444803"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424984</attachid>
            <date>2021-04-01 21:08:09 -0700</date>
            <delta_ts>2021-04-02 13:41:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224092-20210401210808.patch</filename>
            <type>text/plain</type>
            <size>77195</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTc0MjAxM2Y0NjhmMjQz
MDU1ZDEwMTkyZDQzOTA4MWFjZDkyYjY0OC4uZDM4YzBlNWIwY2I4ZDliYTkyZTFkMWE5YjJkNzFh
Zjg4M2IxODgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIxLTA0LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcmlwdEJ1
ZmZlciBjbGFzcyB0byB3cmFwIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwOTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2Ny
aXB0QnVmZmVyIGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzY3JpcHQu
IFdlIHN0YXJ0ZWQgdXNpbmcgU2hhcmVkQnVmZmVyIHRvIHJlcHJlc2VudAorICAgICAgICB3b3Jr
ZXIgc2NyaXB0cyBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkIGZpbGUg
bWFwcGVkIGRhdGEgYW5kIGJlIHNoYXJlZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGlz
IHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2NyaXB0QnVmZmVyIHRvIHdyYXAgdGhvc2UgU2hhcmVk
QnVmZmVycy4gVGhlIHR5cGUgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHR5cGUgb2YKKyAgICAgICAg
ZGF0YSB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gY29u
dmVydCBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyIGNhbiBub3cgc2ltcGx5CisgICAg
ICAgIGJlIG1lbWJlciBmdW5jdGlvbnMgb24gU2NyaXB0QnVmZmVyLiBUaGlzIGFsc28gc2ltcGxp
ZmllcyBJUEMgY29kZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBTY3JpcHRCdWZm
ZXIgY2xhc3MgdG8gcHJvamVjdCBmaWxlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAgICAgIFVzZSBTY3JpcHRC
dWZmZXI6OnRvU3RyaW5nKCkgaW5zdGVhZCBvZiBzY3JpcHRCdWZmZXJUb1N0cmluZygpLgorCisg
ICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVy
Ojpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0QnVmZmVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnVmZmVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgTmV3IFNjcmlwdEJ1
ZmZlciBjbGFzcyB0aGF0IHdyYXBzIGEgU2hhcmVkQnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIGEg
c2NyaXB0LgorICAgICAgICBUaGlzIGNsYXNzIGhlbHBzIG1ha2UgaXQgY2xlYXIgd2hhdCBkYXRh
IHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQgYWxzbyBmYWNpbGl0YXRlcworICAgICAgICBjb252ZXJz
aW9uIHRvIGFuZCBmcm9tIGEgU3RyaW5nIHdoZW4gbmVlZGVkLiBUaGUgY2xhc3MgYWxzbyBoYXMg
aXRzIG93biBJUEMKKyAgICAgICAgY29kZXIgYXQgV2ViS2l0IGxheWVyIHRvIGVuY29kZSB0aGUg
c2NyaXB0IGFzIGEgU2hhcmVhYmxlUmVzb3VyY2Ugd2hlbiBmaWxlCisgICAgICAgIG1hcHBlZC4K
KworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICBV
c2UgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGluc3RlYWQgb2Ygc2NyaXB0QnVmZmVyVG9TdHJp
bmcoKS4KKyAgICAgICAgQW5kIHVzZSBTdHJpbmdCdWZmZXIgY29uc3RydWN0b3IgdGhhdCB0YWtl
cyBhIFN0cmluZyBpbnN0ZWFkIG9mIHN0cmluZ1RvU2NyaXB0QnVmZmVyKCkuCisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdDo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUpOgorICAgICAgICAt
IFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBmb3Igc2Ny
aXB0cy4KKyAgICAgICAgLSBEcm9wIHNjcmlwdEJ1ZmZlclRvU3RyaW5nKCkgJiBzdHJpbmdUb1Nj
cmlwdEJ1ZmZlcigpIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIC0gTW92
ZSBJUEMgY29kZXJzIGZvciBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgYmFjayBmcm9tIFdlYkNv
cmVBcmd1bWVudENvZGVycyBiYWNrCisgICAgICAgICAgdG8gdGhlIFdlYkNvcmUgY2xhc3MsIG5v
dyB0aGF0IHRoZSBjb2RlcnMgbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIFNoYXJlYWJsZVJl
c291cmNlCisgICAgICAgICAgZGlyZWN0bHkuIFdlIG5vdyBlbmNvZGUgLyBkZWNvZGUgU2NyaXB0
QnVmZmVyIG9iamVjdHMgYW5kIGl0cyBjb2RlciB0YWtlcyBjYXJlIG9mCisgICAgICAgICAgdXNp
bmcgYSBTaGFyZWFibGVSZXNvdXJjZSB3aGVuZXZlciBwb3NzaWJsZS4KKworICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2spOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJl
YWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U1dTY3JpcHRTdG9y
YWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Njcmlw
dFN0b3JhZ2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlz
ayk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlV29ya2VyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNjcmlwdEJ1ZmZlciBpbnN0
ZWFkIG9mIFNoYXJlZEJ1ZmZlci4KKwogMjAyMS0wNC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBob2xk
IG9uIHRvIGEgZmlsZSBtYXBwZWQgdmVyc2lvbiBvZiB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0
cyB0byBzYXZlIGRpcnR5IG1lbW9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjYTEzNzZjNDU1NWNjZTU4ZTdlMDVm
ZDgwOTg2MTgyMzMwYzc2NzhkLi5mODZmNDE4ZThiMTQ4NDNjOWIwNWRiZTczMzQwZTU3YjkyOWJl
MjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA0LTAxICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcmlwdEJ1ZmZlciBjbGFz
cyB0byB3cmFwIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2NyaXB0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwOTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgU2NyaXB0QnVmZmVy
IGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNvbnRhaW5pbmcgYSBzY3JpcHQuIFdlIHN0YXJ0
ZWQgdXNpbmcgU2hhcmVkQnVmZmVyIHRvIHJlcHJlc2VudAorICAgICAgICB3b3JrZXIgc2NyaXB0
cyBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5IGNhbiBob2xkIGZpbGUgbWFwcGVkIGRh
dGEgYW5kIGJlIHNoYXJlZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgICAgICBUaGlzIHBhdGNoIGlu
dHJvZHVjZXMgYSBuZXcgU2NyaXB0QnVmZmVyIHRvIHdyYXAgdGhvc2UgU2hhcmVkQnVmZmVycy4g
VGhlIHR5cGUgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHR5cGUgb2YKKyAgICAgICAgZGF0YSB3ZSdy
ZSBkZWFsaW5nIHdpdGguIFRoZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgdG8gY29udmVydCBiZXR3
ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyIGNhbiBub3cgc2ltcGx5CisgICAgICAgIGJlIG1l
bWJlciBmdW5jdGlvbnMgb24gU2NyaXB0QnVmZmVyLiBUaGlzIGFsc28gc2ltcGxpZmllcyBJUEMg
Y29kZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aDoKKyAgICAgICAgVXNlIFNjcmlwdEJ1ZmZlciBpbnN0ZWFkIFNoYXJlZEJ1ZmZlci4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjp0
cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChJUEM6OmRlY29k
ZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj46OmVuY29kZSk6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIC0gQWRkIElQQyBl
bmNvZGVyIC8gZGVjb2RlciBmb3IgU2NyaXB0QnVmZmVyIHdoaWNoIHRyaWVzIHRvIGVuY29kZSAv
IGRlY29kZSBhcyBhIFNoYXJlYWJsZVJlc291cmNlIHdoZW5ldmVyCisgICAgICAgICAgcG9zc2li
bGUgKHNpbmdsZSBzZWdtZW50IHRoYXQgaXMgZmlsZSBtYXBwZWQpLiBUaGlzIGxvZ2ljIHVzZWQg
dG8gYmUgaW4gdGhlIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YQorICAgICAgICAgIGNvZGVycy4g
Tm93IHRoYXQgdGhlIGxvZ2ljIGlzIGluIHRoZSBTY3JpcHRCdWZmZXIgY29kZXIsIHRoZSBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgZW5jb2RpbmcgLyBkZWNvZGluZworICAgICAgICAgIGJlY29t
ZXMgbXVjaCBzaW1wbGVyLgorICAgICAgICAtIE1vdmVkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YSBjb2RlcnMgZnJvbSBXZWJDb3JlQXJndW1lbnRDb2RlcnMgYmFjayB0byBpdHMgY2xhc3MgaW4g
V2ViQ29yZSwgbm93IHRoYXQKKyAgICAgICAgICB0aGV5IG5vIGxvbmdlciBuZWVkIHRvIGRlYWwg
d2l0aCBTaGFyZWFibGVSZXNvdXJjZSBkaXJlY3RseS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICBTZW5kIHNjcmlwdHMgb3ZlciBJUEMgYXMg
U2NyaXB0QnVmZmVyIGluc3RlYWQgb2YgdXNpbmcgU2hhcmVhYmxlUmVzb3VyY2UgZGlyZWN0bHku
IFRoZSBuZXcgSVBDIGVuY29kZXIgLworICAgICAgICBkZWNvZGVyIGZvciBTY3JpcHRCdWZmZXIg
dGFrZXMgY2FyZSBvZiB1c2luZyBTaGFyZWFibGVSZXNvdXJjZSBmb3IgdXMuCisKIDIwMjEtMDQt
MDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIHRoZSBT
ZXJ2aWNlV29ya2VyIHByb2Nlc3MgaG9sZCBvbiB0byBhIGZpbGUgbWFwcGVkIHZlcnNpb24gb2Yg
dGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgdG8gc2F2ZSBkaXJ0eSBtZW1vcnkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IGIxNGVlNzMzYzNkNGE1MWEzM2U2NWVhMDlkMmJmOGVkYjA3ZWFmMDIuLmFh
MzkxODJkNDA2ZjYzMGE5MWU5NzRhMTgyMDUyM2Y4MTMyOWQ1MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTY0NSw2ICsxNjQ1LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHRlc3RpbmcvTW9ja0dhbWVwYWQuaAogICAgIHRlc3RpbmcvTW9ja0dhbWVwYWRQ
cm92aWRlci5oCiAKKyAgICB3b3JrZXJzL1NjcmlwdEJ1ZmZlci5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJBbmltYXRpb25Db250cm9sbGVyLmgKICAgICB3b3JrZXJzL1dvcmtlckRlYnVnZ2VyUHJveHku
aAogICAgIHdvcmtlcnMvV29ya2VyTG9hZGVyUHJveHkuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA2OWU1
Zjk5MTE4M2QzMTUzYzgzOTE4Nzg3NWU1MjlhMzU2ZDM5OGI3Li45ZTRmYTYwY2NkZGFmZGMxNWRk
NjUxMzkxZjFiMjExNmIzNzM0YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjY0Miw2ICsyNjQyLDcg
QEAgc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCiB3b3JrZXJzL0Fic3Ry
YWN0V29ya2VyLmNwcAogd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKIHdv
cmtlcnMvRGVkaWNhdGVkV29ya2VyVGhyZWFkLmNwcAord29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CiB3b3JrZXJzL1dvcmtlci5jcHAKIHdvcmtlcnMvV29ya2VyQW5pbWF0aW9uQ29udHJvbGxlci5j
cHAKIHdvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNmE2Y2NlMzQyNjg0N2Qw
NjYwZTYyOWI0YzU0ODI1NjIyN2QwMzRiLi43NTMwMmRiMGQwYzY4MjIzMWY1NjJmZTkwOGM5ZWIx
NTExYjNmOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMjczLDYgKzEyNzMsNyBAQAogCQk0NjBFMzA3NzIyMkY0RjAzMDA5
QTA2MDYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1RUREOUYyMjJGNEVD
MzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjIxOEFD
QjFGNzJENjRFMDA1NzRGQkUgLyogRE9NSGlnaFJlc1RpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZFMDE2QUQxRjcyRDYxRTAwMjgyQjJD
IC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjI3M0NBRjI2MEU1OUVGMDA2RkFBOTEgLyogU1dTY3JpcHRT
dG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjI3M0NBQzI2MEU1OURGMDA2RkFBOTEgLyogU1dTY3JpcHRTdG9yYWdlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNDYyRTRDNTAyNjE2QTgxMTAw
M0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUy
MUFEMjA4MTA5MkEwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdp
bmRvd1Byb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDYzRUI2MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0Iw
MDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmggKi87IH07CiAJCTQ2NTMwN0QwMURCNkVFNDgwMEU0
MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2ZW50SW5pdC5o
ICovOyB9OwpAQCAtODI1MSw2ICs4MjUyLDggQEAKIAkJNDYwRDE5NDQxRkNFMjFERDAwQzNEQjg1
IC8qIEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkx
IC8qIFNXU2NyaXB0U3RvcmFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
V1NjcmlwdFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYyNzNDQUUy
NjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTV1NjcmlwdFN0b3JhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJ1ZmZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NjJFNEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0
QnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEJ1
ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzQ1OTJCMUFDMjI3MTAw
MEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2luZG93UHJveHkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUMyMDgxMDkwRTAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbmRvd1Byb3h5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5MzcwLDYgKzE5MzczLDggQEAKIAkJCQk0
MTYyQTQ0RjEwMTE0NUFFMDBERkYzRUQgLyogRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaWRs
ICovLAogCQkJCTQxQTNENThDMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJl
YWQuY3BwICovLAogCQkJCTQxQTNENThEMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3Jr
ZXJUaHJlYWQuaCAqLywKKwkJCQk0NjJFNEM0RjI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVm
ZmVyLmNwcCAqLywKKwkJCQk0NjJFNEM0RDI2MTZBODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVy
LmggKi8sCiAJCQkJMkU0MzQ2MzMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5jcHAgKi8sCiAJ
CQkJMkU0MzQ2MzQwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlci5oICovLAogCQkJCTJFNDM0NjM1
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaWRsICovLApAQCAtMzQ3OTYsNiArMzQ4MDEsNyBA
QAogCQkJCUJDRUMwMUJFMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCUMxRTFEMjM2MjAzREYxNTQwMDU4NDY2NSAvKiBTY3JlZW5Qcm9wZXJ0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODREODJDMTExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURv
Y3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjJFNEM1MDI2MTZBODExMDAzQTJD
NjcgLyogU2NyaXB0QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYxRDIxRjBFRjM1QzJB
MDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0I3MEQ3MDA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ2QjQxRjkxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93ZWRTY29w
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAppbmRleCAzZjUyNDkx
ZGEwYWM1ZDlmNzliNTQ0ZjdjNWZjOTQwMGI0YmE3MjU0Li4zOTRjMDk1MDBhYWJiOTQ4NTg5YzFm
N2ZkOWE0ZTViOGFhODJmZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKQEAgLTYwLDcg
KzYwLDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPFByb3RvY29sOjpTZXJ2aWNlV29y
a2VyOjpDb25maWd1cmF0aW9uPj4gU2VydmljZVdvcmsKICAgICAgICAgLnNldFRhcmdldElkKG1f
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmlkZW50aWZpZXIoKSkKICAgICAgICAgLnNldFNlY3Vy
aXR5T3JpZ2luKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnNlY3VyaXR5T3JpZ2luKCktPnRv
UmF3U3RyaW5nKCkpCiAgICAgICAgIC5zZXRVcmwobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
Y29udGV4dERhdGEoKS5zY3JpcHRVUkwuc3RyaW5nKCkpCi0gICAgICAgIC5zZXRDb250ZW50KHNj
cmlwdEJ1ZmZlclRvU3RyaW5nKG1fc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNvbnRleHREYXRh
KCkuc2NyaXB0KSkKKyAgICAgICAgLnNldENvbnRlbnQobV9zZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUuY29udGV4dERhdGEoKS5zY3JpcHQudG9TdHJpbmcoKSkKICAgICAgICAgLnJlbGVhc2UoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMz
MWM2YWM4M2ZiOWM0ZjZhY2VjYzBiNmEzMzhhMmY1N2FjYjlmMDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcmlwdEJ1ZmZlci5oIgorCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Nj
cmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGF1
dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7CisgICAgbV9idWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSk7Cit9CisKK1N0cmluZyBTY3JpcHRCdWZm
ZXI6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgZm9yIChhdXRv
IGl0ID0gbV9idWZmZXItPmJlZ2luKCk7IGl0ICE9IG1fYnVmZmVyLT5lbmQoKTsgKytpdCkKKyAg
ICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgp
LCBpdC0+c2VnbWVudC0+c2l6ZSgpKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsK
K30KKworYm9vbCBTY3JpcHRCdWZmZXI6OmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQo
KSBjb25zdAoreworICAgIHJldHVybiBtX2J1ZmZlciAmJiBtX2J1ZmZlci0+aGFzT25lU2VnbWVu
dCgpICYmIG1fYnVmZmVyLT5iZWdpbigpLT5zZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRh
KCk7Cit9CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImIGEsIGNvbnN0IFNj
cmlwdEJ1ZmZlciYgYikKK3sKKyAgICBpZiAoYS5idWZmZXIoKSA9PSBiLmJ1ZmZlcigpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIWEuYnVmZmVyKCkgfHwgIWIuYnVmZmVyKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKmEuYnVmZmVyKCkgPT0gKmIuYnVmZmVy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhYTUyYjRmODM3YjFhYTJjZjcyNDU2MDdjNWQyMWZjOTNj
ZGEzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1
ZmZlci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0QnVmZmVyIHsKK3B1
YmxpYzoKKyAgICBTY3JpcHRCdWZmZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBTY3JpcHRCdWZmZXIo
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBTY3JpcHRCdWZmZXIoY29u
c3QgU3RyaW5nJik7CisKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKyAgICBTaGFyZWRC
dWZmZXIqIGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisKKyAgICBT
Y3JpcHRCdWZmZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gU2NyaXB0QnVmZmVyKG1f
YnVmZmVyID8gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4obV9idWZmZXItPmNvcHkoKSkgOiBudWxscHRy
KTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhIW1fYnVm
ZmVyOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zU2luZ2xlRmlsZU1hcHBl
ZFNlZ21lbnQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2J1ZmZlcjsgLy8gQ29udGFpbnMgdGhlIFVURi04IGVuY29kZWQgc2NyaXB0LgorfTsKKworYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYpOwor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5jcHAKaW5kZXggYTRiZTEwMDQwYmUyODU5MjEwYjcyY2VkMjMxODJhZjA2
NDdhNzgyYi4uZTFjODEyMzVmYmE4YTQ1ODdkMmVhZDRmNTQ4YWY5OTNmYzViZWEwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBPcHRpb25hbDxFeGNlcHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAgaWYgKGlzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JpcHRSZXNvdXJjZSA9IGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNjcmlwdFJl
c291cmNlKHVybCkpIHsKLSAgICAgICAgICAgIG1fc2NyaXB0LmFwcGVuZChzY3JpcHRCdWZmZXJU
b1N0cmluZygqc2NyaXB0UmVzb3VyY2UtPnNjcmlwdCkpOworICAgICAgICAgICAgbV9zY3JpcHQu
YXBwZW5kKHNjcmlwdFJlc291cmNlLT5zY3JpcHQudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBt
X3Jlc3BvbnNlVVJMID0gc2NyaXB0UmVzb3VyY2UtPnJlc3BvbnNlVVJMOwogICAgICAgICAgICAg
bV9yZXNwb25zZU1JTUVUeXBlID0gc2NyaXB0UmVzb3VyY2UtPm1pbWVUeXBlOwogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTEwMiw3ICsxMDIsNyBAQCBPcHRpb25hbDxFeGNl
cHRpb24+IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dAogICAgICAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2
YVNjcmlwdE1JTUVUeXBlKHJlc3BvbnNlTUlNRVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgTmV0d29ya0Vycm9yLCAibWltZSB0eXBlIGlzIG5vdCBhIHN1cHBvcnRlZCBK
YXZhU2NyaXB0IG1pbWUgdHlwZSJfcyB9OwogCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZT4od29ya2VyR2xvYmFsU2NvcGUpLnNldFNjcmlwdFJlc291cmNlKHVybCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCB7IHN0cmluZ1RvU2NyaXB0
QnVmZmVyKHNjcmlwdCgpKSwgbV9yZXNwb25zZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwor
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNj
b3BlKS5zZXRTY3JpcHRSZXNvdXJjZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQgeyBTY3JpcHRCdWZmZXIgeyBzY3JpcHQoKSB9LCBtX3Jlc3BvbnNlVVJMLCBt
X3Jlc3BvbnNlTUlNRVR5cGUgfSk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENv
bm5lY3Rpb24uaAppbmRleCA2YWFlNDU1NmJkYTZhMWYwMTM0YzcxY2M1OGIyYWQxNjhiODg2MTQx
Li4zY2I1YjBjYmJhY2E1NDhjYzgyMzU2Y2JhMjFhOGE2NTgwMTIwOWUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC00
Miw3ICs0Miw2IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogY2xhc3MgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOwogY2xhc3MgU2VydmljZVdvcmtlckNvbnRhaW5lcjsKIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb247Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CiBlbnVtIGNsYXNzIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25TdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCA6
IGJvb2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCmluZGV4IDFlYTU5MDFiZDlkMmZkOWM3OTNiMmQ1
YWUwZTI3MGU4M2M4ZTcyMzUuLjE2ZGYyZDgyNDlmODdmNmFlNDM3M2UyNjU2MjNjM2Q4YTk5YjVl
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwCkBAIC0zNyw3ICszNyw3IEBAIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAgICAgICAgIGpvYkRhdGFJZGVudGlmaWVyLAogICAgICAgICByZWdpc3RyYXRpb24uaXNv
bGF0ZWRDb3B5KCksCiAgICAgICAgIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLAotICAgICAgICBz
Y3JpcHQtPmNvcHkoKSwKKyAgICAgICAgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICBj
ZXJ0aWZpY2F0ZUluZm8uaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIGNvbnRlbnRTZWN1cml0eVBv
bGljeS5pc29sYXRlZENvcHkoKSwKICAgICAgICAgcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5
KCksCkBAIC00OCwyMCArNDgsNiBAQCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdv
cmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgIH07CiB9CiAKLVN0cmlu
ZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBTdHJp
bmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGl0ID0gYnVmZmVyLmJlZ2luKCk7IGl0
ICE9IGJ1ZmZlci5lbmQoKTsgKytpdCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpm
cm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKSk7Ci0gICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5n
VG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgYXV0byB1dGY4ID0g
c3RyaW5nLnV0ZjgoKTsKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUodXRmOC5kYXRh
KCksIHV0ZjgubGVuZ3RoKCkpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKaW5kZXggYTE2MDQ4
OTAyMzk0ZmU1OTZjY2NkY2YzYjE5OGZhODExYTVjZjBjZC4uZGJhNjIzNWUwYjYwNmE4MzEzYzNj
NGMzMWQ3ZDJjYmZhNjE2ZmZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaApAQCAtMjcsMTAgKzI3LDEw
IEBACiAKICNpbmNsdWRlICJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbmNsdWRlICJDb250ZW50U2Vj
dXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJKb2JEYXRhSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiV29ya2Vy
VHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpA
QCAtNDAsMjIgKzQwLDQ4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5nIHNjcmlw
dEJ1ZmZlclRvU3RyaW5nKFNoYXJlZEJ1ZmZlciYpOwotUmVmPFNoYXJlZEJ1ZmZlcj4gc3RyaW5n
VG9TY3JpcHRCdWZmZXIoY29uc3QgU3RyaW5nJik7Ci0KIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgewogICAgIHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7Ci0gICAgICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHNjcmlwdDsKKyAgICAgICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKICAgICAg
ICAgVVJMIHJlc3BvbnNlVVJMOwogICAgICAgICBTdHJpbmcgbWltZVR5cGU7CiAKLSAgICAgICAg
SW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBzY3JpcHQtPmNv
cHkoKSwgcmVzcG9uc2VVUkwuaXNvbGF0ZWRDb3B5KCksIG1pbWVUeXBlLmlzb2xhdGVkQ29weSgp
IH07IH0KKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgZW5jb2RlciA8PCBzY3Jp
cHQgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7CisgICAgICAgIH0KKworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQorICAgICAgICB7CisgICAgICAgICAgICBPcHRpb25hbDxTY3Jp
cHRCdWZmZXI+IHNjcmlwdDsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gc2NyaXB0OworICAgICAg
ICAgICAgaWYgKCFzY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgICAgICAgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKKyAgICAgICAgICAgIGRl
Y29kZXIgPj4gcmVzcG9uc2VVUkw7CisgICAgICAgICAgICBpZiAoIXJlc3BvbnNlVVJMKQorICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICAgICAgICAgIE9wdGlvbmFs
PFN0cmluZz4gbWltZVR5cGU7CisgICAgICAgICAgICBkZWNvZGVyID4+IG1pbWVUeXBlOworICAg
ICAgICAgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgICAgICAgICByZXR1cm4ge3sKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKCpz
Y3JpcHQpLAorICAgICAgICAgICAgICAgIFdURk1vdmUoKnJlc3BvbnNlVVJMKSwKKyAgICAgICAg
ICAgICAgICBXVEZNb3ZlKCptaW1lVHlwZSkKKyAgICAgICAgICAgIH19OworICAgICAgICB9CisK
KyAgICAgICAgSW1wb3J0ZWRTY3JpcHQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4geyBz
Y3JpcHQuaXNvbGF0ZWRDb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlw
ZS5pc29sYXRlZENvcHkoKSB9OyB9CiAgICAgfTsKIAogICAgIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4gam9iRGF0YUlkZW50aWZpZXI7CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGEgcmVnaXN0cmF0aW9uOwogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IHNjcmlw
dDsKKyAgICBTY3JpcHRCdWZmZXIgc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBjZXJ0aWZp
Y2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRl
bnRTZWN1cml0eVBvbGljeTsKICAgICBTdHJpbmcgcmVmZXJyZXJQb2xpY3k7CkBAIC02NCw5ICs5
MCw4NSBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBib29sIGxvYWRl
ZEZyb21EaXNrOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3Vy
Y2VNYXA7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2RlKERlY29kZXImKTsKKwogICAgIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CiAKK3RlbXBsYXRlPGNs
YXNzIEVuY29kZXI+Cit2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8
PCByZWdpc3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNv
bnRlbnRTZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQorICAgICAgICA8PCBzY3JpcHRV
UkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8
PCBjZXJ0aWZpY2F0ZUluZm87Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+
PiBqb2JEYXRhSWRlbnRpZmllcjsKKyAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+IHJlZ2lzdHJhdGlvbjsKKyAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsK
KyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKwor
ICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmll
cjo6ZGVjb2RlKGRlY29kZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTY3JpcHRCdWZmZXI+
IHNjcmlwdDsKKyAgICBkZWNvZGVyID4+IHNjcmlwdDsKKyAgICBpZiAoIXNjcmlwdCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CisgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVm
ZXJyZXJQb2xpY3kpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgVVJMIHNj
cmlwdFVSTDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFVSTCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZSh3b3JrZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShs
b2FkZWRGcm9tRGlzaykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBIYXNo
TWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87Cisg
ICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8p
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4ge3sKKyAgICAgICAg
V1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAorICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRp
b24pLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksCisgICAgICAg
IFdURk1vdmUoKnNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCisg
ICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKKyAgICAgICAgV1RGTW92ZShy
ZWZlcnJlclBvbGljeSksCisgICAgICAgIFdURk1vdmUoc2NyaXB0VVJMKSwKKyAgICAgICAgd29y
a2VyVHlwZSwKKyAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAgIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApCisgICAgfX07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXgg
YjAzZjNkYWNiOTM5MzIzMmUxYzg1YzA1NWQ5OWVhZmUzNGUxMjIwNy4uMThiZDRhOWU1Y2IzYjE4
ZTc0NTZkZWNkMWIwNGM1M2VkMGYxNTk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTE1
NSwxOCArMTU1LDE4IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRS
ZXNvdXJjZShjb25zdCBVUkwmIHVybCwgU2VydmljZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0
YS5zY3JpcHRSZXNvdXJjZU1hcC5zZXQodXJsLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
JiBpbXBvcnRlZFNjcmlwdHMpCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0
QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykKIHsKICAgICAvLyBUaGVzZSBzY3JpcHRzIHNob3Vs
ZCBiZSBpZGVudGljYWwgdG8gdGhlIG9uZXMgd2UgaGF2ZS4gSG93ZXZlciwgdGhlc2UgYXJlIG1t
YXAnZCBzbyB1c2luZyB0aGVtIGhlbHBzIHJlZHVjZSBkaXJ0eSBtZW1vcnkgdXNhZ2UuCiAgICAg
aWYgKHNjcmlwdCkgewotICAgICAgICBBU1NFUlQobV9jb250ZXh0RGF0YS5zY3JpcHQuZ2V0KCkg
PT0gKnNjcmlwdCk7Ci0gICAgICAgIG1fY29udGV4dERhdGEuc2NyaXB0ID0gc2NyaXB0LnJlbGVh
c2VOb25OdWxsKCk7CisgICAgICAgIEFTU0VSVChtX2NvbnRleHREYXRhLnNjcmlwdCA9PSBzY3Jp
cHQpOworICAgICAgICBtX2NvbnRleHREYXRhLnNjcmlwdCA9IFdURk1vdmUoc2NyaXB0KTsKICAg
ICB9CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CiAgICAgICAgIGF1
dG8gaXQgPSBtX2NvbnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmZpbmQocGFpci5rZXkpOwog
ICAgICAgICBpZiAoaXQgPT0gbV9jb250ZXh0RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQoKml0LT52YWx1ZS5zY3JpcHQg
PT0gKnBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMg
YXJlIGlkZW50aWNhbC4KKyAgICAgICAgQVNTRVJUKGl0LT52YWx1ZS5zY3JpcHQgPT0gcGFpci52
YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRp
Y2FsLgogICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZhbHVlKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggZWU3NWVlOWVkMWEzMjk3YzMzMjY5ZTkzZmQw
NmU3OGVlM2EwYzViOC4uYWZiYzQwZTljMzJiYmE5MTIwZmQ5OGI1MmE0MWZmMDc3Nzg3NGQ5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCogc2NyaXB0UmVzb3VyY2Uo
Y29uc3QgVVJMJikgY29uc3Q7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShjb25zdCBVUkwm
LCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwogCi0gICAgdm9p
ZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdCwgSGFz
aE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CisgICAg
dm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNj
cmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpOwogCiAgICAgY29uc3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiBjb250ZXh0RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dERhdGE7
IH0KICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbygpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGV4dERhdGEuY2VydGlmaWNhdGVJbmZvOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCmluZGV4IDg4MTNhYjY5YTE2ZDU3NGYwMTUxYWI1OGQxYmUwMjFhZmI4N2U4ZjIuLjI4ZDBh
YmM0MDUzOGRlZjg3MDk0NjA4Y2VjZmY0MjA0YjZjZTJhYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
Y3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb24KICAgICBzdG9w
V29ya2VyKCpzZXJ2aWNlV29ya2VyLCB0aW1lb3V0LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgU1dDb250ZXh0TWFuYWdlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBz
Y3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlw
dHMpCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEJ1ZmZlciYmIHNjcmlwdCwgSGFzaE1h
cDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAgICAgaWYgKGF1dG8g
c2VydmljZVdvcmtlciA9IG1fd29ya2VyTWFwLmdldChpZGVudGlmaWVyKSkKICAgICAgICAgc2Vy
dmljZVdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV1RGTW92ZShzY3JpcHQpLCBXVEZNb3Zl
KGltcG9ydGVkU2NyaXB0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGRkYmViNTg1NGFjMjE5
YzE5OGM2YjY3ZDEzZmE1OGU4OTk2OGJiOGQuLmY1NzBjZTQzZDVjMDhjOTA4ODI5MDIyYTE3MjZk
ZDJiOGE5OTBkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rp
b248dm9pZCgpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9E
aXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlw
dCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+
JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJl
YWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDI4ODEyMjhhODI0ZDRkZjQ4OTEw
YmY5YmM3OWUwMDk2MGVhNTNiOWIuLmQwY2UwYTYxZGQyZDAwY2ZkMThiZDY0MWE5YjgyNmEzMDYz
N2NlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHBy
aXZhdGU6CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAogU2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBk
YXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdz
VmFsdWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJv
eHkmIGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25u
ZWN0aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtl
clRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoi
ICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RG
TW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+
aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBNb25vdG9uaWNU
aW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxz
OjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBzY3JpcHRCdWZmZXJUb1N0cmluZyhkYXRhLnNjcmlw
dCksIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBkYXRhLnJlZ2lz
dHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVj
dGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVu
YWJsZWQoKSkKKyAgICA6IFdvcmtlclRocmVhZCh7IGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmlu
ZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNy
ZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGZhbHNlLCBNb25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBkYXRhLndvcmtlclR5cGUsIEZl
dGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5nc1ZhbHVlcyB9LCBkYXRhLnNjcmlw
dC50b1N0cmluZygpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwg
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCks
IGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpj
cmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGRhdGEu
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2pvYkRhdGFJZGVudGlmaWVyKGRhdGEu
am9iRGF0YUlkZW50aWZpZXIpCiAgICAgLCBtX2RhdGEoY3Jvc3NUaHJlYWRDb3B5KGRhdGEpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggYjU3NDgzNTg0YzA1MTk5
ODk5Y2Y2NzU1ZTk3YzkzYmZiMDg2ZTJlNS4uYmVkZjIwMjc5MGJiYzcxZDcyMTVkZWUzZWI5MWY3
MGE0M2I0NWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0y
ODEsNyArMjgxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVBY3RpdmF0
ZUV2ZW50KCkKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRp
ZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFw
PFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQordm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYm
IHNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7
CiAgICAgdGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtzY3JpcHQgPSBXVEZNb3ZlKHNjcmlw
dCksIGltcG9ydGVkU2NyaXB0cyA9IFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKV0oYXV0byYgY29u
dGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCkuZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV1RGTW92ZShzY3JpcHQpLCBXVEZNb3Zl
KGltcG9ydGVkU2NyaXB0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRl
eCA4NWQ4Y2RlNzYyMWI4N2I4MjM5NmRkOGIyMmM1MjI1YWI5YTQ3YTIwLi4zZmUyYjQ0MzVhZjI1
YzAyNDljMWVmY2RlOGM4ODFkYWZiOGZhYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JD
bGllbnREYXRhJiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmly
ZUFjdGl2YXRlRXZlbnQoKTsKLSAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlw
dEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Ym9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKaW5kZXggZDg4NWEyMzcwZjMwNTI1
OTcxMTE3YWI5ODM5M2VlMTU0MDg0NzkxNy4uNTllMDI4ZTkyNjU0M2M0NzFkYzdiNzRlYzdhYjc5
NjVhNjcyNDQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAKQEAgLTQ2OSwxNCArNDY5
LDE0IEBAIGJvb2wgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmRvUHVzaENoYW5nZXMoY29uc3QgVmVj
dG9yPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4mCiAgICAgICAgIEFTU0VSVChtYWluU2NyaXB0
KTsKICAgICAgICAgaWYgKCFtYWluU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVkU2NyaXB0
czsKKyAgICAgICAgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzOwog
ICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkYXRhLnNjcmlwdFJlc291cmNlTWFwKSB7Ci0gICAg
ICAgICAgICBhdXRvIGltcG9ydGVkU2NyaXB0ID0gc2NyaXB0U3RvcmFnZS5zdG9yZShkYXRhLnJl
Z2lzdHJhdGlvbi5rZXksIHBhaXIua2V5LCAqcGFpci52YWx1ZS5zY3JpcHQpOworICAgICAgICAg
ICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUoZGF0YS5yZWdpc3Ry
YXRpb24ua2V5LCBwYWlyLmtleSwgcGFpci52YWx1ZS5zY3JpcHQpOwogICAgICAgICAgICAgQVNT
RVJUKGltcG9ydGVkU2NyaXB0KTsKICAgICAgICAgICAgIGlmIChpbXBvcnRlZFNjcmlwdCkKLSAg
ICAgICAgICAgICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtl
eSksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHQpKTsKKyAgICAgICAgICAgICAgICBpbXBvcnRlZFNj
cmlwdHMuYWRkKGNyb3NzVGhyZWFkQ29weShwYWlyLmtleSksIGNyb3NzVGhyZWFkQ29weShpbXBv
cnRlZFNjcmlwdCkpOwogICAgICAgICB9Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIg
PSBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtYWluU2NyaXB0ID0gbWFpblNjcmlwdC5y
ZWxlYXNlTm9uTnVsbCgpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0
cyldKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkYXRhLnNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtYWluU2NyaXB0ID0gY3Jvc3NUaHJlYWRDb3B5KG1haW5T
Y3JpcHQpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAobV9zdG9yZSkKICAgICAgICAgICAgICAgICBtX3N0b3Jl
LT5kaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV1RG
TW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKICAgICAgICAgfSk7
CkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRS
ZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1dG8gc2Vy
dmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZpZXIsIHNj
cmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBlLCByZWdp
c3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRpb25JZGVu
dGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBkYXRlQ2hl
Y2tUaW1lLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNlV29ya2Vy
RGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSB7IFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlm
aWVyLCBzY3JpcHQucmVsZWFzZU5vbk51bGwoKSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwg
V1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGljeSks
IFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0UmVz
b3VyY2VNYXApIH07CisgICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRl
bnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZN
b3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RG
TW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgV1RGTW92ZShzY3JpcHRSZXNvdXJj
ZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRSZWdpc3RyYXRpb25Ub1N0
b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKaW5kZXggOTIx
MTU2YWMxNjJjNDJiNGNiZDI0ZTIxNWQ3YjIyYWZiMGUwNTc0Yi4uNzRhNWNkMmY0Mzk0Y2IwMzMx
NDRiMzIxMzNhMzAwZmUxYmMxMjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5jcHAKQEAgLTEyOCw3
ICsxMjgsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjphZGRSZWdpc3RyYXRpb25Gcm9tRGF0
YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZAogICAgIG1fc2VydmVyLmFkZFJlZ2lz
dHJhdGlvbkZyb21TdG9yZShXVEZNb3ZlKGRhdGEpKTsKIH0KIAotdm9pZCBSZWdpc3RyYXRpb25T
dG9yZTo6ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwg
SGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3Zv
aWQgUmVnaXN0cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBt
YWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykK
IHsKICAgICBtX3NlcnZlci5kaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV1RGTW92ZShtYWluU2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaAppbmRleCAyNjg3OGNlZWIwZTJmNjA3ZTcwN2U3YmI0MDFm
ZTQyMWNkMTFlOWZlLi5hZjg2ZjI1NDM1NzJhMWEzOGI1MWY5OTQxOTg4MTVhNmY0ZDU2MjVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJh
dGlvblN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25TdG9yZS5oCkBAIC02Myw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZFJlZ2lzdHJhdGlvbkZyb21EYXRhYmFzZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJik7CiAg
ICAgdm9pZCBkYXRhYmFzZUZhaWxlZFRvT3BlbigpOwogICAgIHZvaWQgZGF0YWJhc2VPcGVuZWRB
bmRSZWNvcmRzSW1wb3J0ZWQoKTsKLSAgICB2b2lkIGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQs
IEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpOwor
ICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNjcmlwdEJ1ZmZlciYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+
JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFNXU2VydmVyJiBzZXJ2ZXIoKSB7IHJldHVybiBt
X3NlcnZlcjsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCmluZGV4IDQ0YTM1ODZhMTY3YTI3NzFmMWZl
MmYxMzQ5NzM3NjM3MDU2M2I2ZGMuLmFhN2I3NmQzODdlZmIzYTdmYTgyYTUyNzFiODllMTJhM2Q5
OWI0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTY3JpcHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0
QnVmZmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgotI2lu
Y2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgpAQCAtODAsNyArODAsNyBAQCBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3JpcHRQYXRo
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdAogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVnaXN0cmF0aW9uRGlyZWN0
b3J5KHJlZ2lzdHJhdGlvbktleSksIHNoYTJIYXNoKHNjcmlwdFVSTCkpOwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNv
bnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQorU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3RvcmFnZTo6
c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5
LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTg4LDM1ICs4OCwzNSBAQCBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXkmCiAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOwogCiAgICAgYXV0byBpdGVyYXRlT3Zl
ckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpPiYgd3JpdGVEYXRhKSB7Ci0gICAgICAgIGZvciAoYXV0byBpdCA9IHNjcmlw
dC5iZWdpbigpOyBpdCAhPSBzY3JpcHQuZW5kKCk7ICsraXQpCisgICAgICAgIGZvciAoYXV0byBp
dCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKTsgaXQgIT0gc2NyaXB0LmJ1ZmZlcigpLT5lbmQo
KTsgKytpdCkKICAgICAgICAgICAgIHdyaXRlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihpdC0+c2VnbWVudC0+ZGF0YSgpKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7CiAgICAg
fTsKIAotICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LnNpemUoKSkpIHsKKyAg
ICBpZiAoIXNob3VsZFVzZUZpbGVNYXBwaW5nKHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgpKSkgewog
ICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHNjcmlwdFBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
U2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8gc3RvcmUg
JXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgfQogICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YShbJl0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAgICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSksIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwogICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHNjcmlwdC5j
b3B5KCk7CisgICAgICAgIHJldHVybiBzY3JpcHQ7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJl
IHdlIGRlbGV0ZSB0aGUgZmlsZSBiZWZvcmUgd3JpdGluZyBhcyB0aGVyZSBtYXkgYmUgY29kZSB1
c2luZyBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRoaXMgZmlsZS4KICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKHNjcmlwdFBhdGgpOwotICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0ZW06Om1h
cFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuc2l6ZSgpLCBXVEZNb3ZlKGl0ZXJhdGVPdmVyQnVm
ZmVyQW5kV3JpdGVEYXRhKSk7CisgICAgYXV0byBtYXBwZWRGaWxlID0gRmlsZVN5c3RlbTo6bWFw
VG9GaWxlKHNjcmlwdFBhdGgsIHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgpLCBXVEZNb3ZlKGl0ZXJh
dGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKSk7CiAgICAgaWYgKCFtYXBwZWRGaWxlKSB7CiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnN0
b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBmYWlsZWQi
LCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFdURk1vdmUobWFwcGVkRmlsZSkpOworICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKSB9OwogfQogCi1SZWZQdHI8U2hhcmVk
QnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwpCitTY3Jp
cHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJMKQogewog
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xMjQsNyArMTI0LDcgQEAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2UKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwogICAgIGlmICgh
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoc2NyaXB0UGF0aCwgZmlsZVNpemUpKSB7CiAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6OnJldHJp
ZXZlOiBGYWlsdXJlIHRvIHJldHJpZXZlICVzLCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZSgpIGZh
aWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2aW5nIHRv
byBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCmluZGV4IGE5ZjAxMzBj
NWU1ODY5OWZjMGQyNTdhNmViOTcwNGI0NzU2MDM4NTQuLjRmZjUxNGJiN2ZlNjM0YzEwZWRhMWZm
ZjhkNDM3OTFiZWU4ODk2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMjYsMjAgKzI2LDIxIEBACiAj
cHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpbmNsdWRlIDx3dGYv
RmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTsKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKK2NsYXNzIFNjcmlwdEJ1ZmZlcjsKIAogY2xhc3MgU1dTY3JpcHRTdG9yYWdlIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTV1Nj
cmlwdFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0
IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTaGFyZWRCdWZmZXImIHNjcmlwdCk7Ci0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmV0cmlldmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKKyAgICBTY3JpcHRCdWZmZXIgc3RvcmUoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25z
dCBTY3JpcHRCdWZmZXImKTsKKyAgICBTY3JpcHRCdWZmZXIgcmV0cmlldmUoY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFVSTCYgc2NyaXB0VVJMKTsKICAgICB2b2lk
IGNsZWFyKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5j
cHAKaW5kZXggZGNlMjAxNmZjMTUzODMwMGZmYWExMTc1OWVhZTMzNDA4YzRmOWU1My4uYjBjMjA4
NzliNjIzYmQ5Y2VhNjRjODg5OGYwM2Q2MThkODc1ZTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTE3Niw3ICsxNzYs
NyBAQCB2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiYgZGF0YSkKICAgICB9KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6ZGlkU2F2
ZVdvcmtlclNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkws
IFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3ZvaWQgU1dTZXJ2ZXI6
OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVS
TCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykKIHsKICAgICBpZiAoYXV0byB3b3Jr
ZXIgPSB3b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKICAgICAgICAgd29ya2Vy
LT5kaWRTYXZlU2NyaXB0c1RvRGlzayhXVEZNb3ZlKG1haW5TY3JpcHQpLCBXVEZNb3ZlKGltcG9y
dGVkU2NyaXB0cykpOwpAQCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgU1dTZXJ2ZXI6OnJlbW92ZUNs
aWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgU2Vy
CiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKIHsKLSAg
ICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0
YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBzdHJpbmdUb1NjcmlwdEJ1ZmZlcihzY3JpcHQpLCBjZXJ0aWZpY2F0ZUlu
Zm8sIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFs
c2UsIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250ZXh0
RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0
cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIFNjcmlw
dEJ1ZmZlciB7IHNjcmlwdCB9LCBjZXJ0aWZpY2F0ZUluZm8sIGNvbnRlbnRTZWN1cml0eVBvbGlj
eSwgcmVmZXJyZXJQb2xpY3ksIHVybCwgdHlwZSwgZmFsc2UsIFdURk1vdmUoc2NyaXB0UmVzb3Vy
Y2VNYXApIH0pOwogfQogCiB2b2lkIFNXU2VydmVyOjp0cnlJbnN0YWxsQ29udGV4dERhdGEoU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA3OTZiZTg1ZTNlNTQ3NzI2ODZlOTU0
ODA4NDVmMDQ1NDhjNWQ5NTAxLi5jMTY2ODA1ZDgxZTg0MDZmNWY5M2JhZTVmMGE0NDc0MThiOGI0
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCkBAIC0xOTAsNyArMTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb2x2ZVJlZ2lz
dHJhdGlvblJlYWR5UmVxdWVzdHMoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKIAogICAgIHZvaWQg
YWRkUmVnaXN0cmF0aW9uRnJvbVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmKTsKLSAg
ICB2b2lkIGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpOworICAgIHZvaWQgZGlkU2F2ZVdvcmtlclNj
cmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEJ1ZmZlciYmIG1haW5T
Y3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKICAg
ICB2b2lkIHJlZ2lzdHJhdGlvblN0b3JlSW1wb3J0Q29tcGxldGUoKTsKICAgICB2b2lkIHJlZ2lz
dHJhdGlvblN0b3JlRGF0YWJhc2VGYWlsZWRUb09wZW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAK
aW5kZXggNWNhMjUyNjkxMTQ1M2RiMDhmMWY4ZjI4MzJkYmM0MDQ1ZTY0YWE2NS4uNjI3YWEwOWIx
Y2RiYjdkNGMyNmZmOGEzMThhYzY1MTY2NDcxMzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlz
aGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWwKICAgICAvLyBJZiBuZXdl
c3RXb3JrZXIgaXMgbm90IG51bGwsIG5ld2VzdFdvcmtlcidzIHNjcmlwdCB1cmwgZXF1YWxzIGpv
YidzIHNjcmlwdCB1cmwgd2l0aCB0aGUgZXhjbHVkZSBmcmFnbWVudHMKICAgICAvLyBmbGFnIHNl
dCwgYW5kIHNjcmlwdCdzIHNvdXJjZSB0ZXh0IGlzIGEgYnl0ZS1mb3ItYnl0ZSBtYXRjaCB3aXRo
IG5ld2VzdFdvcmtlcidzIHNjcmlwdCByZXNvdXJjZSdzIHNvdXJjZQogICAgIC8vIHRleHQsIHRo
ZW46Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIGpvYi5zY3JpcHRVUkwpICYmIG5ld2VzdFdv
cmtlci0+dHlwZSgpID09IGpvYi53b3JrZXJUeXBlICYmIHJlc3VsdC5zY3JpcHQgPT0gc2NyaXB0
QnVmZmVyVG9TdHJpbmcobmV3ZXN0V29ya2VyLT5zY3JpcHQoKSkgJiYgZG9DZXJ0aWZpY2F0ZXNN
YXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNlcnRpZmljYXRlSW5m
bygpKSkgeworICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2NyaXB0VVJMKSAmJiBuZXdl
c3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1bHQuc2NyaXB0ID09IG5l
d2VzdFdvcmtlci0+c2NyaXB0KCkudG9TdHJpbmcoKSAmJiBkb0NlcnRpZmljYXRlc01hdGNoKHJl
c3VsdC5jZXJ0aWZpY2F0ZUluZm8sIG5ld2VzdFdvcmtlci0+Y2VydGlmaWNhdGVJbmZvKCkpKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICIlcCAtIFNXU2VydmVySm9iUXVl
dWU6OnNjcmlwdEZldGNoRmluaXNoZWQsIHNjcmlwdCBhbmQgY2VydGlmaWNhdGUgYXJlIG1hdGNo
aW5nIGZvciByZWdpc3RyYXRpb25JRD0lbGx1IiwgdGhpcywgcmVnaXN0cmF0aW9uLT5pZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CiAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm9uIGNsYXNzaWMgc2Ny
aXB0cywgY2hlY2sgdGhlIHNjcmlwdOKAmXMgbW9kdWxlIHJlY29yZCdzIFtbRUNNQVNjcmlwdENv
ZGVdXS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggZTE4YTJk
MWJiOTEyOTlmYzYwZjBjZTM2M2RhMGNjMmFiNTRhNWVjNy4uM2EzZjdjMDAwY2Y3Yzg3M2M3NGFi
OGJiMzdmNzllNTBiOTYyZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3Rh
bGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBm
aXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNjcmlwdEJ1ZmZl
ciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1h
dGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IGY5
MGI4ZjI3OTIwYzQ5MDMxYTE3YjQ4ZjZhMzM5YTU5MWIxNDJjMmEuLjA4ZGIwNjIzYzU0OTFkMTE1
NTYyNmVmNTczODZhNzUwMzc1M2JmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVu
dGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmCiB9CiAKIC8vIEZJWE1FOiBVc2Ugci12YWx1ZSBy
ZWZlcmVuY2VzIGZvciBzY3JpcHQgYW5kIGNvbnRlbnRTZWN1cml0eVBvbGljeQotU1dTZXJ2ZXJX
b3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2ZXIsIFNXU2VydmVyUmVnaXN0cmF0
aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9saWN5LCBT
dHJpbmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJjZU1hcCkKK1NXU2VydmVyV29ya2VyOjpT
V1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVyLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVn
aXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgOiBtX3NlcnZlcihtYWtl
V2Vha1B0cihzZXJ2ZXIpKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkocmVnaXN0cmF0aW9uLmtl
eSgpKQogICAgICwgbV9yZWdpc3RyYXRpb24obWFrZVdlYWtQdHIocmVnaXN0cmF0aW9uKSkKQEAg
LTIzOCwyMSArMjM4LDIxIEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291cmNl
KFVSTCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvCiAgICAgbV9zY3JpcHRS
ZXNvdXJjZU1hcC5zZXQoV1RGTW92ZSh1cmwpLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCi12b2lk
IFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVyPiYm
IG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpCit2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3Jp
cHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9y
dGVkU2NyaXB0cykKIHsKICAgICAvLyBTZW5kIG1tYXAnZCB2ZXJzaW9uIG9mIHRoZSBzY3JpcHRz
IHRvIHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3Mgc28gd2UgY2FuIHNhdmUgZGlydHkgbWVtb3J5
LgogICAgIGlmIChhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHRoaXMtPmNvbnRleHRDb25uZWN0
aW9uKCkpCiAgICAgICAgIGNvbnRleHRDb25uZWN0aW9uLT5kaWRTYXZlU2NyaXB0c1RvRGlzayhp
ZGVudGlmaWVyKCksIG1haW5TY3JpcHQsIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICAvLyBUaGUg
c2NyaXB0cyB3ZXJlIHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUg
bW1hcCdkIHZlcnNpb24gdG8gc2F2ZSBkaXJ0eSBtZW1vcnkuCi0gICAgQVNTRVJUKG1haW5TY3Jp
cHQuZ2V0KCkgPT0gbV9zY3JpcHQuZ2V0KCkpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUg
dGhlIHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KKyAgICBBU1NFUlQobWFpblNjcmlwdCA9PSBtX3Nj
cmlwdCk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRp
Y2FsLgogICAgIG1fc2NyaXB0ID0gV1RGTW92ZShtYWluU2NyaXB0KTsKICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKICAgICAgICAgYXV0byBpdCA9IG1fc2NyaXB0UmVz
b3VyY2VNYXAuZmluZChwYWlyLmtleSk7CiAgICAgICAgIEFTU0VSVChpdCAhPSBtX3NjcmlwdFJl
c291cmNlTWFwLmVuZCgpKTsKICAgICAgICAgaWYgKGl0ID09IG1fc2NyaXB0UmVzb3VyY2VNYXAu
ZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQVNTRVJUKCppdC0+dmFsdWUu
c2NyaXB0ID09ICpwYWlyLnZhbHVlKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBz
Y3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgICAgIEFTU0VSVChpdC0+dmFsdWUuc2NyaXB0ID09
IHBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJl
IGlkZW50aWNhbC4KICAgICAgICAgaXQtPnZhbHVlLnNjcmlwdCA9IFdURk1vdmUocGFpci52YWx1
ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IGM0NWRhZGJjYWI4MTk3NmI3NmYwYmU1MzE0
ZjNiNzFmNzdiNmIyOTEuLmY0YzJjM2I3NTZhOWVmOGYxZDBmNWQzNjJmMGFlYjk4NjBlYTg4YjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKQEAgLTgwLDcgKzgwLDcgQEAgcHVibGljOgogICAgIFNXU2VydmVyKiBz
ZXJ2ZXIoKSB7IHJldHVybiBtX3NlcnZlci5nZXQoKTsgfQogICAgIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
aXN0cmF0aW9uS2V5OyB9CiAgICAgY29uc3QgVVJMJiBzY3JpcHRVUkwoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEuc2NyaXB0VVJMOyB9Ci0gICAgU2hhcmVkQnVmZmVyJiBzY3JpcHQoKSBjb25zdCB7
IHJldHVybiBtX3NjcmlwdDsgfQorICAgIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2NyaXB0KCkgY29u
c3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KICAgICBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRp
ZmljYXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgV29y
a2VyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnR5cGU7IH0KIApAQCAtMTAyLDcg
KzEwMiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4gZmluZENsaWVudEJ5SWRlbnRpZmllcihjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYpIGNvbnN0OwogICAgIHZvaWQgbWF0Y2hBbGwoY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxD
YWxsYmFjayYmKTsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKFVSTCYmLCBTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JiYpOwotICAgIHZvaWQgZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3Jp
cHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgc2tpcFdhaXRpbmcoKTsK
ICAgICBib29sIGlzU2tpcFdhaXRpbmdGbGFnU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1NraXBX
YWl0aW5nRmxhZ1NldDsgfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZEZhaWxIZWFydEJlYXRDaGVjaygpOwogCiBwcml2YXRlOgotICAgIFNXU2VydmVyV29ya2VyKFNX
U2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBTaGFyZWRCdWZmZXIm
IHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJik7CisgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXIm
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYs
IGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQ+JiYpOwogCiAgICAgdm9pZCBjYWxsV2hlbkFjdGl2YXRlZEhhbmRsZXIo
Ym9vbCBzdWNjZXNzKTsKIApAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKICAgICBXZWFrUHRyPFNX
U2VydmVyUmVnaXN0cmF0aW9uPiBtX3JlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2VyRGF0
YSBtX2RhdGE7Ci0gICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9zY3JpcHQ7CisgICAgU2NyaXB0QnVm
ZmVyIG1fc2NyaXB0OwogICAgIENlcnRpZmljYXRlSW5mbyBtX2NlcnRpZmljYXRlSW5mbzsKICAg
ICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3k7CiAgICAgU3RyaW5nIG1fcmVmZXJyZXJQb2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDU1MzRiOGQ5YjQ0ZmE5
ZGM2MDlkOWY0YzdiNDNiNTMxZDE1MDlmZDIuLjRmMThhMzU3OGE4MThjYTEyYTAzYjdmOTBlOGY2
NTk1ODUyN2Q5NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCkBAIC0xMDcsMTkgKzEwNywxOCBAQCB2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpU
ZXJtaW5hdGVXb3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXImIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYg
aW1wb3J0ZWRTY3JpcHRzKQordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRp
ZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkws
IFNjcmlwdEJ1ZmZlcj4mIGltcG9ydGVkU2NyaXB0cykKIHsKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICBhdXRvIHNjcmlwdEhhbmRsZSA9IElQ
Qzo6dHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoc2NyaXB0KTsKLSAgICBIYXNo
TWFwPFVSTCwgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZT4gaW1wb3J0ZWRTY3JpcHRIYW5kbGVz
OworICAgIC8vIFNlbmQgZmlsZS1tYXBwZWQgU2NyaXB0QnVmZmVycyBvdmVyIHRvIHRoZSBTZXJ2
aWNlV29ya2VyIHByb2Nlc3Mgc28gdGhhdCBpdCBjYW4gcmVwbGFjZSBpdHMgaGVhcC1hbGxvY2F0
ZWQgY29waWVzIGFuZCBzYXZlIG9uIGRpcnR5IG1lbW9yeS4KKyAgICBhdXRvIHNjcmlwdFRvU2Vu
ZCA9IHNjcmlwdC5jb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50KCkgPyBzY3JpcHQgOiBT
Y3JpcHRCdWZmZXIoKTsKKyAgICBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiBpbXBvcnRlZFNj
cmlwdHNUb1NlbmQ7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7Ci0g
ICAgICAgIGF1dG8gaGFuZGxlID0gSVBDOjp0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhh
bmRsZSgqcGFpci52YWx1ZSk7Ci0gICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzLmFkZChwYWlyLmtl
eSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICAgICAgaWYgKHBhaXIudmFsdWUuY29udGFpbnNTaW5n
bGVGaWxlTWFwcGVkU2VnbWVudCgpKQorICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzVG9TZW5k
LmFkZChwYWlyLmtleSwgcGFpci52YWx1ZSk7CiAgICAgfQotICAgIGlmICghc2NyaXB0SGFuZGxl
LmlzTnVsbCgpIHx8ICFpbXBvcnRlZFNjcmlwdEhhbmRsZXMuaXNFbXB0eSgpKQotICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RGlkU2F2ZVNjcmlw
dHNUb0Rpc2sgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2NyaXB0SGFuZGxlLCBpbXBvcnRl
ZFNjcmlwdEhhbmRsZXMgfSk7CisgICAgaWYgKHNjcmlwdFRvU2VuZCB8fCAhaW1wb3J0ZWRTY3Jp
cHRzVG9TZW5kLmlzRW1wdHkoKSkKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkRpZFNhdmVTY3JpcHRzVG9EaXNrIHsgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIHNjcmlwdFRvU2VuZCwgaW1wb3J0ZWRTY3JpcHRzVG9TZW5kIH0pOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oc2NyaXB0KTsKICAgICBVTlVTRURfUEFSQU0oaW1wb3J0ZWRTY3Jp
cHRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAppbmRleCA2OGY3OTI1MzY3ZDI1ZmM5M2U3NThmNGIwMDdmNTgwNDNiYzcxMjIzLi4wMGU5YzIx
ZTg2ZDRmOWUyZTlmNzdiMDRmMzc2Yzg0YWU4YWYwNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04OCw3ICs4OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7Ci0gICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykgZmluYWw7CisgICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyJiwgY29uc3QgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZl
cj4mIGltcG9ydGVkU2NyaXB0cykgZmluYWw7CiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mLCBib29sIGhhc1NlY3VyaXR5RXJyb3Ip
IGZpbmFsOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mKSBm
aW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKaW5kZXggMTM3NGUxNThjMmVlMGY5MGZiZGUyYmQ3ZDE4OGM0YzA1MjI5NDZkNy4uMjU1YTJj
YmM2Yzc3Y2VmMWU2MDcwZWE0MjBmNmJkZTkwYjI0MGE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisj
aW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CkBAIC03
Myw2ICs3NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdEJ1ZmZlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWludHMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWFyY2hQb3B1
cE1lbnUuaD4KQEAgLTI4MjksMTQyICsyODMxLDYgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNlcnZp
Y2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2UK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHZvaWQgZW5jb2RlU2VydmljZVdvcmtlckNv
bnRleHREYXRhU2NyaXB0KEVuY29kZXImIGVuY29kZXIsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQot
ewotI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotICAg
IGF1dG8gaGFuZGxlID0gdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoc2NyaXB0
KTsKLSAgICBib29sIGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUgPSAhaGFuZGxlLmlzTnVsbCgp
OwotICAgIGVuY29kZXIgPDwgaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKLSAgICBpZiAoaXNT
aGFyZWFibGVSZXNvdXJjZUhhbmRsZSkgewotICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIGVuY29kZXIgPDwgbWFrZVJlZihzY3Jp
cHQpOwotfQotCi1zdGF0aWMgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IGRlY29kZVNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChEZWNvZGVyJiBkZWNvZGVyKQotewotI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotICAgIE9wdGlvbmFsPGJv
b2w+IGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7Ci0gICAgZGVjb2RlciA+PiBpc1NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlOwotICAgIGlmICghaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoKmlzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUpIHsKLSAgICAgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBoYW5kbGU7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSB8fCBoYW5kbGUuaXNOdWxsKCkpCi0gICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICBhdXRvIGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKLSAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCk7Ci0gICAgfQotI2VuZGlmCi0gICAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+
IHNjcmlwdDsKLSAgICBkZWNvZGVyID4+IHNjcmlwdDsKLSAgICByZXR1cm4gc2NyaXB0OwotfQot
Ci12b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE6OkltcG9ydGVkU2NyaXB0JiBpbXBvcnRlZFNjcmlwdCkKLXsKLSAgICBlbmNvZGVTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGFTY3JpcHQoZW5jb2RlciwgKmltcG9ydGVkU2NyaXB0LnNjcmlw
dCk7Ci0gICAgZW5jb2RlciA8PCBpbXBvcnRlZFNjcmlwdC5yZXNwb25zZVVSTCA8PCBpbXBvcnRl
ZFNjcmlwdC5taW1lVHlwZTsKLX0KLQotT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRh
OjpJbXBvcnRlZFNjcmlwdD4gQXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBz
Y3JpcHQgPSBkZWNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERhdGFTY3JpcHQoZGVjb2Rlcik7Ci0g
ICAgaWYgKCFzY3JpcHQpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRp
b25hbDxVUkw+IHJlc3BvbnNlVVJMOwotICAgIGRlY29kZXIgPj4gcmVzcG9uc2VVUkw7Ci0gICAg
aWYgKCFyZXNwb25zZVVSTCkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPFN0cmluZz4gbWltZVR5cGU7Ci0gICAgZGVjb2RlciA+PiBtaW1lVHlwZTsKLSAgICBp
ZiAoIW1pbWVUeXBlKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgcmV0dXJu
IHt7Ci0gICAgICAgIFdURk1vdmUoKnNjcmlwdCksCi0gICAgICAgIFdURk1vdmUoKnJlc3BvbnNl
VVJMKSwKLSAgICAgICAgV1RGTW92ZSgqbWltZVR5cGUpCi0gICAgfX07Ci19Ci0KLXZvaWQgQXJn
dW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhKQotewotICAgIGVuY29k
ZVNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChlbmNvZGVyLCBkYXRhLnNjcmlwdCk7Ci0g
ICAgZW5jb2RlciA8PCBkYXRhLmpvYkRhdGFJZGVudGlmaWVyIDw8IGRhdGEucmVnaXN0cmF0aW9u
IDw8IGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgZGF0YS5jb250ZW50U2VjdXJpdHlQ
b2xpY3kgPDwgZGF0YS5yZWZlcnJlclBvbGljeQotICAgICAgICA8PCBkYXRhLnNjcmlwdFVSTCA8
PCBkYXRhLndvcmtlclR5cGUgPDwgZGF0YS5sb2FkZWRGcm9tRGlzayA8PCBkYXRhLnNjcmlwdFJl
c291cmNlTWFwIDw8IGRhdGEuY2VydGlmaWNhdGVJbmZvOwotfQotCi1PcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE+IEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRh
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgYXV0byBzY3JpcHQgPSBkZWNvZGVT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGFTY3JpcHQoZGVjb2Rlcik7Ci0gICAgaWYgKCFzY3JpcHQp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxPcHRpb25hbDxT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+PiBqb2JEYXRhSWRlbnRpZmllcjsKLSAgICBk
ZWNvZGVyID4+IGpvYkRhdGFJZGVudGlmaWVyOwotICAgIGlmICgham9iRGF0YUlkZW50aWZpZXIp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YT4gcmVnaXN0cmF0aW9uOwotICAgIGRlY29kZXIgPj4gcmVnaXN0
cmF0aW9uOwotICAgIGlmICghcmVnaXN0cmF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgaWYgKCFzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyBjb250ZW50U2VjdXJpdHlQb2xpY3k7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotCi0gICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVmZXJyZXJQb2xpY3kpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgVVJMIHNjcmlwdFVSTDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFVSTCkp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBXb3JrZXJUeXBlIHdvcmtlclR5
cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZSh3b3JrZXJUeXBlKSkKLSAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKLQotICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0KLSAgICBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRS
ZXNvdXJjZU1hcCkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25h
bDxDZXJ0aWZpY2F0ZUluZm8+IGNlcnRpZmljYXRlSW5mbzsKLSAgICBkZWNvZGVyID4+IGNlcnRp
ZmljYXRlSW5mbzsKLSAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykKLSAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZNb3ZlKCpqb2JEYXRhSWRl
bnRpZmllciksCi0gICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvbiksCi0gICAgICAgIFdURk1v
dmUoKnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwKLSAgICAgICAgV1RGTW92ZSgqc2NyaXB0KSwK
LSAgICAgICAgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZvKSwKLSAgICAgICAgV1RGTW92ZShjb250
ZW50U2VjdXJpdHlQb2xpY3kpLAotICAgICAgICBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwKLSAg
ICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAotICAgICAgICB3b3JrZXJUeXBlLAotICAgICAgICBs
b2FkZWRGcm9tRGlzaywKLSAgICAgICAgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkKLSAgICB9
fTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtMzIwNCwx
NSArMzA3MCwxMiBAQCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZQogfQogCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCi1TaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKFNoYXJlZEJ1ZmZlciYg
YnVmZmVyKQorc3RhdGljIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGUoY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQpCiB7Ci0gICAg
aWYgKCFidWZmZXIuaGFzT25lU2VnbWVudCgpKQotICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSB7IH07Ci0KLSAgICBhdXRvJiBzZWdtZW50ID0gYnVmZmVyLmJlZ2luKCkt
PnNlZ21lbnQ7Ci0gICAgaWYgKCFzZWdtZW50LT5jb250YWluc01hcHBlZEZpbGVEYXRhKCkpCisg
ICAgaWYgKCFzY3JpcHQuY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2VnbWVudCgpKQogICAgICAg
ICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CiAKKyAgICBhdXRvJiBzZWdt
ZW50ID0gc2NyaXB0LmJ1ZmZlcigpLT5iZWdpbigpLT5zZWdtZW50OwogICAgIGF1dG8gc2hhcmVk
TWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQt
PmRhdGEoKSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSk7CiAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgIHJldHVybiBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlIHsgfTsKQEAgLTMyMjUsOCArMzA4OCw1MSBAQCBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKFNoYXJlZEJ1
ZmZlciYgYnVmZgogICAgIHNoYXJlYWJsZVJlc291cmNlLT5jcmVhdGVIYW5kbGUoc2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUpOwogICAgIHJldHVybiBzaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKIH0K
Kworc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlU2NyaXB0QnVm
ZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZGxlKSB8fCBoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CisgICAg
aWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIFdl
YkNvcmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9OworfQorI2VuZGlmCisKK3Zv
aWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6U2NyaXB0QnVmZmVyJiBzY3JpcHQpCit7CisjaWYgRU5B
QkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgYXV0byBoYW5k
bGUgPSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShzY3JpcHQpOworICAgIGJv
b2wgaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSA9ICFoYW5kbGUuaXNOdWxsKCk7CisgICAgZW5j
b2RlciA8PCBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlOworICAgIGlmIChpc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlKSB7CisgICAgICAgIGVuY29kZXIgPDwgaGFuZGxlOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIHNjcmlw
dC5idWZmZXIoKSk7Cit9CisKK09wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
K3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKKyAg
ICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlOworICAgIGRlY29kZXIg
Pj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCppc1NoYXJl
YWJsZVJlc291cmNlSGFuZGxlKQorICAgICAgICByZXR1cm4gZGVjb2RlU2NyaXB0QnVmZmVyQXNT
aGFyZWFibGVSZXNvdXJjZUhhbmRsZShkZWNvZGVyKTsKICNlbmRpZgogCisgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIs
IGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyIHsgV1RGTW92ZShidWZmZXIpIH07Cit9CisKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2UmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGYxYmEwMDY3NjczOTRmYzk1
MmU3ZmJlNWRkNjhmYjAzNDZlYmI5NDguLjQ1ZDYxZjcwNWM4ODc1YmFjMWEyODljNWQwM2VhZDhh
ODg0YzViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC0yNiw3ICsyNiw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFyZ3VtZW50
Q29kZXJzLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0F1dG9wbGF5RXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC00Miw3ICs0MSw2
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdNb2RlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVWYWx1ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Xb3JrZXJUeXBlLmg+CkBAIC0xMjIsNiArMTIwLDcgQEAgY2xhc3MgUmVnaW9uOwogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitjbGFzcyBTY3JpcHRCdWZmZXI7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFNwcmluZ1RpbWluZ0Z1bmN0aW9uOwpAQCAtNzM3LDE2
ICs3MzYsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+IHsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVU
VVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJ
ZGVudGlmaWVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJik7Ci0gICAg
c3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gZGVjb2Rl
KERlY29kZXImKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiBkZWNvZGUoRGVjb2RlciYp
OwotfTsKLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtODA4LDEx
ICs3OTcsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JF
U09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLS8vIElmIHRoZSBTaGFyZWRCdWZmZXIgY29udGFp
bnMgYSBzaW5nbGUgc2VnbWVudCBhbmQgdGhlIHNlZ21lbnQgaXMgTWFwcGVkRmlsZURhdGEsIHRo
ZW4gY29udmVydCBpdCBpbnRvCi0vLyBhIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBzbyB0aGF0
IGl0IGNhbiBiZSBzZW50IG92ZXIgSVBDIGFuZCBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3Mu
Ci1XZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7Ci0jZW5kaWYKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsK
KyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiBkZWNvZGUoRGVjb2Rl
ciYpOworfTsKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGE0ZjM0MmIxZWVlZmQ1MDhh
OGNhNzZiNDZjMGU2MzljMWUwYjhlOGMuLjUyYzFiZWZlMzEzMzA1MjFiMGQyZTE3MzYyNGY0MWJi
ZTlkMzBiYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTI2Mywy
MiArMjYzLDkgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dGVybWluYXRl
V29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW4KIH0KIAogI2lmIEVOQUJMRShTSEFS
RUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYg
c2NyaXB0SGFuZGxlLCBjb25zdCBIYXNoTWFwPFVSTCwgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZT4mIGltcG9ydGVkU2NyaXB0SGFuZGxlcykKLXsKLSAgICBhdXRvIHRvU2hhcmVkQnVmZmVyID0g
W10oY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKSAtPiBSZWZQdHI8U2hh
cmVkQnVmZmVyPiB7Ci0gICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIGlmICghc2hhcmVkQnVmZmVyKQotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzazogRmFpbGVkIHRvIHdyYXAgU2hhcmVhYmxl
UmVzb3VyY2UgaGFuZGxlIGluIGEgU2hhcmVkQnVmZmVyIik7Ci0gICAgICAgIHJldHVybiBzaGFy
ZWRCdWZmZXI7Ci0gICAgfTsKLSAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
IGltcG9ydGVkU2NyaXB0czsKLSAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdEhh
bmRsZXMpIHsKLSAgICAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gdG9TaGFyZWRCdWZmZXIo
cGFpci52YWx1ZSkpCi0gICAgICAgICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKHBhaXIua2V5LCBX
VEZNb3ZlKHNoYXJlZEJ1ZmZlcikpOwotICAgIH0KLSAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5kaWRTYXZlU2NyaXB0c1RvRGlzayhpZGVudGlmaWVyLCB0b1NoYXJlZEJ1ZmZlcihz
Y3JpcHRIYW5kbGUpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOwordm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYgc2NyaXB0LCBIYXNo
TWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5kaWRTYXZlU2NyaXB0c1RvRGlzayhpZGVudGlmaWVyLCBX
VEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMTFmOWUwOWZkMzNkNTkwZmYxMzcz
YjYyZjMzYmMwY2QwZTk2OWExZi4uNzY2MjE4OTUzMjgwYWNhMWZlZDBiMGU2OTEwOGQ5YmM4Nzg5
ZGRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC05Miw3ICs5Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIHNj
cmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+JiBpbXBv
cnRlZFNjcmlwdHMpOworICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVS
TCwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAjZW5kaWYKICAg
ICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmLCBi
b29sIGhhc1NlY3VyaXR5RXJyb3IpOwogICAgIHZvaWQgbWF0Y2hBbGxDb21wbGV0ZWQodWludDY0
X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggYWU1NzE2YjlhZjIxNGVjOTBmZDg5MzcwZmNmZGU5YmVhOGVkYWQw
Yy4uZmEyZmEwYjFkMmJjZmZlYTljYTYyNmY2N2U5MmZlMjA5ODRlNTI2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMyLDcgKzMyLDcg
QEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRl
ZCB7CiAgICAgRmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllcikKICAgICBUZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAm
JiBQTEFURk9STShDT0NPQSkKLSAgICBEaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViS2l0OjpTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYktpdDo6U2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZT4gaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICBEaWRTYXZlU2NyaXB0
c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgV2ViQ29yZTo6U2NyaXB0QnVmZmVyIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFdlYkNv
cmU6OlNjcmlwdEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzKTsKICNlbmRpZgogICAgIEZpbmRDbGll
bnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmll
ciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wg
aGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFs
bFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+IGNsaWVudHNEYXRhKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425050</attachid>
            <date>2021-04-02 13:41:54 -0700</date>
            <delta_ts>2021-04-02 14:53:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224092-20210402134154.patch</filename>
            <type>text/plain</type>
            <size>77043</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBlYzg2MTA4OTRhYzYz
MGFkMGQ0YTIwNTBlMDc4OTJmYTEyMzIwOC4uNTU5NGZhMDViOTZiNzhiNjMwOGYzMDcxZWU3ZTVi
N2M5MDkxZTJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDIxLTA0LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcmlwdEJ1
ZmZlciBjbGFzcyB0byB3cmFwIFNoYXJlZEJ1ZmZlciBjb250YWluaW5nIGEgc2NyaXB0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwOTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpIGFuZCBHZW9mZiBHYXJlbi4KKworICAgICAg
ICBJbnRyb2R1Y2UgU2NyaXB0QnVmZmVyIGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNvbnRh
aW5pbmcgYSBzY3JpcHQuIFdlIHN0YXJ0ZWQgdXNpbmcgU2hhcmVkQnVmZmVyIHRvIHJlcHJlc2Vu
dAorICAgICAgICB3b3JrZXIgc2NyaXB0cyBpbnN0ZWFkIG9mIFN0cmluZywgc28gdGhhdCB0aGV5
IGNhbiBob2xkIGZpbGUgbWFwcGVkIGRhdGEgYW5kIGJlIHNoYXJlZCBhY3Jvc3MgcHJvY2Vzc2Vz
LgorICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2NyaXB0QnVmZmVyIHRvIHdy
YXAgdGhvc2UgU2hhcmVkQnVmZmVycy4gVGhlIHR5cGUgbWFrZXMgaXQgY2xlYXJlciB3aGF0IHR5
cGUgb2YKKyAgICAgICAgZGF0YSB3ZSdyZSBkZWFsaW5nIHdpdGguIFRoZSBoZWxwZXIgZnVuY3Rp
b25zIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFN0cmluZyBhbmQgU2hhcmVkQnVmZmVyIGNhbiBu
b3cgc2ltcGx5CisgICAgICAgIGJlIG1lbWJlciBmdW5jdGlvbnMgb24gU2NyaXB0QnVmZmVyLiBU
aGlzIGFsc28gc2ltcGxpZmllcyBJUEMgY29kZS4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRk
IG5ldyBTY3JpcHRCdWZmZXIgY2xhc3MgdG8gcHJvamVjdCBmaWxlcy4KKworICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQWdlbnQ6OmdldEluaXRpYWxpemF0aW9uSW5mbyk6CisgICAg
ICAgIFVzZSBTY3JpcHRCdWZmZXI6OnRvU3RyaW5nKCkgaW5zdGVhZCBvZiBzY3JpcHRCdWZmZXJU
b1N0cmluZygpLgorCisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6U2NyaXB0QnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRTZWdtZW50IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHdvcmtlcnMvU2NyaXB0
QnVmZmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpTY3JpcHRC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpidWZmZXIgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjppc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0QnVmZmVyOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAg
ICAgTmV3IFNjcmlwdEJ1ZmZlciBjbGFzcyB0aGF0IHdyYXBzIGEgU2hhcmVkQnVmZmVyIHJlcHJl
c2VudGF0aW9uIG9mIGEgc2NyaXB0LgorICAgICAgICBUaGlzIGNsYXNzIGhlbHBzIG1ha2UgaXQg
Y2xlYXIgd2hhdCBkYXRhIHdlJ3JlIGRlYWxpbmcgd2l0aC4gSXQgYWxzbyBmYWNpbGl0YXRlcwor
ICAgICAgICBjb252ZXJzaW9uIHRvIGFuZCBmcm9tIGEgU3RyaW5nIHdoZW4gbmVlZGVkLiBUaGUg
Y2xhc3MgYWxzbyBoYXMgaXRzIG93biBJUEMKKyAgICAgICAgY29kZXIgYXQgV2ViS2l0IGxheWVy
IHRvIGVuY29kZSB0aGUgc2NyaXB0IGFzIGEgU2hhcmVhYmxlUmVzb3VyY2Ugd2hlbiBmaWxlCisg
ICAgICAgIG1hcHBlZC4KKworICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3Vz
bHkpOgorICAgICAgICBVc2UgU2NyaXB0QnVmZmVyOjp0b1N0cmluZygpIGluc3RlYWQgb2Ygc2Ny
aXB0QnVmZmVyVG9TdHJpbmcoKS4KKyAgICAgICAgQW5kIHVzZSBTdHJpbmdCdWZmZXIgY29uc3Ry
dWN0b3IgdGhhdCB0YWtlcyBhIFN0cmluZyBpbnN0ZWFkIG9mIHN0cmluZ1RvU2NyaXB0QnVmZmVy
KCkuCisKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpkZWNv
ZGUpOgorICAgICAgICAtIFVzZSBTY3JpcHRCdWZmZXIgaW5zdGVhZCBvZiBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBmb3Igc2NyaXB0cy4KKyAgICAgICAgLSBEcm9wIHNjcmlwdEJ1ZmZlclRvU3RyaW5n
KCkgJiBzdHJpbmdUb1NjcmlwdEJ1ZmZlcigpIGFzIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQu
CisgICAgICAgIC0gTW92ZSBJUEMgY29kZXJzIGZvciBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
YmFjayBmcm9tIFdlYkNvcmVBcmd1bWVudENvZGVycyBiYWNrCisgICAgICAgICAgdG8gdGhlIFdl
YkNvcmUgY2xhc3MsIG5vdyB0aGF0IHRoZSBjb2RlcnMgbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3
aXRoIFNoYXJlYWJsZVJlc291cmNlCisgICAgICAgICAgZGlyZWN0bHkuIFdlIG5vdyBlbmNvZGUg
LyBkZWNvZGUgU2NyaXB0QnVmZmVyIG9iamVjdHMgYW5kIGl0cyBjb2RlciB0YWtlcyBjYXJlIG9m
CisgICAgICAgICAgdXNpbmcgYSBTaGFyZWFibGVSZXNvdXJjZSB3aGVuZXZlciBwb3NzaWJsZS4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpkaWRTYXZlU2Ny
aXB0c1RvRGlzayk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6ZGlkU2F2ZVNj
cmlwdHNUb0Rpc2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNl
cnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25TdG9yZS5oOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2NyaXB0U3RvcmFnZTo6c3RvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpkaWRTYXZlV29y
a2VyU2NyaXB0c1RvRGlzayk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlV29y
a2VyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6c2NyaXB0IGNvbnN0KToKKyAgICAgICAgVXNlIFNj
cmlwdEJ1ZmZlciBpbnN0ZWFkIG9mIFNoYXJlZEJ1ZmZlci4KKwogMjAyMS0wNC0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB3ZSBhcmUgbm8g
bG9uZ2VyIHNob3cgdGhlIHByZXZpb3VzIHBhZ2Ugd2hlbiBydW5uaW5nIGEgSlMgcHJvbXB0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDZmZmExMjNiYWQ3OWJjMjcxYmE2MTAxNWQyMDIxNGU2OTMxMWE5MWYuLmMwNTg1
MGU3OGQ2MzczNmQ4NjdjYWY0Y2QxNTQ1M2E1YmYwY2NhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMjEtMDQtMDEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2UgU2NyaXB0QnVmZmVyIGNsYXNzIHRvIHdyYXAgU2hhcmVkQnVmZmVyIGNv
bnRhaW5pbmcgYSBzY3JpcHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kgYW5k
IEdlb2ZmIEdhcmVuLgorCisgICAgICAgIEludHJvZHVjZSBTY3JpcHRCdWZmZXIgY2xhc3MgdG8g
d3JhcCBTaGFyZWRCdWZmZXIgY29udGFpbmluZyBhIHNjcmlwdC4gV2Ugc3RhcnRlZCB1c2luZyBT
aGFyZWRCdWZmZXIgdG8gcmVwcmVzZW50CisgICAgICAgIHdvcmtlciBzY3JpcHRzIGluc3RlYWQg
b2YgU3RyaW5nLCBzbyB0aGF0IHRoZXkgY2FuIGhvbGQgZmlsZSBtYXBwZWQgZGF0YSBhbmQgYmUg
c2hhcmVkIGFjcm9zcyBwcm9jZXNzZXMuCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh
IG5ldyBTY3JpcHRCdWZmZXIgdG8gd3JhcCB0aG9zZSBTaGFyZWRCdWZmZXJzLiBUaGUgdHlwZSBt
YWtlcyBpdCBjbGVhcmVyIHdoYXQgdHlwZSBvZgorICAgICAgICBkYXRhIHdlJ3JlIGRlYWxpbmcg
d2l0aC4gVGhlIGhlbHBlciBmdW5jdGlvbnMgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gU3RyaW5n
IGFuZCBTaGFyZWRCdWZmZXIgY2FuIG5vdyBzaW1wbHkKKyAgICAgICAgYmUgbWVtYmVyIGZ1bmN0
aW9ucyBvbiBTY3JpcHRCdWZmZXIuIFRoaXMgYWxzbyBzaW1wbGlmaWVzIElQQyBjb2RlLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAg
ICBVc2UgU2NyaXB0QnVmZmVyIGluc3RlYWQgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OnRyeUNvbnZlcnRU
b1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKToKKyAgICAgICAgKElQQzo6ZGVjb2RlU2NyaXB0QnVm
ZmVyQXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgLSBBZGQgSVBDIGVuY29kZXIgLyBk
ZWNvZGVyIGZvciBTY3JpcHRCdWZmZXIgd2hpY2ggdHJpZXMgdG8gZW5jb2RlIC8gZGVjb2RlIGFz
IGEgU2hhcmVhYmxlUmVzb3VyY2Ugd2hlbmV2ZXIKKyAgICAgICAgICBwb3NzaWJsZSAoc2luZ2xl
IHNlZ21lbnQgdGhhdCBpcyBmaWxlIG1hcHBlZCkuIFRoaXMgbG9naWMgdXNlZCB0byBiZSBpbiB0
aGUgU2VydmljZVdvcmtlckNvbnRleHREYXRhCisgICAgICAgICAgY29kZXJzLiBOb3cgdGhhdCB0
aGUgbG9naWMgaXMgaW4gdGhlIFNjcmlwdEJ1ZmZlciBjb2RlciwgdGhlIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBlbmNvZGluZyAvIGRlY29kaW5nCisgICAgICAgICAgYmVjb21lcyBtdWNoIHNp
bXBsZXIuCisgICAgICAgIC0gTW92ZWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvZGVycyBm
cm9tIFdlYkNvcmVBcmd1bWVudENvZGVycyBiYWNrIHRvIGl0cyBjbGFzcyBpbiBXZWJDb3JlLCBu
b3cgdGhhdAorICAgICAgICAgIHRoZXkgbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIFNoYXJl
YWJsZVJlc291cmNlIGRpcmVjdGx5LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW46CisgICAgICAgIFNlbmQgc2NyaXB0cyBvdmVyIElQQyBhcyBTY3JpcHRCdWZm
ZXIgaW5zdGVhZCBvZiB1c2luZyBTaGFyZWFibGVSZXNvdXJjZSBkaXJlY3RseS4gVGhlIG5ldyBJ
UEMgZW5jb2RlciAvCisgICAgICAgIGRlY29kZXIgZm9yIFNjcmlwdEJ1ZmZlciB0YWtlcyBjYXJl
IG9mIHVzaW5nIFNoYXJlYWJsZVJlc291cmNlIGZvciB1cy4KKwogMjAyMS0wNC0wMiAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB3ZSBhcmUgbm8g
bG9uZ2VyIHNob3cgdGhlIHByZXZpb3VzIHBhZ2Ugd2hlbiBydW5uaW5nIGEgSlMgcHJvbXB0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBiMTRlZTczM2MzZDRhNTFhMzNlNjVlYTA5ZDJiZjhlZGIwN2Vh
ZjAyLi5hYTM5MTgyZDQwNmY2MzBhOTFlOTc0YTE4MjA1MjNmODEzMjlkNTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTE2NDUsNiArMTY0NSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQURFUlMKICAgICB0ZXN0aW5nL01vY2tHYW1lcGFkLmgKICAgICB0ZXN0aW5nL01vY2tH
YW1lcGFkUHJvdmlkZXIuaAogCisgICAgd29ya2Vycy9TY3JpcHRCdWZmZXIuaAogICAgIHdvcmtl
cnMvV29ya2VyQW5pbWF0aW9uQ29udHJvbGxlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJEZWJ1Z2dl
clByb3h5LmgKICAgICB3b3JrZXJzL1dvcmtlckxvYWRlclByb3h5LmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggNjllNWY5OTExODNkMzE1M2M4MzkxODc4NzVlNTI5YTM1NmQzOThiNy4uOWU0ZmE2MGNjZGRh
ZmRjMTVkZDY1MTM5MWYxYjIxMTZiMzczNGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI2NDIsNiAr
MjY0Miw3IEBAIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAogd29ya2Vy
cy9BYnN0cmFjdFdvcmtlci5jcHAKIHdvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCiB3b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5jcHAKK3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcAogd29ya2Vycy9Xb3JrZXIuY3BwCiB3b3JrZXJzL1dvcmtlckFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCiB3b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTZhNmNjZTM0
MjY4NDdkMDY2MGU2MjliNGM1NDgyNTYyMjdkMDM0Yi4uNzUzMDJkYjBkMGM2ODIyMzFmNTYyZmU5
MDhjOWViMTUxMWIzZjk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3Myw2ICsxMjczLDcgQEAKIAkJNDYwRTMwNzcyMjJG
NEYwMzAwOUEwNjA2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NUVERDlG
MjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDYyMThBQ0IxRjcyRDY0RTAwNTc0RkJFIC8qIERPTUhpZ2hSZXNUaW1lU3RhbXAuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RTAxNkFEMUY3MkQ2MUUw
MDI4MkIyQyAvKiBET01IaWdoUmVzVGltZVN0YW1wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYyNzNDQUYyNjBFNTlFRjAwNkZBQTkxIC8qIFNX
U2NyaXB0U3RvcmFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDYyNzNDQUMyNjBFNTlERjAwNkZBQTkxIC8qIFNXU2NyaXB0U3RvcmFnZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2MkU0QzUwMjYx
NkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNBMkM2NyAvKiBTY3JpcHRC
dWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4MTA5MEIwMEMyODky
MiAvKiBXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjNFQjYyMTFC
ODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovOyB9OwogCQk0NjUzMDdEMDFEQjZF
RTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNFMDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVu
dEluaXQuaCAqLzsgfTsKQEAgLTgyNTEsNiArODI1Miw4IEBACiAJCTQ2MEQxOTQ0MUZDRTIxREQw
MEMzREI4NSAvKiBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZUN1
c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MjczQ0FDMjYwRTU5REYw
MDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1dTY3JpcHRTdG9yYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
MjczQ0FFMjYwRTU5REYwMDZGQUE5MSAvKiBTV1NjcmlwdFN0b3JhZ2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dTY3JpcHRTdG9yYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCdWZmZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8q
IFNjcmlwdEJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JpcHRCdWZmZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjM0NTkyQjFB
QzIyNzEwMDBFQ0I3MUMgLyogUG93ZXJPYnNlcnZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdpbmRvd1Byb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2MzUyMUFDMjA4MTA5MEUwMEMyODkyMiAvKiBXaW5kb3dQ
cm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaW5kb3dQcm94
eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTM3MCw2ICsxOTM3Myw4IEBA
CiAJCQkJNDE2MkE0NEYxMDExNDVBRTAwREZGM0VEIC8qIERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlLmlkbCAqLywKIAkJCQk0MUEzRDU4QzEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNhdGVkV29y
a2VyVGhyZWFkLmNwcCAqLywKIAkJCQk0MUEzRDU4RDEwMUMxNTJEMDAzMTZEMDcgLyogRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmggKi8sCisJCQkJNDYyRTRDNEYyNjE2QTgwMTAwM0EyQzY3IC8qIFNj
cmlwdEJ1ZmZlci5jcHAgKi8sCisJCQkJNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlw
dEJ1ZmZlci5oICovLAogCQkJCTJFNDM0NjMzMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuY3Bw
ICovLAogCQkJCTJFNDM0NjM0MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXIuaCAqLywKIAkJCQky
RTQzNDYzNTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyLmlkbCAqLywKQEAgLTM0Nzk2LDYgKzM0
ODAxLDcgQEAKIAkJCQlCQ0VDMDFCRTBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMUUxRDIzNjIwM0RGMTU0MDA1ODQ2NjUgLyogU2NyZWVuUHJvcGVydGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyQzExMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlw
dGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDYyRTRDNTAyNjE2QTgx
MTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMUQyMUYw
RUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNCNzBENzAwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBTY3JpcHREaXNhbGxv
d2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1NlcnZpY2VXb3JrZXJBZ2VudC5jcHAKaW5kZXgg
M2Y1MjQ5MWRhMGFjNWQ5Zjc5YjU0NGY3YzVmYzk0MDBiNGJhNzI1NC4uMzk0YzA5NTAwYWFiYjk0
ODU4OWMxZjdmZDlhNGU1YjhhYTgyZmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvU2VydmljZVdvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9TZXJ2aWNlV29ya2VyQWdlbnQuY3BwCkBA
IC02MCw3ICs2MCw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPFJlZjxQcm90b2NvbDo6U2Vy
dmljZVdvcmtlcjo6Q29uZmlndXJhdGlvbj4+IFNlcnZpY2VXb3JrCiAgICAgICAgIC5zZXRUYXJn
ZXRJZChtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5pZGVudGlmaWVyKCkpCiAgICAgICAgIC5z
ZXRTZWN1cml0eU9yaWdpbihtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5zZWN1cml0eU9yaWdp
bigpLT50b1Jhd1N0cmluZygpKQogICAgICAgICAuc2V0VXJsKG1fc2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlLmNvbnRleHREYXRhKCkuc2NyaXB0VVJMLnN0cmluZygpKQotICAgICAgICAuc2V0Q29u
dGVudChzY3JpcHRCdWZmZXJUb1N0cmluZyhtX3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb250
ZXh0RGF0YSgpLnNjcmlwdCkpCisgICAgICAgIC5zZXRDb250ZW50KG1fc2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNvbnRleHREYXRhKCkuc2NyaXB0LnRvU3RyaW5nKCkpCiAgICAgICAgIC5yZWxl
YXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMzFjNmFjODNmYjljNGY2YWNlY2MwYjZhMzM4YTJmNTdhY2I5ZjAzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JpcHRCdWZmZXIuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitTY3JpcHRCdWZmZXI6OlNjcmlwdEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZykKK3sK
KyAgICBhdXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOworICAgIG1fYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUodXRmOC5kYXRhKCksIHV0ZjgubGVuZ3RoKCkpOworfQorCitTdHJpbmcgU2Ny
aXB0QnVmZmVyOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2J1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZv
ciAoYXV0byBpdCA9IG1fYnVmZmVyLT5iZWdpbigpOyBpdCAhPSBtX2J1ZmZlci0+ZW5kKCk7ICsr
aXQpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQt
PmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3Ry
aW5nKCk7Cit9CisKK2Jvb2wgU2NyaXB0QnVmZmVyOjpjb250YWluc1NpbmdsZUZpbGVNYXBwZWRT
ZWdtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9idWZmZXIgJiYgbV9idWZmZXItPmhhc09u
ZVNlZ21lbnQoKSAmJiBtX2J1ZmZlci0+YmVnaW4oKS0+c2VnbWVudC0+Y29udGFpbnNNYXBwZWRG
aWxlRGF0YSgpOworfQorCitib29sIG9wZXJhdG9yPT0oY29uc3QgU2NyaXB0QnVmZmVyJiBhLCBj
b25zdCBTY3JpcHRCdWZmZXImIGIpCit7CisgICAgaWYgKGEuYnVmZmVyKCkgPT0gYi5idWZmZXIo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFhLmJ1ZmZlcigpIHx8ICFiLmJ1ZmZl
cigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICphLmJ1ZmZlcigpID09ICpi
LmJ1ZmZlcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9TY3JpcHRCdWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWE1MmI0ZjgzN2IxYWEyY2Y3MjQ1NjA3YzVk
MjFmYzkzY2RhMzAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcmlwdEJ1ZmZl
ciB7CitwdWJsaWM6CisgICAgU2NyaXB0QnVmZmVyKCkgPSBkZWZhdWx0OworCisgICAgU2NyaXB0
QnVmZmVyKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVy
KFdURk1vdmUoYnVmZmVyKSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgU2NyaXB0QnVm
ZmVyKGNvbnN0IFN0cmluZyYpOworCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisgICAg
U2hhcmVkQnVmZmVyKiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5nZXQoKTsgfQor
CisgICAgU2NyaXB0QnVmZmVyIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIFNjcmlwdEJ1
ZmZlcihtX2J1ZmZlciA/IFJlZlB0cjxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLT5jb3B5KCkpIDog
bnVsbHB0cik7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX2J1ZmZlcjsgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc1NpbmdsZUZp
bGVNYXBwZWRTZWdtZW50KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gbV9idWZmZXI7IC8vIENvbnRhaW5zIHRoZSBVVEYtOCBlbmNvZGVkIHNjcmlwdC4KK307
CisKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBTY3JpcHRCdWZm
ZXImKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IGE0YmUxMDA0MGJlMjg1OTIxMGI3MmNlZDIz
MTgyYWYwNjQ3YTc4MmIuLmUxYzgxMjM1ZmJhOGE0NTg3ZDJlYWQ0ZjU0OGFmOTkzZmM1YmVhMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgT3B0aW9uYWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6Omxv
YWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKIAogICAgIGlmIChpc1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSkgewogICAgICAgICBpZiAoYXV0byogc2NyaXB0UmVzb3VyY2Ug
PSBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5z
Y3JpcHRSZXNvdXJjZSh1cmwpKSB7Ci0gICAgICAgICAgICBtX3NjcmlwdC5hcHBlbmQoc2NyaXB0
QnVmZmVyVG9TdHJpbmcoKnNjcmlwdFJlc291cmNlLT5zY3JpcHQpKTsKKyAgICAgICAgICAgIG1f
c2NyaXB0LmFwcGVuZChzY3JpcHRSZXNvdXJjZS0+c2NyaXB0LnRvU3RyaW5nKCkpOwogICAgICAg
ICAgICAgbV9yZXNwb25zZVVSTCA9IHNjcmlwdFJlc291cmNlLT5yZXNwb25zZVVSTDsKICAgICAg
ICAgICAgIG1fcmVzcG9uc2VNSU1FVHlwZSA9IHNjcmlwdFJlc291cmNlLT5taW1lVHlwZTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0xMDIsNyArMTAyLDcgQEAgT3B0aW9u
YWw8RXhjZXB0aW9uPiBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBv
cnRlZEphdmFTY3JpcHRNSU1FVHlwZShyZXNwb25zZU1JTUVUeXBlKCkpKQogICAgICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5ldHdvcmtFcnJvciwgIm1pbWUgdHlwZSBpcyBub3QgYSBzdXBw
b3J0ZWQgSmF2YVNjcmlwdCBtaW1lIHR5cGUiX3MgfTsKIAotICAgICAgICBkb3duY2FzdDxTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGU+KHdvcmtlckdsb2JhbFNjb3BlKS5zZXRTY3JpcHRSZXNvdXJj
ZSh1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQgeyBzdHJpbmdU
b1NjcmlwdEJ1ZmZlcihzY3JpcHQoKSksIG1fcmVzcG9uc2VVUkwsIG1fcmVzcG9uc2VNSU1FVHlw
ZSB9KTsKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPih3b3JrZXJH
bG9iYWxTY29wZSkuc2V0U2NyaXB0UmVzb3VyY2UodXJsLCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0IHsgU2NyaXB0QnVmZmVyIHsgc2NyaXB0KCkgfSwgbV9yZXNwb25z
ZVVSTCwgbV9yZXNwb25zZU1JTUVUeXBlIH0pOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmgKaW5kZXggNmFhZTQ1NTZiZGE2YTFmMDEzNGM3MWNjNThiMmFkMTY4
Yjg4NjE0MS4uM2NiNWIwY2JiYWNhNTQ4Y2M4MjM1NmNiYTIxYThhNjU4MDEyMDllMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aApAQCAtNDIsNyArNDIsNiBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7CiBjbGFzcyBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uOwotY2xhc3MgU2hhcmVkQnVmZmVyOwogZW51bSBjbGFzcyBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTZXJ2
aWNlV29ya2VyU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVuUmVz
b2x2ZWQgOiBib29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcAppbmRleCAxZWE1OTAxYmQ5ZDJmZDlj
NzkzYjJkNWFlMGUyNzBlODNjOGU3MjM1Li4xNmRmMmQ4MjQ5Zjg3ZjZhZTQzNzNlMjY1NjIzYzNk
OGE5OWI1ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcApAQCAtMzcsNyArMzcsNyBAQCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENv
cHkoKSBjb25zdAogICAgICAgICBqb2JEYXRhSWRlbnRpZmllciwKICAgICAgICAgcmVnaXN0cmF0
aW9uLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwKLSAg
ICAgICAgc2NyaXB0LT5jb3B5KCksCisgICAgICAgIHNjcmlwdC5pc29sYXRlZENvcHkoKSwKICAg
ICAgICAgY2VydGlmaWNhdGVJbmZvLmlzb2xhdGVkQ29weSgpLAogICAgICAgICBjb250ZW50U2Vj
dXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHJlZmVycmVyUG9saWN5Lmlzb2xh
dGVkQ29weSgpLApAQCAtNDgsMjAgKzQ4LDYgQEAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICB9OwogfQog
Ci1TdHJpbmcgc2NyaXB0QnVmZmVyVG9TdHJpbmcoU2hhcmVkQnVmZmVyJiBidWZmZXIpCi17Ci0g
ICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGZvciAoYXV0byBpdCA9IGJ1ZmZlci5iZWdp
bigpOyBpdCAhPSBidWZmZXIuZW5kKCk7ICsraXQpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZzo6ZnJvbVVURjgoaXQtPnNlZ21lbnQtPmRhdGEoKSwgaXQtPnNlZ21lbnQtPnNpemUoKSkp
OwotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLVJlZjxTaGFyZWRCdWZmZXI+
IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHV0
ZjguZGF0YSgpLCB1dGY4Lmxlbmd0aCgpKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCmluZGV4
IGExNjA0ODkwMjM5NGZlNTk2Y2NjZGNmM2IxOThmYTgxMWE1Y2YwY2QuLmRiYTYyMzVlMGI2MDZh
ODMxM2MzYzRjMzFkN2QyY2JmYTYxNmZmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKQEAgLTI3LDEw
ICsyNywxMCBAQAogCiAjaW5jbHVkZSAiQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmgiCisjaW5jbHVkZSAiU2NyaXB0QnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YS5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
IldvcmtlclR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KQEAgLTQwLDIyICs0MCw0OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmlu
ZyBzY3JpcHRCdWZmZXJUb1N0cmluZyhTaGFyZWRCdWZmZXImKTsKLVJlZjxTaGFyZWRCdWZmZXI+
IHN0cmluZ1RvU2NyaXB0QnVmZmVyKGNvbnN0IFN0cmluZyYpOwotCiBzdHJ1Y3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsKICAgICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewotICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzY3JpcHQ7CisgICAgICAgIFNjcmlwdEJ1ZmZlciBzY3JpcHQ7
CiAgICAgICAgIFVSTCByZXNwb25zZVVSTDsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCi0g
ICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2Ny
aXB0LT5jb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRl
ZENvcHkoKSB9OyB9CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGVuY29kZXIg
PDwgc2NyaXB0IDw8IHJlc3BvbnNlVVJMIDw8IG1pbWVUeXBlOworICAgICAgICB9CisKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEltcG9ydGVkU2NyaXB0
PiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICAgICAgeworICAgICAgICAgICAgT3B0aW9u
YWw8U2NyaXB0QnVmZmVyPiBzY3JpcHQ7CisgICAgICAgICAgICBkZWNvZGVyID4+IHNjcmlwdDsK
KyAgICAgICAgICAgIGlmICghc2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPFVSTD4gcmVzcG9uc2VVUkw7CisgICAgICAg
ICAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOworICAgICAgICAgICAgaWYgKCFyZXNwb25zZVVS
TCkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAgICBP
cHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOworICAgICAgICAgICAgZGVjb2RlciA+PiBtaW1lVHlw
ZTsKKyAgICAgICAgICAgIGlmICghbWltZVR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgICAgICAgICAgcmV0dXJuIHt7CisgICAgICAgICAgICAgICAgV1RG
TW92ZSgqc2NyaXB0KSwKKyAgICAgICAgICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisg
ICAgICAgICAgICAgICAgV1RGTW92ZSgqbWltZVR5cGUpCisgICAgICAgICAgICB9fTsKKyAgICAg
ICAgfQorCisgICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0
dXJuIHsgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCByZXNwb25zZVVSTC5pc29sYXRlZENvcHkoKSwg
bWltZVR5cGUuaXNvbGF0ZWRDb3B5KCkgfTsgfQogICAgIH07CiAKICAgICBPcHRpb25hbDxTZXJ2
aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+IGpvYkRhdGFJZGVudGlmaWVyOwogICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHJlZ2lzdHJhdGlvbjsKICAgICBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllcjsKLSAgICBSZWY8U2hhcmVkQnVmZmVy
PiBzY3JpcHQ7CisgICAgU2NyaXB0QnVmZmVyIHNjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8g
Y2VydGlmaWNhdGVJbmZvOwogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgU3RyaW5nIHJlZmVycmVyUG9saWN5OwpAQCAt
NjQsOSArOTAsODUgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7CiAgICAgYm9v
bCBsb2FkZWRGcm9tRGlzazsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlw
dFJlc291cmNlTWFwOwogCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7CisKICAgICBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwogCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgam9iRGF0YUlkZW50
aWZpZXIgPDwgcmVnaXN0cmF0aW9uIDw8IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjcmlw
dCA8PCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPDwgcmVmZXJyZXJQb2xpY3kKKyAgICAgICAgPDwg
c2NyaXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgc2NyaXB0UmVzb3Vy
Y2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
T3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4+IGpvYkRhdGFJZGVudGlmaWVyOworICAgIGRl
Y29kZXIgPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgaWYgKCFqb2JEYXRhSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhPiByZWdpc3RyYXRpb247CisgICAgZGVjb2RlciA+PiByZWdpc3Ry
YXRpb247CisgICAgaWYgKCFyZWdpc3RyYXRpb24pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gU2VydmljZVdvcmtlcklk
ZW50aWZpZXI6OmRlY29kZShkZWNvZGVyKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2NyaXB0
QnVmZmVyPiBzY3JpcHQ7CisgICAgZGVjb2RlciA+PiBzY3JpcHQ7CisgICAgaWYgKCFzY3JpcHQp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDb250ZW50U2VjdXJpdHlQb2xp
Y3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoY29udGVudFNlY3VyaXR5UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIFN0cmluZyByZWZlcnJlclBvbGljeTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlZmVycmVyUG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IFVSTCBzY3JpcHRVUkw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUod29ya2VyVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobG9hZGVkRnJvbURpc2spKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHNjcmlwdFJlc291cmNlTWFwKSkKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKworICAgIE9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJ
bmZvOworICAgIGRlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOworICAgIGlmICghY2VydGlmaWNh
dGVJbmZvKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHt7Cisg
ICAgICAgIFdURk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92ZSgqcmVn
aXN0cmF0aW9uKSwKKyAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAor
ICAgICAgICBXVEZNb3ZlKCpzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUlu
Zm8pLAorICAgICAgICBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksCisgICAgICAgIFdU
Rk1vdmUocmVmZXJyZXJQb2xpY3kpLAorICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCisgICAg
ICAgIHdvcmtlclR5cGUsCisgICAgICAgIGxvYWRlZEZyb21EaXNrLAorICAgICAgICBXVEZNb3Zl
KHNjcmlwdFJlc291cmNlTWFwKQorICAgIH19OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CmluZGV4IGIwM2YzZGFjYjkzOTMyMzJlMWM4NWMwNTVkOTllYWZlMzRlMTIyMDcuLjE4YmQ0YTll
NWNiM2IxOGU3NDU2ZGVjZDFiMDRjNTNlZDBmMTU5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3Bw
CkBAIC0xNTUsMTggKzE1NSwxOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6c2V0
U2NyaXB0UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwsIFNlcnZpY2VXb3JrZXJDbwogICAgIG1fY29u
dGV4dERhdGEuc2NyaXB0UmVzb3VyY2VNYXAuc2V0KHVybCwgV1RGTW92ZShzY3JpcHQpKTsKIH0K
IAotdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQordm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6
OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNjcmlwdEJ1ZmZlciYmIHNjcmlwdCwgSGFzaE1hcDxVUkws
IFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAgICAgLy8gVGhlc2Ugc2NyaXB0
cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmVzIHdlIGhhdmUuIEhvd2V2ZXIsIHRoZXNl
IGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhlbSBoZWxwcyByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdl
LgogICAgIGlmIChzY3JpcHQpIHsKLSAgICAgICAgQVNTRVJUKG1fY29udGV4dERhdGEuc2NyaXB0
LmdldCgpID09ICpzY3JpcHQpOwotICAgICAgICBtX2NvbnRleHREYXRhLnNjcmlwdCA9IHNjcmlw
dC5yZWxlYXNlTm9uTnVsbCgpOworICAgICAgICBBU1NFUlQobV9jb250ZXh0RGF0YS5zY3JpcHQg
PT0gc2NyaXB0KTsKKyAgICAgICAgbV9jb250ZXh0RGF0YS5zY3JpcHQgPSBXVEZNb3ZlKHNjcmlw
dCk7CiAgICAgfQogICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewogICAg
ICAgICBhdXRvIGl0ID0gbV9jb250ZXh0RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5maW5kKHBhaXIu
a2V5KTsKICAgICAgICAgaWYgKGl0ID09IG1fY29udGV4dERhdGEuc2NyaXB0UmVzb3VyY2VNYXAu
ZW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQVNTRVJUKCppdC0+dmFsdWUu
c2NyaXB0ID09ICpwYWlyLnZhbHVlKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBz
Y3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgICAgIEFTU0VSVChpdC0+dmFsdWUuc2NyaXB0ID09
IHBhaXIudmFsdWUpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdHMgYXJl
IGlkZW50aWNhbC4KICAgICAgICAgaXQtPnZhbHVlLnNjcmlwdCA9IFdURk1vdmUocGFpci52YWx1
ZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IGVlNzVlZTllZDFhMzI5N2MzMzI2
OWU5M2ZkMDZlNzhlZTNhMGM1YjguLmFmYmM0MGU5YzMyYmJhOTEyMGZkOThiNTJhNDFmZjA3Nzc4
NzRkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAg
IGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQqIHNjcmlwdFJl
c291cmNlKGNvbnN0IFVSTCYpIGNvbnN0OwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoY29u
c3QgVVJMJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKIAot
ICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3Jp
cHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMp
OworICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8
VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
eHREYXRhOyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhLmNlcnRpZmljYXRlSW5mbzsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAppbmRleCA4ODEzYWI2OWExNmQ1NzRmMDE1MWFiNThkMWJlMDIxYWZiODdlOGYy
Li4yOGQwYWJjNDA1MzhkZWY4NzA5NDYwOGNlY2ZmNDIwNGI2Y2UyYWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVy
bWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAg
ICAgc3RvcFdvcmtlcigqc2VydmljZVdvcmtlciwgdGltZW91dCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9E
aXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0
ZWRTY3JpcHRzKQordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBzY3JpcHQs
IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKQogewogICAgIGlm
IChhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcikpCiAgICAg
ICAgIHNlcnZpY2VXb3JrZXItPmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwg
V1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBkZGJlYjU4
NTRhYzIxOWMxOThjNmI2N2QxM2ZhNThlODk5NjhiYjhkLi5mNTcwY2U0M2Q1YzA4YzkwODgyOTAy
MmExNzI2ZGQyYjhhOTkwZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC05MCw3ICs5MCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTZWNvbmRzIHRpbWVvdXQs
IEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNj
cmlwdHMpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFNjcmlwdEJ1ZmZlciYmLCBIYXNoTWFwPFVSTCwgU2NyaXB0
QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29y
a2VyVGhyZWFkKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkmKT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCAyODgxMjI4YTgyNGQ0
ZGY0ODkxMGJmOWJjNzllMDA5NjBlYTUzYjliLi5kMGNlMGE2MWRkMmQwMGNmZDE4YmQ2NDFhOWI4
MjZhMzA2MzdjZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSB2YWxpZCBydW50aW1lIGZsYWdzCiAKIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhJiYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiBz
ZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3JrZXJEZWJ1
Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSog
aWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIpCi0gICAg
OiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3
b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVy
KCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgTW9u
b3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJUeXBlLCBGZXRjaFJlcXVlc3RDcmVk
ZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgc2NyaXB0QnVmZmVyVG9TdHJpbmcoZGF0
YS5zY3JpcHQpLCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0
YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlk
YkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVh
dGVBbGxFbmFibGVkKCkpCisgICAgOiBXb3JrZXJUaHJlYWQoeyBkYXRhLnNjcmlwdFVSTCwgZW1w
dHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0
b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuY29udGVudFNlY3Vy
aXR5UG9saWN5LCBmYWxzZSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgZGF0YS53b3JrZXJU
eXBlLCBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgZGF0
YS5zY3JpcHQudG9TdHJpbmcoKSwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpO
b3JtYWwsIGRhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigp
LmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVG
bGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmll
cihkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRpZmll
cihkYXRhLmpvYkRhdGFJZGVudGlmaWVyKQogICAgICwgbV9kYXRhKGNyb3NzVGhyZWFkQ29weShk
YXRhKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IGI1NzQ4MzU4
NGMwNTE5OTg5OWNmNjc1NWU5N2M5M2JmYjA4NmUyZTUuLmJlZGYyMDI3OTBiYmM3MWQ3MjE1ZGVl
M2ViOTFmNzBhNDNiNDViODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJl
QWN0aXZhdGVFdmVudCgpCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdCwg
SGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRC
dWZmZXImJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiYgaW1wb3J0ZWRTY3Jp
cHRzKQogewogICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92
ZShzY3JpcHQpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1
dG8mIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGU+KGNvbnRleHQpLmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwg
V1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmgKaW5kZXggODVkOGNkZTc2MjFiODdiODIzOTZkZDhiMjJjNTIyNWFiOWE0N2EyMC4uM2ZlMmI0
NDM1YWYyNWMwMjQ5YzFlZmNkZThjODgxZGFmYjhmYWIwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdv
cmtlck9yQ2xpZW50RGF0YSYmKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2
b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7Ci0gICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRC
dWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlz
ayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNj
cmlwdHMpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IGQ4ODVhMjM3
MGYzMDUyNTk3MTExN2FiOTgzOTNlZTE1NDA4NDc5MTcuLjU5ZTAyOGU5MjY1NDNjNDcxZGM3Yjc0
ZWM3YWI3OTY1YTY3MjQ0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC00Njks
MTQgKzQ2OSwxNCBAQCBib29sIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpkb1B1c2hDaGFuZ2VzKGNv
bnN0IFZlY3RvcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+JgogICAgICAgICBBU1NFUlQobWFp
blNjcmlwdCk7CiAgICAgICAgIGlmICghbWFpblNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBpbXBvcnRl
ZFNjcmlwdHM7CisgICAgICAgIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2Ny
aXB0czsKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCkg
ewotICAgICAgICAgICAgYXV0byBpbXBvcnRlZFNjcmlwdCA9IHNjcmlwdFN0b3JhZ2Uuc3RvcmUo
ZGF0YS5yZWdpc3RyYXRpb24ua2V5LCBwYWlyLmtleSwgKnBhaXIudmFsdWUuc2NyaXB0KTsKKyAg
ICAgICAgICAgIGF1dG8gaW1wb3J0ZWRTY3JpcHQgPSBzY3JpcHRTdG9yYWdlLnN0b3JlKGRhdGEu
cmVnaXN0cmF0aW9uLmtleSwgcGFpci5rZXksIHBhaXIudmFsdWUuc2NyaXB0KTsKICAgICAgICAg
ICAgIEFTU0VSVChpbXBvcnRlZFNjcmlwdCk7CiAgICAgICAgICAgICBpZiAoaW1wb3J0ZWRTY3Jp
cHQpCi0gICAgICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHko
cGFpci5rZXkpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0KSk7CisgICAgICAgICAgICAgICAgaW1w
b3J0ZWRTY3JpcHRzLmFkZChjcm9zc1RocmVhZENvcHkocGFpci5rZXkpLCBjcm9zc1RocmVhZENv
cHkoaW1wb3J0ZWRTY3JpcHQpKTsKICAgICAgICAgfQotICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyID0gZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IG1haW5T
Y3JpcHQucmVsZWFzZU5vbk51bGwoKSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRl
ZFNjcmlwdHMpXSgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
ZGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbWFpblNjcmlwdCA9IGNyb3NzVGhyZWFkQ29w
eShtYWluU2NyaXB0KSwgaW1wb3J0ZWRTY3JpcHRzID0gV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMp
XSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fc3RvcmUpCiAgICAgICAgICAgICAgICAg
bV9zdG9yZS0+ZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7CiAgICAg
ICAgIH0pOwpAQCAtNTY5LDcgKzU2OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6
aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmllciA9IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAgICAgICBh
dXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJZGVudGlm
aWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29ya2VyVHlw
ZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVnaXN0cmF0
aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwgbGFzdFVw
ZGF0ZUNoZWNrVGltZSwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2Vydmlj
ZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgeyBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2Vy
SWRlbnRpZmllciwgc2NyaXB0LnJlbGVhc2VOb25OdWxsKCksIFdURk1vdmUoKmNlcnRpZmljYXRl
SW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQ
b2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBXVEZNb3ZlKHNj
cmlwdFJlc291cmNlTWFwKSB9OworICAgICAgICBhdXRvIGNvbnRleHREYXRhID0gU2VydmljZVdv
cmtlckNvbnRleHREYXRhIHsgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbiksIHdv
cmtlcklkZW50aWZpZXIsIFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZSgqY2VydGlmaWNhdGVJbmZv
KSwgV1RGTW92ZSgqY29udGVudFNlY3VyaXR5UG9saWN5KSwgV1RGTW92ZShyZWZlcnJlclBvbGlj
eSksIFdURk1vdmUoc2NyaXB0VVJMKSwgKndvcmtlclR5cGUsIHRydWUsIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0
aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCmlu
ZGV4IDkyMTE1NmFjMTYyYzQyYjRjYmQyNGUyMTVkN2IyMmFmYjBlMDU3NGIuLjc0YTVjZDJmNDM5
NGNiMDMzMTQ0YjMyMTMzYTMwMGZlMWJjMTI1ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuY3BwCkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZWdpc3RyYXRpb25TdG9yZTo6YWRkUmVnaXN0cmF0aW9u
RnJvbURhdGFiYXNlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGQKICAgICBtX3NlcnZlci5h
ZGRSZWdpc3RyYXRpb25Gcm9tU3RvcmUoV1RGTW92ZShkYXRhKSk7CiB9CiAKLXZvaWQgUmVnaXN0
cmF0aW9uU3RvcmU6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5T
Y3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlw
dHMpCit2b2lkIFJlZ2lzdHJhdGlvblN0b3JlOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVm
ZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNj
cmlwdHMpCiB7CiAgICAgbV9zZXJ2ZXIuZGlkU2F2ZVdvcmtlclNjcmlwdHNUb0Rpc2soc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdURk1vdmUobWFpblNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRT
Y3JpcHRzKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1JlZ2lzdHJhdGlvblN0b3JlLmgKaW5kZXggMjY4NzhjZWViMGUyZjYwN2U3MDdl
N2JiNDAxZmU0MjFjZDExZTlmZS4uYWY4NmYyNTQzNTcyYTFhMzhiNTFmOTk0MTk4ODE1YTZmNGQ1
NjI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9S
ZWdpc3RyYXRpb25TdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvUmVnaXN0cmF0aW9uU3RvcmUuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRSZWdpc3RyYXRpb25Gcm9tRGF0YWJhc2UoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYpOwogICAgIHZvaWQgZGF0YWJhc2VGYWlsZWRUb09wZW4oKTsKICAgICB2b2lkIGRhdGFiYXNl
T3BlbmVkQW5kUmVjb3Jkc0ltcG9ydGVkKCk7Ci0gICAgdm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWlu
U2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3Jp
cHRzKTsKKyAgICB2b2lkIGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBTY3JpcHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0
QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICBTV1NlcnZlciYgc2VydmVyKCkgeyBy
ZXR1cm4gbV9zZXJ2ZXI7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmNwcAppbmRleCAyYzI3ZDVlZDM1OTY1
OTZhMGVlY2RlMTMzYTE2NzA5ODU0ZjA5MDM0Li5kZmM1ZDBiNmUwZDk4MTg4ZDkxNDEwZTE4YjI2
NGQzOWRkYmUyMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2NyaXB0U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUg
IlNjcmlwdEJ1ZmZlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXku
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
Z2VCbG9jay5oPgpAQCAtNzksNyArNzksNyBAQCBTdHJpbmcgU1dTY3JpcHRTdG9yYWdlOjpzY3Jp
cHRQYXRoKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdAogICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVnaXN0cmF0aW9u
RGlyZWN0b3J5KHJlZ2lzdHJhdGlvbktleSksIHNoYTJIYXNoKHNjcmlwdFVSTCkpOwogfQogCi1S
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRV
UkwsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgc2NyaXB0KQorU2NyaXB0QnVmZmVyIFNXU2NyaXB0U3Rv
cmFnZTo6c3RvcmUoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQp
CiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTg3LDM1ICs4NywzNSBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnN0b3JlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmCiAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc2NyaXB0UGF0aCkpOwogCiAgICAgYXV0byBpdGVy
YXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0YSA9IFsmXShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpPiYgd3JpdGVEYXRhKSB7Ci0gICAgICAgIGZvciAoYXV0byBpdCA9
IHNjcmlwdC5iZWdpbigpOyBpdCAhPSBzY3JpcHQuZW5kKCk7ICsraXQpCisgICAgICAgIGZvciAo
YXV0byBpdCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKTsgaXQgIT0gc2NyaXB0LmJ1ZmZlcigp
LT5lbmQoKTsgKytpdCkKICAgICAgICAgICAgIHdyaXRlRGF0YShyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihpdC0+c2VnbWVudC0+ZGF0YSgpKSwgaXQtPnNlZ21lbnQtPnNpemUoKSk7
CiAgICAgfTsKIAotICAgIGlmICghc2hvdWxkVXNlRmlsZU1hcHBpbmcoc2NyaXB0LnNpemUoKSkp
IHsKKyAgICBpZiAoIXNob3VsZFVzZUZpbGVNYXBwaW5nKHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgp
KSkgewogICAgICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHNjcmlwdFBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwogICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoU2VydmljZVdvcmtlciwgIlNXU2NyaXB0U3RvcmFnZTo6c3RvcmU6IEZhaWx1cmUgdG8g
c3RvcmUgJXMsIEZpbGVTeXN0ZW06Om9wZW5GaWxlKCkgZmFpbGVkIiwgc2NyaXB0UGF0aC51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBpdGVyYXRlT3ZlckJ1ZmZlckFuZFdyaXRlRGF0
YShbJl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YSksIHNpemUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0pOwog
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIHNj
cmlwdC5jb3B5KCk7CisgICAgICAgIHJldHVybiBzY3JpcHQ7CiAgICAgfQogCiAgICAgLy8gTWFr
ZSBzdXJlIHdlIGRlbGV0ZSB0aGUgZmlsZSBiZWZvcmUgd3JpdGluZyBhcyB0aGVyZSBtYXkgYmUg
Y29kZSB1c2luZyBhIG1tYXAnZCB2ZXJzaW9uIG9mIHRoaXMgZmlsZS4KICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKHNjcmlwdFBhdGgpOwotICAgIGF1dG8gbWFwcGVkRmlsZSA9IEZpbGVTeXN0
ZW06Om1hcFRvRmlsZShzY3JpcHRQYXRoLCBzY3JpcHQuc2l6ZSgpLCBXVEZNb3ZlKGl0ZXJhdGVP
dmVyQnVmZmVyQW5kV3JpdGVEYXRhKSk7CisgICAgYXV0byBtYXBwZWRGaWxlID0gRmlsZVN5c3Rl
bTo6bWFwVG9GaWxlKHNjcmlwdFBhdGgsIHNjcmlwdC5idWZmZXIoKS0+c2l6ZSgpLCBXVEZNb3Zl
KGl0ZXJhdGVPdmVyQnVmZmVyQW5kV3JpdGVEYXRhKSk7CiAgICAgaWYgKCFtYXBwZWRGaWxlKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3Jh
Z2U6OnN0b3JlOiBGYWlsdXJlIHRvIHN0b3JlICVzLCBGaWxlU3lzdGVtOjptYXBUb0ZpbGUoKSBm
YWlsZWQiLCBzY3JpcHRQYXRoLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUobWFwcGVkRmlsZSkpOworICAgIHJldHVybiBTY3JpcHRCdWZmZXIgeyBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKG1hcHBlZEZpbGUpKSB9OwogfQogCi1SZWZQdHI8
U2hhcmVkQnVmZmVyPiBTV1NjcmlwdFN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJMJiBzY3JpcHRVUkwp
CitTY3JpcHRCdWZmZXIgU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFVSTCYgc2NyaXB0VVJM
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU1dTY3JpcHRTdG9yYWdlOjpyZXRyaWV2ZShjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2UKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwogICAg
IGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoc2NyaXB0UGF0aCwgZmlsZVNpemUpKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTV1NjcmlwdFN0b3JhZ2U6
OnJldHJpZXZlOiBGYWlsdXJlIHRvIHJldHJpZXZlICVzLCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6
ZSgpIGZhaWxlZCIsIHNjcmlwdFBhdGgudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIHRvIGRpc2FibGUgZmlsZSBtYXBwaW5nIGluIG1vcmUgY2FzZXMgdG8gYXZvaWQgaGF2
aW5nIHRvbyBtYW55IGZpbGUgZGVzY3JpcHRvcnMgb3Blbj8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2NyaXB0U3RvcmFnZS5oCmluZGV4IGJi
MTk0ZDEyYzQ2NjZlNmQ2MzRkZmE2Y2QwZTFlNjM2MmRlZjQxNzEuLmZmNGI1M2UyZWYwMTM3ODgz
ZThjODI0ZGZjNGEzNjAzYjE0YmJkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTY3JpcHRTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NjcmlwdFN0b3JhZ2UuaApAQCAtMzMsMTUgKzMzLDE1
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXk7Ci1jbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTY3JpcHRCdWZmZXI7CiAKIGNsYXNz
IFNXU2NyaXB0U3RvcmFnZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgU1dTY3JpcHRTdG9yYWdlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsK
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCwgY29uc3QgU2hhcmVkQnVmZmVyJiBz
Y3JpcHQpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJldHJpZXZlKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNjcmlwdFVSTCk7CisgICAgU2NyaXB0
QnVmZmVyIHN0b3JlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBV
UkwmIHNjcmlwdFVSTCwgY29uc3QgU2NyaXB0QnVmZmVyJik7CisgICAgU2NyaXB0QnVmZmVyIHJl
dHJpZXZlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCk7CiAgICAgdm9pZCBjbGVhcihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5Jik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGRjZTIwMTZmYzE1MzgzMDBmZmFhMTE3NTllYWUz
MzQwOGM0ZjllNTMuLmIwYzIwODc5YjYyM2JkOWNlYTY0Yzg4OThmMDNkNjE4ZDg3NWUwZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uRnJv
bVN0b3JlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCiAgICAgfSk7CiB9CiAKLXZv
aWQgU1dTZXJ2ZXI6OmRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5T
Y3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlw
dHMpCit2b2lkIFNXU2VydmVyOjpkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2NyaXB0QnVmZmVyJiYgbWFp
blNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7
CiAgICAgaWYgKGF1dG8gd29ya2VyID0gd29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmll
cikpCiAgICAgICAgIHdvcmtlci0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV1RGTW92ZShtYWluU2Ny
aXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKQEAgLTYzOSw3ICs2MzksNyBAQCB2b2lk
IFNXU2VydmVyOjpyZW1vdmVDbGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKENvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFNlcgogCiB2b2lkIFNXU2VydmVyOjp1cGRhdGVXb3JrZXIoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgY29uc3Qg
Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50U2VjdXJpdHlQb2xp
Y3ksIGNvbnN0IFN0cmluZyYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlwZSwgSGFzaE1h
cDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0
UmVzb3VyY2VNYXApCiB7Ci0gICAgdHJ5SW5zdGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb24uZGF0YSgpLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgc3RyaW5nVG9TY3JpcHRCdWZmZXIoc2Ny
aXB0KSwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9s
aWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAg
ICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0
YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OjpnZW5lcmF0ZSgpLCBTY3JpcHRCdWZmZXIgeyBzY3JpcHQgfSwgY2VydGlmaWNhdGVJbmZvLCBj
b250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6dHJ5SW5z
dGFsbENvbnRleHREYXRhKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGRhdGEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNzk2
YmU4NWUzZTU0NzcyNjg2ZTk1NDgwODQ1ZjA0NTQ4YzVkOTUwMS4uYzE2NjgwNWQ4MWU4NDA2ZjVm
OTNiYWU1ZjBhNDQ3NDE4YjhiNDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMTkwLDcgKzE5MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKFNXU2VydmVyUmVnaXN0cmF0
aW9uJik7CiAKICAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbkZyb21TdG9yZShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJik7Ci0gICAgdm9pZCBkaWRTYXZlV29ya2VyU2NyaXB0c1RvRGlzayhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNo
TWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICB2
b2lkIGRpZFNhdmVXb3JrZXJTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBT
Y3JpcHRCdWZmZXImJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGlt
cG9ydGVkU2NyaXB0cyk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9yZUltcG9ydENvbXBsZXRl
KCk7CiAgICAgdm9pZCByZWdpc3RyYXRpb25TdG9yZURhdGFiYXNlRmFpbGVkVG9PcGVuKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCmluZGV4IDVjYTI1MjY5MTE0NTNkYjA4ZjFmOGYyODMyZGJjNDA0
NWU2NGFhNjUuLjYyN2FhMDliMWNkYmI3ZDRjMjZmZjhhMzE4YWM2NTE2NjQ3MTM4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlckpvYlF1ZXVlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJl
c3VsCiAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG5vdCBudWxsLCBuZXdlc3RXb3JrZXIncyBz
Y3JpcHQgdXJsIGVxdWFscyBqb2IncyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21l
bnRzCiAgICAgLy8gZmxhZyBzZXQsIGFuZCBzY3JpcHQncyBzb3VyY2UgdGV4dCBpcyBhIGJ5dGUt
Zm9yLWJ5dGUgbWF0Y2ggd2l0aCBuZXdlc3RXb3JrZXIncyBzY3JpcHQgcmVzb3VyY2UncyBzb3Vy
Y2UKICAgICAvLyB0ZXh0LCB0aGVuOgotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpLCBqb2Iuc2Ny
aXB0VVJMKSAmJiBuZXdlc3RXb3JrZXItPnR5cGUoKSA9PSBqb2Iud29ya2VyVHlwZSAmJiByZXN1
bHQuc2NyaXB0ID09IHNjcmlwdEJ1ZmZlclRvU3RyaW5nKG5ld2VzdFdvcmtlci0+c2NyaXB0KCkp
ICYmIGRvQ2VydGlmaWNhdGVzTWF0Y2gocmVzdWx0LmNlcnRpZmljYXRlSW5mbywgbmV3ZXN0V29y
a2VyLT5jZXJ0aWZpY2F0ZUluZm8oKSkpIHsKKyAgICBpZiAobmV3ZXN0V29ya2VyICYmIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgam9i
LnNjcmlwdFVSTCkgJiYgbmV3ZXN0V29ya2VyLT50eXBlKCkgPT0gam9iLndvcmtlclR5cGUgJiYg
cmVzdWx0LnNjcmlwdCA9PSBuZXdlc3RXb3JrZXItPnNjcmlwdCgpLnRvU3RyaW5nKCkgJiYgZG9D
ZXJ0aWZpY2F0ZXNNYXRjaChyZXN1bHQuY2VydGlmaWNhdGVJbmZvLCBuZXdlc3RXb3JrZXItPmNl
cnRpZmljYXRlSW5mbygpKSkgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
JXAgLSBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkLCBzY3JpcHQgYW5kIGNl
cnRpZmljYXRlIGFyZSBtYXRjaGluZyBmb3IgcmVnaXN0cmF0aW9uSUQ9JWxsdSIsIHRoaXMsIHJl
Z2lzdHJhdGlvbi0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogICAgICAgICAvLyBGSVhNRTog
Zm9yIG5vbiBjbGFzc2ljIHNjcmlwdHMsIGNoZWNrIHRoZSBzY3JpcHTigJlzIG1vZHVsZSByZWNv
cmQncyBbW0VDTUFTY3JpcHRDb2RlXV0uCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGUxOGEyZDFiYjkxMjk5ZmM2MGYwY2UzNjNkYTBjYzJhYjU0YTVlYzcuLjNh
M2Y3YzAwMGNmN2M4NzNjNzRhYjhiYjM3Zjc5ZTUwYjk2MmQyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgSGFzaE1h
cDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYg
aW1wb3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50
aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAppbmRleCBmOTBiOGYyNzkyMGM0OTAzMWExN2I0OGY2YTMzOWE1OTFiMTQyYzJh
Li4wOGRiMDYyM2M1NDkxZDExNTU2MjZlZjU3Mzg2YTc1MDM3NTNiZjdiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcApAQCAtNDksNyArNDksNyBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJXb3JrZXI6OmV4
aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZgogfQogCiAvLyBG
SVhNRTogVXNlIHItdmFsdWUgcmVmZXJlbmNlcyBmb3Igc2NyaXB0IGFuZCBjb250ZW50U2VjdXJp
dHlQb2xpY3kKLVNXU2VydmVyV29ya2VyOjpTV1NlcnZlcldvcmtlcihTV1NlcnZlciYgc2VydmVy
LCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHNjcmlwdFVS
TCwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUgdHlw
ZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYgc2NyaXB0UmVzb3VyY2VNYXAp
CitTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbiwgY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFNjcmlwdEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiBjb250ZW50
U2VjdXJpdHlQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUs
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlwdFJlc291cmNlTWFwKQog
ICAgIDogbV9zZXJ2ZXIobWFrZVdlYWtQdHIoc2VydmVyKSkKICAgICAsIG1fcmVnaXN0cmF0aW9u
S2V5KHJlZ2lzdHJhdGlvbi5rZXkoKSkKICAgICAsIG1fcmVnaXN0cmF0aW9uKG1ha2VXZWFrUHRy
KHJlZ2lzdHJhdGlvbikpCkBAIC0yMzgsMjEgKzIzOCwyMSBAQCB2b2lkIFNXU2VydmVyV29ya2Vy
OjpzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiB1cmwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wbwogICAgIG1fc2NyaXB0UmVzb3VyY2VNYXAuc2V0KFdURk1vdmUodXJsKSwgV1RGTW92ZShz
Y3JpcHQpKTsKIH0KIAotdm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2so
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBtYWluU2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQordm9pZCBTV1NlcnZlcldvcmtlcjo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFNj
cmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAgICAgLy8gU2VuZCBtbWFwJ2QgdmVy
c2lvbiBvZiB0aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHNvIHdlIGNh
biBzYXZlIGRpcnR5IG1lbW9yeS4KICAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB0
aGlzLT5jb250ZXh0Q29ubmVjdGlvbigpKQogICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWluU2NyaXB0LCBpbXBvcnRlZFNjcmlw
dHMpOwogCiAgICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91
ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRvIHNhdmUgZGlydHkgbWVtb3J5Lgot
ICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0LmdldCgpKTsgLy8gRG8gYSBt
ZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCisgICAgQVNTRVJU
KG1haW5TY3JpcHQgPT0gbV9zY3JpcHQpOyAvLyBEbyBhIG1lbWNtcCB0byBtYWtlIHN1cmUgdGhl
IHNjcmlwdHMgYXJlIGlkZW50aWNhbC4KICAgICBtX3NjcmlwdCA9IFdURk1vdmUobWFpblNjcmlw
dCk7CiAgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CiAgICAgICAgIGF1
dG8gaXQgPSBtX3NjcmlwdFJlc291cmNlTWFwLmZpbmQocGFpci5rZXkpOwogICAgICAgICBBU1NF
UlQoaXQgIT0gbV9zY3JpcHRSZXNvdXJjZU1hcC5lbmQoKSk7CiAgICAgICAgIGlmIChpdCA9PSBt
X3NjcmlwdFJlc291cmNlTWFwLmVuZCgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21w
IHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAgICBBU1NFUlQo
aXQtPnZhbHVlLnNjcmlwdCA9PSBwYWlyLnZhbHVlKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBz
dXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCiAgICAgICAgIGl0LT52YWx1ZS5zY3JpcHQg
PSBXVEZNb3ZlKHBhaXIudmFsdWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBjNDVkYWRi
Y2FiODE5NzZiNzZmMGJlNTMxNGYzYjcxZjc3YjZiMjkxLi5mNGMyYzNiNzU2YTllZjhmMWQwZjVk
MzYyZjBhZWI5ODYwZWE4OGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC04MCw3ICs4MCw3IEBAIHB1Ymxp
YzoKICAgICBTV1NlcnZlciogc2VydmVyKCkgeyByZXR1cm4gbV9zZXJ2ZXIuZ2V0KCk7IH0KICAg
ICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogICAgIGNvbnN0IFVSTCYgc2NyaXB0
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLnNjcmlwdFVSTDsgfQotICAgIFNoYXJlZEJ1ZmZl
ciYgc2NyaXB0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JpcHQ7IH0KKyAgICBjb25zdCBTY3JpcHRC
dWZmZXImIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CiAgICAgY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmlj
YXRlSW5mbzsgfQogICAgIFdvcmtlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS50
eXBlOyB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGZpbmRDbGllbnRCeUlkZW50aWZpZXIo
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImKSBjb25zdDsKICAgICB2b2lkIG1h
dGNoQWxsKGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29y
a2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJik7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJj
ZShVUkwmJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYmKTsKLSAg
ICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlw
dCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7
CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiBtYWluU2NyaXB0
LCBIYXNoTWFwPFVSTCwgU2NyaXB0QnVmZmVyPiYmIGltcG9ydGVkU2NyaXB0cyk7CiAKICAgICB2
b2lkIHNraXBXYWl0aW5nKCk7CiAgICAgYm9vbCBpc1NraXBXYWl0aW5nRmxhZ1NldCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTa2lwV2FpdGluZ0ZsYWdTZXQ7IH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKLSAg
ICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3Qg
VVJMJiwgU2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVy
UG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkws
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOworICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcmJiByZWZlcnJlclBvbGljeSwg
V29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhhc2hNYXA8VVJMLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsKIAogICAgIHZvaWQgY2FsbFdo
ZW5BY3RpdmF0ZWRIYW5kbGVyKGJvb2wgc3VjY2Vzcyk7CiAKQEAgLTE0MSw3ICsxNDEsNyBAQCBw
cml2YXRlOgogICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25L
ZXk7CiAgICAgV2Vha1B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gbV9yZWdpc3RyYXRpb247CiAg
ICAgU2VydmljZVdvcmtlckRhdGEgbV9kYXRhOwotICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fc2Ny
aXB0OworICAgIFNjcmlwdEJ1ZmZlciBtX3NjcmlwdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gbV9j
ZXJ0aWZpY2F0ZUluZm87CiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAgIFN0cmluZyBtX3JlZmVycmVyUG9saWN5Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCA1NTM0YjhkOWI0NGZhOWRjNjA5ZDlmNGM3YjQzYjUzMWQxNTA5ZmQyLi40ZjE4YTM1Nzhh
ODE4Y2ExMmEwM2I3ZjkwZThmNjU5NTg1MjdkOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTA3LDE5ICsxMDcsMTggQEAg
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3JpcHQs
IGNvbnN0IEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpCiB7CiAj
aWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgYXV0
byBzY3JpcHRIYW5kbGUgPSBJUEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxl
KHNjcmlwdCk7Ci0gICAgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+IGlt
cG9ydGVkU2NyaXB0SGFuZGxlczsKKyAgICAvLyBTZW5kIGZpbGUtbWFwcGVkIFNjcmlwdEJ1ZmZl
cnMgb3ZlciB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHNvIHRoYXQgaXQgY2FuIHJlcGxh
Y2UgaXRzIGhlYXAtYWxsb2NhdGVkIGNvcGllcyBhbmQgc2F2ZSBvbiBkaXJ0eSBtZW1vcnkuCisg
ICAgYXV0byBzY3JpcHRUb1NlbmQgPSBzY3JpcHQuY29udGFpbnNTaW5nbGVGaWxlTWFwcGVkU2Vn
bWVudCgpID8gc2NyaXB0IDogU2NyaXB0QnVmZmVyKCk7CisgICAgSGFzaE1hcDxVUkwsIFNjcmlw
dEJ1ZmZlcj4gaW1wb3J0ZWRTY3JpcHRzVG9TZW5kOwogICAgIGZvciAoYXV0byYgcGFpciA6IGlt
cG9ydGVkU2NyaXB0cykgewotICAgICAgICBhdXRvIGhhbmRsZSA9IElQQzo6dHJ5Q29udmVydFRv
U2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKnBhaXIudmFsdWUpOwotICAgICAgICBpZiAoaGFuZGxl
LmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGltcG9ydGVkU2NyaXB0
SGFuZGxlcy5hZGQocGFpci5rZXksIFdURk1vdmUoaGFuZGxlKSk7CisgICAgICAgIGlmIChwYWly
LnZhbHVlLmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBlZFNlZ21lbnQoKSkKKyAgICAgICAgICAgIGlt
cG9ydGVkU2NyaXB0c1RvU2VuZC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUpOwogICAgIH0KLSAg
ICBpZiAoIXNjcmlwdEhhbmRsZS5pc051bGwoKSB8fCAhaW1wb3J0ZWRTY3JpcHRIYW5kbGVzLmlz
RW1wdHkoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkRpZFNhdmVTY3JpcHRzVG9EaXNrIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHNj
cmlwdEhhbmRsZSwgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzIH0pOworICAgIGlmIChzY3JpcHRUb1Nl
bmQgfHwgIWltcG9ydGVkU2NyaXB0c1RvU2VuZC5pc0VtcHR5KCkpCisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRTYXZlU2NyaXB0c1RvRGlz
ayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHRUb1NlbmQsIGltcG9ydGVkU2NyaXB0
c1RvU2VuZCB9KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNjcmlwdCk7CiAgICAgVU5VU0VE
X1BBUkFNKGltcG9ydGVkU2NyaXB0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNjhmNzkyNTM2N2QyNWZjOTNlNzU4ZjRiMDA3ZjU4
MDQzYmM3MTIyMy4uMDBlOWMyMWU4NmQ0ZjllMmU5Zjc3YjA0ZjM3NmM4NGFlOGFmMDQxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAt
ODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwot
ICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwor
ICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYsIGNvbnN0IEhhc2hNYXA8VVJMLCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXI+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZvaWQg
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDEzNzRlMTU4YzJlZTBmOTBmYmRlMmJkN2QxODhj
NGMwNTIyOTQ2ZDcuLjI1NWEyY2JjNmM3N2NlZjFlNjA3MGVhNDIwZjZiZGU5MGIyNDBhNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlN0cmVhbUNvbm5lY3Rp
b25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oPgpAQCAtNzMsNiArNzQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JpcHRCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb29yZGluYXRvci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Lmg+CkBAIC0yODI5LDE0MiArMjgzMSw2IEBAIGJvb2wg
QXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIFNlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIGVu
Y29kZVNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChFbmNvZGVyJiBlbmNvZGVyLCBTaGFy
ZWRCdWZmZXImIHNjcmlwdCkKLXsKLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQ
TEFURk9STShDT0NPQSkKLSAgICBhdXRvIGhhbmRsZSA9IHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlKHNjcmlwdCk7Ci0gICAgYm9vbCBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxl
ID0gIWhhbmRsZS5pc051bGwoKTsKLSAgICBlbmNvZGVyIDw8IGlzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGU7Ci0gICAgaWYgKGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpIHsKLSAgICAgICAgZW5j
b2RlciA8PCBoYW5kbGU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLSAgICBlbmNv
ZGVyIDw8IG1ha2VSZWYoc2NyaXB0KTsKLX0KLQotc3RhdGljIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiBkZWNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERhdGFTY3JpcHQoRGVjb2RlciYgZGVj
b2RlcikKLXsKLSNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NP
QSkKLSAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlOwotICAgIGRl
Y29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKLSAgICBpZiAoIWlzU2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCpp
c1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKSB7Ci0gICAgICAgIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUgaGFuZGxlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkgfHwgaGFu
ZGxlLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAg
YXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7Ci0gICAgICAgIGlm
ICghYnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwotICAgIH0KLSNlbmRpZgotICAgIE9wdGlvbmFs
PFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7Ci0gICAgZGVjb2RlciA+PiBzY3JpcHQ7Ci0gICAg
cmV0dXJuIHNjcmlwdDsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYgaW1wb3J0ZWRTY3JpcHQp
Ci17Ci0gICAgZW5jb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KGVuY29kZXIsICpp
bXBvcnRlZFNjcmlwdC5zY3JpcHQpOwotICAgIGVuY29kZXIgPDwgaW1wb3J0ZWRTY3JpcHQucmVz
cG9uc2VVUkwgPDwgaW1wb3J0ZWRTY3JpcHQubWltZVR5cGU7Ci19Ci0KLU9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IEFyZ3VtZW50Q29kZXI8U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQotewotICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRh
U2NyaXB0KGRlY29kZXIpOwotICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsKLSAgICBkZWNvZGVyID4+
IHJlc3BvbnNlVVJMOwotICAgIGlmICghcmVzcG9uc2VVUkwpCi0gICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBlOwotICAgIGRlY29kZXIg
Pj4gbWltZVR5cGU7Ci0gICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLQotICAgIHJldHVybiB7ewotICAgICAgICBXVEZNb3ZlKCpzY3JpcHQpLAotICAgICAg
ICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCi0gICAgICAgIFdURk1vdmUoKm1pbWVUeXBlKQotICAg
IH19OwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRhPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYg
ZGF0YSkKLXsKLSAgICBlbmNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERhdGFTY3JpcHQoZW5jb2Rl
ciwgZGF0YS5zY3JpcHQpOwotICAgIGVuY29kZXIgPDwgZGF0YS5qb2JEYXRhSWRlbnRpZmllciA8
PCBkYXRhLnJlZ2lzdHJhdGlvbiA8PCBkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IGRh
dGEuY29udGVudFNlY3VyaXR5UG9saWN5IDw8IGRhdGEucmVmZXJyZXJQb2xpY3kKLSAgICAgICAg
PDwgZGF0YS5zY3JpcHRVUkwgPDwgZGF0YS53b3JrZXJUeXBlIDw8IGRhdGEubG9hZGVkRnJvbURp
c2sgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCA8PCBkYXRhLmNlcnRpZmljYXRlSW5mbzsKLX0K
LQotT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBBcmd1bWVudENvZGVyPFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIGF1
dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KGRlY29kZXIp
OwotICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPj4gam9iRGF0
YUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsKLSAgICBpZiAo
IWpvYkRhdGFJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IHJlZ2lzdHJhdGlvbjsKLSAg
ICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKLSAgICBpZiAoIXJlZ2lzdHJhdGlvbikKLSAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZp
ZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwotICAgIGlmICgh
c2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0K
LSAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMgY29udGVudFNlY3VyaXR5
UG9saWN5OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGVudFNlY3VyaXR5UG9saWN5KSkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFN0cmluZyByZWZlcnJlclBvbGlj
eTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVyUG9saWN5KSkKLSAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIFVSTCBzY3JpcHRVUkw7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzY3JpcHRVUkwpKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
V29ya2VyVHlwZSB3b3JrZXJUeXBlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUod29ya2VyVHlw
ZSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBib29sIGxvYWRlZEZyb21E
aXNrOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVkRnJvbURpc2spKQotICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotCi0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87Ci0g
ICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8p
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICByZXR1cm4ge3sKLSAgICAgICAg
V1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3ZlKCpyZWdpc3RyYXRp
b24pLAotICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRpZmllciksCi0gICAgICAg
IFdURk1vdmUoKnNjcmlwdCksCi0gICAgICAgIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksCi0g
ICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKLSAgICAgICAgV1RGTW92ZShy
ZWZlcnJlclBvbGljeSksCi0gICAgICAgIFdURk1vdmUoc2NyaXB0VVJMKSwKLSAgICAgICAgd29y
a2VyVHlwZSwKLSAgICAgICAgbG9hZGVkRnJvbURpc2ssCi0gICAgICAgIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApCi0gICAgfX07Ci19Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKQEAgLTMyMDQsMTUgKzMwNzAsMTIgQEAgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZl
cj4+IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGUK
IH0KIAogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQot
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhh
bmRsZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlIHRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZl
ciYgc2NyaXB0KQogewotICAgIGlmICghYnVmZmVyLmhhc09uZVNlZ21lbnQoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OwotCi0gICAgYXV0byYgc2VnbWVu
dCA9IGJ1ZmZlci5iZWdpbigpLT5zZWdtZW50OwotICAgIGlmICghc2VnbWVudC0+Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpKQorICAgIGlmICghc2NyaXB0LmNvbnRhaW5zU2luZ2xlRmlsZU1hcHBl
ZFNlZ21lbnQoKSkKICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9
OwogCisgICAgYXV0byYgc2VnbWVudCA9IHNjcmlwdC5idWZmZXIoKS0+YmVnaW4oKS0+c2VnbWVu
dDsKICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6d3JhcE1hcChjb25zdF9j
YXN0PGNoYXIqPihzZWdtZW50LT5kYXRhKCkpLCBzZWdtZW50LT5zaXplKCksIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CkBAIC0zMjI1LDggKzMwODgs
NTEgQEAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNv
dXJjZUhhbmRsZShTaGFyZWRCdWZmZXImIGJ1ZmYKICAgICBzaGFyZWFibGVSZXNvdXJjZS0+Y3Jl
YXRlSGFuZGxlKHNoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsKICAgICByZXR1cm4gc2hhcmVhYmxl
UmVzb3VyY2VIYW5kbGU7CiB9CisKK3N0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZm
ZXI+IGRlY29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoRGVjb2RlciYg
ZGVjb2RlcikKK3sKKyAgICBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIGhhbmRsZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkgfHwgaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNo
YXJlZEJ1ZmZlcigpOworICAgIGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiBXZWJDb3JlOjpTY3JpcHRCdWZmZXIgeyBXVEZNb3ZlKGJ1ZmZlcikg
fTsKK30KKyNlbmRpZgorCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVy
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYg
c2NyaXB0KQoreworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENP
Q09BKQorICAgIGF1dG8gaGFuZGxlID0gdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVzb3VyY2VIYW5k
bGUoc2NyaXB0KTsKKyAgICBib29sIGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUgPSAhaGFuZGxl
LmlzTnVsbCgpOworICAgIGVuY29kZXIgPDwgaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAg
ICBpZiAoaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkgeworICAgICAgICBlbmNvZGVyIDw8IGhh
bmRsZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBzY3JpcHQuYnVmZmVyKCkpOworfQorCitPcHRpb25hbDxXZWJDb3JlOjpT
Y3JpcHRCdWZmZXI+IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYg
UExBVEZPUk0oQ09DT0EpCisgICAgT3B0aW9uYWw8Ym9vbD4gaXNTaGFyZWFibGVSZXNvdXJjZUhh
bmRsZTsKKyAgICBkZWNvZGVyID4+IGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgaWYg
KCFpc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICgqaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZSkKKyAgICAgICAgcmV0dXJuIGRl
Y29kZVNjcmlwdEJ1ZmZlckFzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoZGVjb2Rlcik7CiAjZW5k
aWYKIAorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNo
YXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciB7IFdURk1vdmUoYnVmZmVyKSB9
OworfQorCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJiBtZXNzYWdl
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBmMWJhMDA2NzY3Mzk0ZmM5NTJlN2ZiZTVkZDY4ZmIwMzQ2ZWJiOTQ4Li40NWQ2MWY3MDVjODg3
NWJhYzFhMjg5YzVkMDNlYWQ4YTg4NGM1YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMjYsNyArMjYsNiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgotI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNl
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRvcGxheUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dC5oPgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyaW5nTW9kZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50aWFsc1BvbGlj
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV29ya2VyVHlwZS5oPgpAQCAtMTIyLDYgKzEyMCw3IEBA
IGNsYXNzIFJlZ2lvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgU2NyaXB0QnVmZmVyOwogY2xhc3Mg
U2VjdXJpdHlPcmlnaW47CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTcHJpbmdUaW1pbmdG
dW5jdGlvbjsKQEAgLTczNywxNiArNzM2LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsKLSAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYpOwotICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IGRlY29kZShEZWNvZGVyJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQ+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKTsKLSAgICBzdGF0aWMg
T3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4gZGVjb2RlKERlY29kZXImKTsKLX07Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKQEAgLTgwOCwxMSArNzk3LDEwIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8
UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9OwogCi0jaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCi0vLyBJZiB0aGUg
U2hhcmVkQnVmZmVyIGNvbnRhaW5zIGEgc2luZ2xlIHNlZ21lbnQgYW5kIHRoZSBzZWdtZW50IGlz
IE1hcHBlZEZpbGVEYXRhLCB0aGVuIGNvbnZlcnQgaXQgaW50bwotLy8gYSBTaGFyZWFibGVSZXNv
dXJjZSBoYW5kbGUgc28gdGhhdCBpdCBjYW4gYmUgc2VudCBvdmVyIElQQyBhbmQgc2hhcmVkIHdp
dGggYW5vdGhlciBwcm9jZXNzLgotV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRy
eUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
OwotI2VuZGlmCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlNjcmlw
dEJ1ZmZlcj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyJik7CisgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OlNjcmlwdEJ1
ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKK307CiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb246Ok1lc3NhZ2U+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRl
eCBhNGYzNDJiMWVlZWZkNTA4YThjYTc2YjQ2YzBlNjM5YzFlMGI4ZThjLi41MmMxYmVmZTMxMzMw
NTIxYjBkMmUxNzM2MjRmNDFiYmU5ZDMwYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCkBAIC0yNjMsMjIgKzI2Myw5IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVuCiB9
CiAKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLXZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmIHNjcmlwdEhhbmRsZSwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGU+JiBpbXBvcnRlZFNjcmlwdEhhbmRsZXMpCi17Ci0gICAgYXV0
byB0b1NoYXJlZEJ1ZmZlciA9IFtdKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhh
bmRsZSkgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gewotICAgICAgICBpZiAoaGFuZGxlLmlzTnVs
bCgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwotICAgICAgICBpZiAoIXNoYXJl
ZEJ1ZmZlcikKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2s6IEZhaWxl
ZCB0byB3cmFwIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBpbiBhIFNoYXJlZEJ1ZmZlciIpOwot
ICAgICAgICByZXR1cm4gc2hhcmVkQnVmZmVyOwotICAgIH07Ci0gICAgSGFzaE1hcDxVUkwsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+PiBpbXBvcnRlZFNjcmlwdHM7Ci0gICAgZm9yIChhdXRvJiBwYWly
IDogaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKSB7Ci0gICAgICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZl
ciA9IHRvU2hhcmVkQnVmZmVyKHBhaXIudmFsdWUpKQotICAgICAgICAgICAgaW1wb3J0ZWRTY3Jp
cHRzLmFkZChwYWlyLmtleSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpKTsKLSAgICB9Ci0gICAgU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmll
ciwgdG9TaGFyZWRCdWZmZXIoc2NyaXB0SGFuZGxlKSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMp
KTsKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9E
aXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNjcmlwdEJ1
ZmZlciYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNjcmlw
dHMpCit7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZGlkU2F2ZVNjcmlwdHNU
b0Rpc2soaWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0
cykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDEx
ZjllMDlmZDMzZDU5MGZmMTM3M2I2MmYzM2JjMGNkMGU5NjlhMWYuLjc2NjIxODk1MzI4MGFjYTFm
ZWQwYjBlNjkxMDhkOWJjODc4OWRkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aApAQCAtOTIsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIHZvaWQgdGVybWluYXRlV29y
a2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoU0hBUkVB
QkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGRpZFNhdmVTY3JpcHRz
VG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRz
VG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRC
dWZmZXImJiwgSGFzaE1hcDxVUkwsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4mJiBpbXBvcnRlZFNj
cmlwdHMpOwogI2VuZGlmCiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVk
KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKICAgICB2b2lkIG1hdGNo
QWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGFlNTcxNmI5YWYyMTRlYzkwZmQ4
OTM3MGZjZmRlOWJlYThlZGFkMGMuLmZhMmZhMGIxZDJiY2ZmZWE5Y2E2MjZmNjdlOTJmZTIwOTg0
ZTUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCkBAIC0zMiw3ICszMiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAjaWYgRU5BQkxFKFNI
QVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgRGlkU2F2ZVNjcmlwdHNU
b0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+IGltcG9ydGVkU2NyaXB0cyk7
CisgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciBzY3JpcHQs
IEhhc2hNYXA8VVJMLCBXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGltcG9ydGVkU2NyaXB0cyk7CiAj
ZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVu
dElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiAgICAgTWF0Y2hBbGxDb21wbGV0
ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnRzRGF0YSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>