<?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>124193</bug_id>
          
          <creation_ts>2013-11-12 00:09:29 -0800</creation_ts>
          <short_desc>Introduce IDBServerConnection (and start moving things to it)</short_desc>
          <delta_ts>2013-11-12 13:30:06 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>949587</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-12 00:09:29 -0800</bug_when>
    <thetext>Introduce IDBServerConnection (and start moving things to it)

IDBServerConnection will be a purely asynchronous interface for the database connection, transactions, and cursors.

It&apos;s interface will be 100% asynchronous and callback based.

Eventually none of the IDB*Backend classes will need IDBBackingStore* classes at all, and will use IDBServerConnection instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949589</commentid>
    <comment_count>1</comment_count>
      <attachid>216644</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-12 00:13:57 -0800</bug_when>
    <thetext>Created attachment 216644
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949592</commentid>
    <comment_count>2</comment_count>
      <attachid>216644</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-12 00:19:52 -0800</bug_when>
    <thetext>Comment on attachment 216644
Patch v1 

Attachment 216644 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22749454</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949593</commentid>
    <comment_count>3</comment_count>
      <attachid>216645</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-12 00:22:33 -0800</bug_when>
    <thetext>Created attachment 216645
Patch v2 - Implement dtor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949598</commentid>
    <comment_count>4</comment_count>
      <attachid>216645</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-11-12 00:32:08 -0800</bug_when>
    <thetext>Comment on attachment 216645
Patch v2 - Implement dtor

Attachment 216645 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/22699675</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949600</commentid>
    <comment_count>5</comment_count>
      <attachid>216645</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-11-12 00:41:00 -0800</bug_when>
    <thetext>Comment on attachment 216645
Patch v2 - Implement dtor

Attachment 216645 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/22908597</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949601</commentid>
    <comment_count>6</comment_count>
      <attachid>216648</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-12 00:43:03 -0800</bug_when>
    <thetext>Created attachment 216648
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949834</commentid>
    <comment_count>7</comment_count>
      <attachid>216648</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-11-12 13:12:16 -0800</bug_when>
    <thetext>Comment on attachment 216648
Patch v3

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

&gt; Source/WebCore/Modules/indexeddb/IDBServerConnection.h:40
&gt; +// This interface is meant to provide a single asynchronous layer between the web-facing frontend

Does it provide what it means to provide? The comment should either be more assertive, or a specific FIXME.

&gt; Source/WebCore/Modules/indexeddb/IDBServerConnection.h:42
&gt; +// If the completion of an operation is important monitoring it must be through the use of a callback function.

Important?

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBServerConnectionLevelDB.cpp:29
&gt; +#include &quot;IDBBackingStoreInterface.h&quot;

Is there a reason why this is outside ifdefs?

We usually put headers inside ifdefs in cpp files, and outside ifdefs in headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>949845</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-11-12 13:30:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/159144</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216644</attachid>
            <date>2013-11-12 00:13:57 -0800</date>
            <delta_ts>2013-11-12 00:22:33 -0800</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77074</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjFlZjAwYy4uZGY4YjdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc5Myw2ICs3OTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIu
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcAor
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIu
Y3BwCiAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NzMx
N2ZkLi4wNGI2NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDEzLTExLTEyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgSURC
U2VydmVyQ29ubmVjdGlvbiAoYW5kIHN0YXJ0IG1vdmluZyB0aGluZ3MgdG8gaXQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCU2VydmVyQ29ubmVj
dGlvbiB3aWxsIGJlIGEgcHVyZWx5IGFzeW5jaHJvbm91cyBpbnRlcmZhY2UgZm9yIGRhdGFiYXNl
IGNvbm5lY3Rpb25zLCB0cmFuc2FjdGlvbnMsIGFuZCBjdXJzb3JzLgorICAgICAgICBJdHMgaW50
ZXJmYWNlIHdpbGwgYmUgMTAwJSBhc3luY2hyb25vdXMgYW5kIGNhbGxiYWNrIGJhc2VkIC0gUGVy
ZmVjdCBmb3IgYW4gSVBDIGRpdmlkZS4KKyAgICAgICAgRXZlbnR1YWxseSBub25lIG9mIHRoZSBJ
REI8Rm9vPkJhY2tlbmQgY2xhc3NlcyB3aWxsIG5lZWQgSURCQmFja2luZ1N0b3JlPEZvbz4gY2xh
c3NlcyBhdCBhbGwsIAorICAgICAgICBhbmQgdGhleeKAmWxsIGFsbCB1c2UgSURCU2VydmVyQ29u
bmVjdGlvbiBkaXJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb246On5J
REJTZXJ2ZXJDb25uZWN0aW9uKToKKworICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiB0
aGF0IC0gZm9yIG5vdyAtIHdyYXBzIGFuIElEQkJhY2tpbmdTdG9yZUxldmVsREI6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6
OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCOjpkZXByZWNhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjppc0Nsb3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaDogQWRkZWQuCisKKyAgICAgICAgTGV2ZWxEQiBj
cmVhdGVkIGRhdGFiYXNlcyBnZXQgTGV2ZWxEQiBzZXJ2ZXIgY29ubmVjdGlvbnM6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4p
OgorCisgICAgICAgIFJlcGxhY2UgbW9zdCB1c2VzIG9mIElEQkJhY2tpbmdTdG9yZSB3aXRoIHNl
cnZlciBjb25uZWN0aW9uOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OklEQkRhdGFiYXNlQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5h
bEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhL
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6b3BlbkNvbm5lY3Rp
b25JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0
ZURhdGFiYXNlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OnNlcnZlckNvbm5lY3Rpb24p
OgorCisgICAgICAgIENoYW5nZSBhbGwgdGhlIG9wZXJhdGlvbnMgdG8gYWNjZXNzIHRoZWlyIERh
dGFiYXNlQmFja2VuZOKAmXMgc2VydmVyIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBpZiBo
YW5naW5nIG9uIHRvIGEgYmFja2luZyBzdG9yZSBkaXJlY3RseToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUNyZWF0ZU9iamVjdFN0b3Jl
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2No
ZWR1bGVEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ3JlYXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVHZXRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmQ6OnNjaGVkdWxlT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ291bnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVDbGVhck9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVj
dFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4
T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5nZU9w
ZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFu
Z2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OkNyZWF0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OkRlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6R2V0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlB1dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlv
bjo6UHV0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpPcGVuQ3Vy
c29yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OkNvdW50T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlUmFuZ2VPcGVyYXRpb246OkRlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsZWFyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJPcGVyYXRpb246OkNsZWFyT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg6CisKIDIwMTMtMTEtMTEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgSURCVHJhbnNhY3Rp
b24gdGFza3MgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBk
MzA5M2UxLi5iMWRiOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE3OTYs
NiArMTc5Niw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkxldmVsREIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJT
ZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmQuaCBcCkBAIC0xODQ3LDYgKzE4NDksNyBAQCB3ZWJjb3JlX21vZHVs
ZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVj
b3JkSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCBiNDcwOWQ5Li44NWQ4MDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHAKQEAgLTQ0LDE5ICs0NCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IElEQkRhdGFiYXNlQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVu
dGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgSURCU2VydmVyQ29u
bmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbikKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChuYW1lLCBiYWNr
aW5nU3RvcmUsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChu
YW1lLCB1bmlxdWVJZGVudGlmaWVyLCBmYWN0b3J5LCBzZXJ2ZXJDb25uZWN0aW9uKSk7CiAgICAg
YmFja2VuZC0+b3BlbkludGVybmFsQXN5bmMoKTsKICAgICAKICAgICByZXR1cm4gYmFja2VuZC5y
ZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlQmFja2VuZDo6SURCRGF0YWJhc2VCYWNrZW5kKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUs
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpCi0gICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgLCBt
X21ldGFkYXRhKG5hbWUsIEludmFsaWRJZCwgMCwgSW52YWxpZElkKQorSURCRGF0YWJhc2VCYWNr
ZW5kOjpJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBJ
REJTZXJ2ZXJDb25uZWN0aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShu
YW1lLCBJbnZhbGlkSWQsIDAsIEludmFsaWRJZCkKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJ
ZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCisgICAgLCBtX3NlcnZlckNvbm5l
Y3Rpb24oc2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKSkKICAgICAsIG1fY2xvc2luZ0Nvbm5l
Y3Rpb24oZmFsc2UpCiB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmQ6OnJlbW92ZUluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQog
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5hbEFzeW5jKCkKIHsKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kPiBzZWxmID0gdGhpczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+
Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKG1fbWV0YWRhdGEubmFtZSwgW3NlbGZd
KGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1Y2Nlc3MpIHsKKyAg
ICBtX3NlcnZlckNvbm5lY3Rpb24tPmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSht
X21ldGFkYXRhLm5hbWUsIFtzZWxmXShjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0
YSwgYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIHNlbGYtPmRpZE9wZW5JbnRlcm5hbEFzeW5jKG1l
dGFkYXRhLCBzdWNjZXNzKTsKICAgICB9KTsKIH0KQEAgLTEyNywxMSArMTI3LDYgQEAgSURCRGF0
YWJhc2VCYWNrZW5kOjp+SURCRGF0YWJhc2VCYWNrZW5kKCkKIHsKIH0KIAotSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBJREJEYXRhYmFzZUJhY2tlbmQ6OmJhY2tpbmdTdG9yZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLmdldCgpOwotfQotCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0
YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9yZSIpOwpAQCAtMjU3LDcgKzI1Miw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktl
eT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZT4gc3RvcmUgPSBtX2JhY2tpbmdTdG9yZTsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlPiBzdG9yZSA9IG1fc2VydmVyQ29ubmVjdGlvbi0+ZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjb3VsZCBiZSBhc3luY2hy
b25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mgd29ydGggdGhlIGV4dHJhIGNv
bXBsZXhpdHkuCiAgICAgUmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZp
ZXI7CiAgICAgYm9vbCBvayA9IHN0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX21ldGFkYXRhLmlkLCBvYmplY3RTdG9y
ZUlkLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllcik7CkBAIC00ODcsNyArNDgyLDYgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIFAKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5D
b25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVDYWxscy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsK
IApAQCAtNTkyLDE1ICs1ODYsMTQgQEAgYm9vbCBJREJEYXRhYmFzZUJhY2tlbmQ6OmlzRGVsZXRl
RGF0YWJhc2VCbG9ja2VkKCkKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpkZWxldGVEYXRhYmFz
ZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgQVNTRVJU
KCFpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUp
OwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gc2VsZih0aGlzKTsKLSAgICBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9tZXRhZGF0YS5uYW1lLCBbc2VsZiwgY2FsbGJh
Y2tzXShib29sIHN1Y2Nlc3MpIHsKKyAgICBtX3NlcnZlckNvbm5lY3Rpb24tPmRlbGV0ZURhdGFi
YXNlKG1fbWV0YWRhdGEubmFtZSwgW3NlbGYsIGNhbGxiYWNrc10oYm9vbCBzdWNjZXNzKSB7CiAg
ICAgICAgIEFTU0VSVChzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRpbmdDb21wbGV0aW9uLmNv
bnRhaW5zKGNhbGxiYWNrcykpOwogICAgICAgICBzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRp
bmdDb21wbGV0aW9uLnJlbW92ZShjYWxsYmFja3MpOwogCiAgICAgICAgIC8vIElmIHRoaXMgSURC
RGF0YWJhc2VCYWNrZW5kIHdhcyBjbG9zZWQgd2hpbGUgd2FpdGluZyBmb3IgZGVsZXRlRGF0YWJh
c2UgdG8gY29tcGxldGUsIG5vIHBvaW50IGluIHBlcmZvcm1pbmcgYW55IGNhbGxiYWNrcy4KLSAg
ICAgICAgaWYgKCFzZWxmLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgaWYgKCFzZWxmLT5tX3Nl
cnZlckNvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsKQEAgLTY0OCw3ICs2NDEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
KQogCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCi0gICAgICAg
IG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+Y2xv
c2UoKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIGZhbHNlIGluIHVu
aXQgdGVzdHMuCiAgICAgICAgIEFTU0VSVChtX2ZhY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAppbmRleCA3YWVm
OGUwLi5iZTcwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ0RlbGV0ZUNhbGwuaCIKICNpbmNsdWRl
ICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgi
CisKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNDAsNyArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTsKIGNsYXNzIElEQkRhdGFiYXNlOwog
Y2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7CkBAIC01OSwx
MCArNjAsMTAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZW5kPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqLCBJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlKiwgSURCU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIH5JREJEYXRhYmFzZUJhY2tlbmQo
KTsKIAotICAgIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7
CisgICAgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG1f
c2VydmVyQ29ubmVjdGlvbi5nZXQoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52
YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5p
ZDsgfQpAQCAtMTI5LDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBWZXJzaW9uQ2hhbmdl
QWJvcnRPcGVyYXRpb247CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiwgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRh
dGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJREJTZXJ2ZXJDb25uZWN0aW9u
Jik7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uKTsKIApAQCAtMTQ0LDEyICsxNDUsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7CiAgICAgdm9pZCBkZWxldGVE
YXRhYmFzZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKLSAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIG1fbWV0YWRhdGE7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIC8vIFRo
aXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBSZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBsaWZl
dGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdyb3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUgY29u
c2VydmF0aXZlIHRoYW4gc29ycnkuCisKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2U+IG1fZmFjdG9yeTsKKyAgICBSZWY8SURCU2VydmVyQ29ubmVjdGlvbj4gbV9zZXJ2ZXJD
b25uZWN0aW9uOwogCiAgICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk0YjNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJTZXJ2ZXJDb25uZWN0aW9uX2gKKyNk
ZWZpbmUgSURCU2VydmVyQ29ubmVjdGlvbl9oCisKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTsKKworLy8gVGhpcyBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gcHJvdmlkZSBhIHNpbmdsZSBhc3lu
Y2hyb25vdXMgbGF5ZXIgYmV0d2VlbiB0aGUgd2ViLWZhY2luZyBmcm9udGVuZAorLy8gYW5kIHRo
ZSBJL08gcGVyZm9ybWluZyBiYWNrZW5kIG9mIEluZGV4ZWREYXRhYmFzZS4KKy8vIElmIHRoZSBj
b21wbGV0aW9uIG9mIGFuIG9wZXJhdGlvbiBpcyBpbXBvcnRhbnQgbW9uaXRvcmluZyBpdCBtdXN0
IGJlIHRocm91Z2ggdGhlIHVzZSBvZiBhIGNhbGxiYWNrIGZ1bmN0aW9uLgorY2xhc3MgSURCU2Vy
dmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlckNvbm5lY3Rpb24+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JREJTZXJ2ZXJDb25uZWN0aW9uKCkgeyB9CisKKyAgICAv
LyBGSVhNRTogRm9yIG5vdywgc2VydmVyIGNvbm5lY3Rpb24gcHJvdmlkZXMgYSBzeW5jaHJvbm91
cyBhY2Nlc3NvciB0byB0aGUgaW4tcHJvY2VzcyBiYWNraW5nIHN0b3JlLgorICAgIC8vIFRoaXMg
aXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi4KKyAgICB2aXJ0dWFsIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBpc0Nsb3NlZCgpID0gMDsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sIHN1Y2Nlc3MpPiBCb29sQ2FsbGJhY2tGdW5jdGlvbjsKKworICAgIC8vIERh
dGFiYXNlLWxldmVsIG9wZXJhdGlvbnMKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJvb2wgc3VjY2Vzcyk+IEdldElEQkRhdGFiYXNl
TWV0YWRhdGFGdW5jdGlvbjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1
bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVy
Q29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCA3Yzc0NTRiLi41M2JiYmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC01NiwxMCArNTcsOSBAQCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZChJREJEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlQmFja2VuZAogICAgICwgbV9jb21taXRQ
ZW5kaW5nKGZhbHNlKQogICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV9kYXRh
YmFzZShkYXRhYmFzZUJhY2tlbmQpCi0gICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGRh
dGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCkpCisgICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UtPnNlcnZl
ckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCkpCiAgICAgLCBtX3Rhc2tUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25C
YWNrZW5kOjp0YXNrVGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMo
MCkKLSAgICAsIG1fYmFja2luZ1N0b3JlKGRhdGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCkp
CiAgICAgLCBtX2lkKGlkKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBv
YmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgpAQCAtMjcyLDEyICsyNzIsMTIgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OmNsb3NlT3BlbkN1cnNvcnMoKQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogewotICAgIHNj
aGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVB
Ym9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKKyAg
ICBzY2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmQ6OnNjaGVkdWxlRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVs
ZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdT
dG9yZS5nZXQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CisgICAgc2NoZWR1
bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3Rv
cmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBj
b25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTI4NywyMiArMjg3LDIyIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklkCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpz
Y2hlZHVsZUNyZWF0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVsZVRhc2soQ3Jl
YXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CisgICAgc2NoZWR1
bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVJZCwg
aW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hl
ZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9y
ZS5nZXQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7Cisg
ICAgc2NoZWR1bGVUYXNrKERlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0
U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUdldE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUg
Y3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBz
Y2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0
KCksIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVs
ZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1l
dGFkYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewotICAgIHNjaGVkdWxlVGFzayhQ
dXRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2Uo
KS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFj
a3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKKyAgICBzY2hlZHVsZVRhc2soUHV0T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1
ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0
aW9uKHNpemVfdCBpbmRleENvdW50KQpAQCAtMzEyLDIyICszMTIsMjIgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBp
bmRleENvdW50KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVPcGVuQ3Vy
c29yT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKLSAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGN1cnNvclR5cGUsIHRhc2tUeXBlLCBjYWxs
YmFja3MpKTsKKyAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRp
cmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgc2NoZWR1bGVU
YXNrKENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRh
dGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVEZWxldGVSYW5nZU9w
ZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3Jl
LmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKKyAgICBzY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ2xlYXJPcGVyYXRpb24o
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CiB9CiAKIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGVDdXJzb3JCYWNr
ZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaAppbmRleCAyODFkMWZkLi4y
MTA3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaApAQCAtMTIzLDggKzEyMyw2IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHM7CiAKICAgICBIYXNoU2V0PElEQkN1cnNv
ckJhY2tlbmQqPiBtX29wZW5DdXJzb3JzOwotICAgIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKaW5kZXggMjgyN2Q1YS4uOTY2YjQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWMKICAgICBDYWxsT25EZXN0cnVjdCBjYWxsT25E
ZXN0cnVjdChjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVh
dGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZU9iamVjdFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBt
X29iamVjdFN0b3JlTWV0YWRhdGEubmFtZSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50KSkgeworICAgIGlmICghbV90cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdT
dG9yZSgpLT5jcmVhdGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVN
ZXRhZGF0YS5pZCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUsIG1fb2JqZWN0U3RvcmVNZXRh
ZGF0YS5rZXlQYXRoLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkpIHsKICAg
ICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0
KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVjdFN0
b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24t
PmFib3J0KGVycm9yLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTcwLDcgKzcwLDcg
QEAgdm9pZCBDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkNyZWF0ZUluZGV4
T3BlcmF0aW9uIik7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgobV90cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YS5pZCwgbV9pbmRleE1l
dGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRoLCBtX2luZGV4TWV0YWRhdGEudW5p
cXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUo
KS0+Y3JlYXRlSW5kZXgobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhN
ZXRhZGF0YS5pZCwgbV9pbmRleE1ldGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRo
LCBtX2luZGV4TWV0YWRhdGEudW5pcXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsK
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5h
bCBlcnJvciB3aGVuIHRyeWluZyB0byBjcmVhdGUgaW5kZXggJyVzJy4iLCBtX2luZGV4TWV0YWRh
dGEubmFtZS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODcs
NyArODcsNyBAQCB2b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2FsbE9u
RGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAiRGVs
ZXRlSW5kZXhPcGVyYXRpb24iKTsKLSAgICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNh
Y3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEu
aWQpOworICAgIGJvb2wgb2sgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5l
Y3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmRlbGV0ZUluZGV4KG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEuaWQpOwogICAgIGlmICghb2sp
IHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6
Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBpbmRleCAnJXMnLiIsIG1faW5kZXhNZXRh
ZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQo
ZXJyb3IpOwpAQCAtMTE1LDE0ICsxMTUsMTQgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0o
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAgaWYgKG1f
aW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgICAgIEFT
U0VSVChtX2N1cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKICAgICAgICAg
ICAgIC8vIE9iamVjdFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgIGJhY2tp
bmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgp
LnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5PYmplY3RT
dG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2N1cnNvclR5
cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSB7CiAgICAgICAgICAgICAgICAgLy8gSW5k
ZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IobV90cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsK
KyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5J
bmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAg
ICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbklu
ZGV4Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElu
ZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29y
ID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRl
ZEJhY2tpbmdTdG9yZSgpLT5vcGVuSW5kZXhDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewogICAgICAgICAvLyBP
YmplY3QgU3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgogICAgICAgICBWZWN0b3I8Y2hhcj4gdmFs
dWU7Ci0gICAgICAgIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29yZChtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgKmtleSwgdmFsdWUpOworICAgICAgICBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAg
ICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UmVjb3Jk
LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEdldE9w
ZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNr
KQogICAgIH0KIAogICAgIC8vIEZyb20gaGVyZSB3ZSBhcmUgZGVhbGluZyBvbmx5IHdpdGggaW5k
ZXhlcy4KLSAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgKmtleSwgcHJpbWFyeUtleSk7CisgICAgb2sgPSBtX3Ry
YW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2lu
Z1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCAqa2V5LCBwcmltYXJ5S2V5KTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgR2V0T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAg
ICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICBWZWN0
b3I8Y2hhcj4gdmFsdWU7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UmVjb3JkKG1fdHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUpOworICAgIG9rID0gbV90cmFuc2FjdGlvbi0+
ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5n
ZXRSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRh
YmFzZUlkLCBtX29iamVjdFN0b3JlSWQsICpwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFv
aykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGlu
IGdldFJlY29yZC4iKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lk
IFB1dE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogCiAgICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmIChtX3B1dE1vZGUgIT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgbV9vYmplY3RTdG9yZS5hdXRvSW5j
cmVtZW50ICYmICFtX2tleSkgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5KCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmUuaWQpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5nZW5lcmF0ZUtleSgqbV90cmFuc2FjdGlvbiwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlLmlkKTsKICAgICAgICAga2V5V2FzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICAg
ICAgaWYgKCFhdXRvSW5jS2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q29uc3RyYWludEVycm9yLCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNoZWQuIikp
OwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAgICBSZWZQdHI8SURCUmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcjsKICAgICBpZiAobV9wdXRNb2RlID09IElEQkRh
dGFiYXNlQmFja2VuZDo6QWRkT25seSkgewotICAgICAgICBib29sIG9rID0gbV9iYWNraW5nU3Rv
cmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkLCAqa2V5LCByZWNvcmRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksIHJlY29yZElkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoIW9rKSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yIGNoZWNraW5nIGtleSBleGlzdGVuY2UuIikpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgVmVjdG9yPFJlZlB0cjxJ
REJJbmRleFdyaXRlcj4+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgIGJvb2wgb2JleXNDb25zdHJhaW50cyA9IGZhbHNlOwotICAgIGJvb2wgYmFja2luZ1N0b3Jl
U3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9p
bmRleElkcywgbV9pbmRleEtleXMsIGluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXND
b25zdHJhaW50cyk7CisgICAgYm9vbCBiYWNraW5nU3RvcmVTdWNjZXNzID0gbV90cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgp
LT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0
U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9pbmRleElkcywgbV9pbmRleEtleXMsIGlu
ZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXNDb25zdHJhaW50cyk7CiAgICAgaWYgKCFi
YWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAi
SW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgdXBkYXRpbmcgaW5kZXgga2V5cy4i
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFB1dE9wZXJhdGlv
bjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAg
IH0KIAogICAgIC8vIEJlZm9yZSB0aGlzIHBvaW50LCBkb24ndCBkbyBhbnkgbXV0YXRpb24uIEFm
dGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9mIGVycm9y
LgotICAgIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7Cisg
ICAgYmFja2luZ1N0b3JlU3VjY2VzcyA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVy
Q29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CiAgICAgaWYg
KCFiYWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiSW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgcGVyZm9ybWluZyBwdXQvYWRk
LiIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDExICsyNTQsMTEgQEAgdm9pZCBQdXRPcGVy
YXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIElEQkluZGV4V3JpdGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5n
ZXQoKTsKLSAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZp
ZXIuZ2V0KCksICptX2JhY2tpbmdTdG9yZSwgbV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkKTsKKyAgICAgICAgaW5k
ZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICptX3RyYW5z
YWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0
b3JlKCksIG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAgfQogCiAgICAgaWYgKG1fb2JqZWN0U3RvcmUu
YXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JV
cGRhdGUgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7Ci0gICAgICAgIGJv
b2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+dXBkYXRlS2V5R2VuZXJhdG9yKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksICFrZXlXYXNHZW5lcmF0ZWQp
OworICAgICAgICBib29sIG9rID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25u
ZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT51cGRhdGVLZXlHZW5lcmF0b3IoKm1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwgKmtleSwgIWtleVdh
c0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRvci4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsMTMgKzI5MywxMyBAQCB2b2lkIE9wZW5DdXJz
b3JPcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxs
YmFjaykKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBiYWNraW5n
U3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZh
bGlkSWQpIHsKICAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNv
cktleU9ubHkpOwotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fdGFza1R5cGUgPT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpOb3JtYWxUYXNrKTsKICAgICAgICAgaWYgKG1fY3Vyc29yVHlw
ZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CisgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVk
QmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCBtX2tleVJhbmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CiAgICAgfQogCiAgICAgaWYgKCFiYWNr
aW5nU3RvcmVDdXJzb3IpIHsKQEAgLTMyMiw5ICszMjIsOSBAQCB2b2lkIENvdW50T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFja2luZ1N0b3JlQ3Vyc29y
OwogCiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpCi0g
ICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9k
YXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwor
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNl
cnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEtleUN1
cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNl
SWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVk
REI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAgICAgICByZXR1cm47CkBAIC0zNDIs
MTAgKzM0MiwxMCBAQCB2b2lkIERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2Fs
bE9uRGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAi
RGVsZXRlUmFuZ2VPcGVyYXRpb24iKTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6
OkN1cnNvck5leHQpOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29y
KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQp
OwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVjb3JkKG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBiYWNr
aW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1
cnNvci0+cmVjb3JkSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiRXJyb3IgZGVsZXRpbmcgZGF0YSBpbiByYW5nZSIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBD
bGVhck9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0KGNvbXBsZXRpb25DYWxs
YmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb24i
KTsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkKSkgeworICAgIGlmICghbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0
aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkKSkgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkVycm9yIGNsZWFy
aW5nIG9iamVjdCBzdG9yZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3Miw3ICsz
NzIsNyBAQCB2b2lkIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhYwogICAgIENhbGxPbkRlc3RydWN0IGNhbGxP
bkRlc3RydWN0KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkRl
bGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7Ci0gICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3Jl
LT5kZWxldGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YS5pZCk7CisgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+ZGVsZXRlT2JqZWN0U3RvcmUobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuaWQpOwogICAgIGlmICghb2spIHsK
ICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9y
bWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVj
dFN0b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rp
b24tPmFib3J0KGVycm9yKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gYwogICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWlu
dDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KICAgICBBU1NFUlQobV92ZXJz
aW9uID4gKGludDY0X3Qpb2xkVmVyc2lvbik7CiAgICAgZGF0YWJhc2Uuc2V0Q3VycmVudFZlcnNp
b24obV92ZXJzaW9uKTsKLSAgICBpZiAoIWRhdGFiYXNlLmJhY2tpbmdTdG9yZSgpLT51cGRhdGVJ
REJEYXRhYmFzZVZlcnNpb24obV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJzaW9uKSkgeworICAgIGlmICgh
ZGF0YWJhc2Uuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+dXBk
YXRlSURCRGF0YWJhc2VWZXJzaW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLm1ldGFkYXRhKCkudmVyc2lvbikpIHsKICAgICAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICBt
X2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0
KGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaAppbmRleCBiODQ2MmM4
Li5jNGUzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJ
REJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKQEAgLTM2LDQxICszNywzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWF0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3Rv
cmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0
U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRl
T2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgb2JqZWN0U3Rv
cmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2Fs
bGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDcmVhdGVPYmplY3RTdG9yZU9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICB9
CiAgICAgCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsK
LSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9y
ZTsKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YTsKIH07CiAKIGNsYXNzIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9i
amVjdFN0b3JlTWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJh
Y2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5z
YWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFj
a2luZ1N0b3JlKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1l
dGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
PiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9v
YmplY3RTdG9yZU1ldGFkYXRhOwogfTsKIApAQCAtMTU2LDIyICsxNTMsMjAgQEAgcHJpdmF0ZToK
IAogY2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJh
Y2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRh
JiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRlSW5kZXhPcGVyYXRpb24odHJhbnNhY3Rpb24s
IGJhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFM
OwogcHJpdmF0ZToKLSAgICBDcmVhdGVJbmRleE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhKQorICAgIENyZWF0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYg
aW5kZXhNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAg
ICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVjdFN0
b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4TWV0YWRhdGEoaW5kZXhNZXRh
ZGF0YSkKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4g
bV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
PiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAg
ICBjb25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKIH07CkBAIC0xOTgsMjIg
KzE5MywyMCBAQCBwcml2YXRlOgogCiBjbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1l
dGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVJbmRleE9w
ZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1l
dGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlSW5kZXhPcGVyYXRp
b24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxs
YmFjaykgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIERlbGV0ZUluZGV4T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgRGVsZXRlSW5kZXhPcGVyYXRpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5k
ZXhNZXRhZGF0YShpbmRleE1ldGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3Qg
bV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFk
YXRhOwogfTsKQEAgLTI0MCwxNSArMjMzLDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG1ldGFkYXRh
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9u
LCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgR2V0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBHZXRPcGVy
YXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAgLCBtX2JhY2tpbmdTdG9y
ZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRhLmlkKQogICAg
ICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5kZXhJ
ZChpbmRleElkKQpAQCAtMjYzLDcgKzI1NSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBp
bnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsK
ICAgICBjb25zdCBpbnQ2NF90IG1faW5kZXhJZDsKQEAgLTI3NiwxNSArMjY3LDE0IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFB1dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEm
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJ
ZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3Jl
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tz
LCBpbmRleElkcywgaW5kZXhLZXlzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHV0
T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtl
eSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJh
Y2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBQdXRPcGVyYXRpb24oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJh
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4
S2V5cz4mIGluZGV4S2V5cykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQot
ICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFi
YXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCkBAIC0yOTcsNyArMjg3LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9yZTsKICAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3ZhbHVlOwpAQCAtMzI4LDE1ICszMTcsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgT3BlbkN1
cnNvck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCog
dHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJh
c2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVk
REI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0
YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwg
YmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vy
c29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBG
SU5BTDsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAg
ICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3Jl
SWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKQEAgLTM0OSw3
ICszMzcsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmQ+IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7
CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBt
X2luZGV4SWQ7CkBAIC0zNjIsMTUgKzM0OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBDb3VudE9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ291bnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tp
bmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvdW50T3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBDb3VudE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAg
Q291bnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAg
LCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRh
dGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCiAgICAg
ICAgICwgbV9pbmRleElkKGluZGV4SWQpCkBAIC0zODAsNyArMzY2LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9v
YmplY3RTdG9yZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9pbmRleElkOwpAQCAtMzkwLDE1ICsz
NzUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRlUmFuZ2VPcGVyYXRpb24gOiBwdWJsaWMg
SURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlUmFuZ2VPcGVyYXRpb24odHJhbnNh
Y3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2Us
IGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZVJhbmdlT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVSYW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9u
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIERlbGV0ZVJhbmdl
T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBt
X29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2tleVJhbmdlKGtleVJh
bmdlKQpAQCAtNDA3LDcgKzM5MSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90
IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBj
b25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7CkBAIC00MTYsMTUgKzM5OSwxNCBA
QCBwcml2YXRlOgogCiBjbGFzcyBDbGVhck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgQ2xlYXJPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorICAgIENsZWFyT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rp
b24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1f
ZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RT
dG9yZUlkKQogICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKQEAgLTQzMiw3ICs0MTQs
NiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+
IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAg
Y29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggMTUyMDIzMi4u
MTk4NzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rpb25zIGFzIHRoZXkgc3RhcnQgYW5kIGZp
bmlzaC4KICAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCopOworICAgIHZvaWQgZGlkT3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uQmFja2VuZCopOwogICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmQqKTsKICAgICB2b2lkIGRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9u
QmFja2VuZCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5k
ZXggYzU5YmJlYi4uZWMyYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEyMiw3ICsxMjMsOCBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNr
ZW5kOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlm
aWVyKTsKKyAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbiA9
IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3JlLmdldCgpKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRh
YmFzZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCB1bmlxdWVJZGVudGlmaWVyLCB0aGlzLCAqc2VydmVy
Q29ubmVjdGlvbik7CiAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkgewogICAgICAgICBtX2RhdGFi
YXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgp
KTsKICAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwpA
QCAtMTc2LDcgKzE3OCw4IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgaW50NjRfCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFz
ZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1ZUlk
ZW50aWZpZXIpOworICAgICAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29u
bmVjdGlvbiA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3Jl
LmdldCgpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kOjpj
cmVhdGUobmFtZSwgdW5pcXVlSWRlbnRpZmllciwgdGhpcywgKnNlcnZlckNvbm5lY3Rpb24pOwog
ICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQogICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tl
bmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzM5YjAxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJD
b25uZWN0aW9uTGV2ZWxEQi5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIgor
CisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIo
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUpCisgICAgOiBtX2JhY2tpbmdT
dG9yZShiYWNraW5nU3RvcmUpCisgICAgLCBtX2Nsb3NlZChmYWxzZSkKK3sKK30KKworSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6ZGVwcmVjYXRl
ZEJhY2tpbmdTdG9yZSgpCit7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLmdldCgpOworfQor
Citib29sIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjppc0Nsb3NlZCgpCit7CisgICAgcmV0
dXJuIG1fY2xvc2VkOworfQorCit2b2lkIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpnZXRP
ckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRJREJE
YXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgUmVmUHRyPElEQlNlcnZl
ckNvbm5lY3Rpb24+IHNlbGYodGhpcyk7CisgICAgbV9iYWNraW5nU3RvcmUtPmdldE9yRXN0YWJs
aXNoSURCRGF0YWJhc2VNZXRhZGF0YShuYW1lLCBbc2VsZiwgdGhpcywgY2FsbGJhY2tdKGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAg
Y2FsbGJhY2sobWV0YWRhdGEsIHN1Y2Nlc3MpOworICAgIH0pOworfQorCit2b2lkIElEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEJv
b2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykKK3sKKyAgICBSZWZQdHI8SURCU2Vy
dmVyQ29ubmVjdGlvbj4gc2VsZih0aGlzKTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlRGF0
YWJhc2UobmFtZSwgW3NlbGYsIHRoaXMsIHN1Y2Nlc3NDYWxsYmFja10oYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKKyAgICB9KTsKK30KKwordm9pZCBJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Y2xvc2UoKQoreworICAgIG1fYmFja2luZ1N0b3Jl
LmNsZWFyKCk7CisgICAgbV9jbG9zZWQgPSB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBVU0UoTEVWRUxEQikKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE4YmFlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlNl
cnZlckNvbm5lY3Rpb25MZXZlbERCX2gKKyNkZWZpbmUgSURCU2VydmVyQ29ubmVjdGlvbkxldmVs
REJfaAorCisjaW5jbHVkZSAiSURCU2VydmVyQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjaWYgVVNFKExFVkVMREIpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOworCitjbGFzcyBJREJTZXJ2ZXJDb25u
ZWN0aW9uTGV2ZWxEQiBGSU5BTCA6IHB1YmxpYyBJREJTZXJ2ZXJDb25uZWN0aW9uIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJTZXJ2ZXJDb25uZWN0aW9uPiBjcmVhdGUoSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCKGJhY2tpbmdTdG9yZSkp
OworICAgIH0KKworICAgIHZpcnR1YWwgfklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCKCk7CisK
KyAgICAvLyBGSVhNRTogRm9yIG5vdywgc2VydmVyIGNvbm5lY3Rpb24gcHJvdmlkZXMgYSBzeW5j
aHJvbm91cyBhY2Nlc3NvciB0byB0aGUgaW4tcHJvY2VzcyBiYWNraW5nIHN0b3JlLgorICAgIC8v
IFRoaXMgaXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi4KKyAgICB2aXJ0dWFs
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpIE9WRVJS
SURFOworCisgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkKCkgT1ZFUlJJREU7CisKKyAgICAvLyBE
YXRhYmFzZS1sZXZlbCBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2b2lkIGdldE9yRXN0YWJsaXNo
SURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIEdldElEQkRhdGFiYXNlTWV0
YWRhdGFGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNl
KGNvbnN0IFN0cmluZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNr
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBPVkVSUklERTsKKworcHJpdmF0
ZToKKyAgICBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQihJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2UqKTsKKworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0
b3JlOworICAgIGJvb2wgbV9jbG9zZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBVU0UoTEVWRUxEQikKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyNlbmRpZiAvLyBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmIxMzhkMy4u
N2I4MjM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTY0NSw2ICsxNjQ1LDcgQEAKIAkJNTEwMTg0NkEwQjA4NjAyQTAwNEE4
MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICov
OyB9OwogCQk1MTA1OURERDE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5k
T3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTA1OUREOTE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kT3Bl
cmF0aW9ucy5jcHAgKi87IH07CiAJCTUxMDU5RERFMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFu
c2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTA1OUREQTE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNhY3Rp
b25CYWNrZW5kT3BlcmF0aW9ucy5oICovOyB9OworCQk1MTBBMzI2RjE4MzE4NDMxMDAzQzUzMjYg
LyogSURCU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwQTMyNkUxODMxODQzMTAwM0M1MzI2IC8qIElEQlNlcnZlckNvbm5l
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTBCN0RCNzE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEI3REI1MTgy
RDlGNUQwMDlCRjk1NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwICovOyB9OwogCQk1MTBC
N0RCODE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBCN0RCNjE4MkQ5RjVEMDA5
QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmNwcCAqLzsgfTsKQEAgLTE3MjksNiArMTczMCw4IEBACiAJCTUxNjBGNDk4MEIwQUE3
NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5
SXRlbU1hYy5tbSAqLzsgfTsKIAkJNTE2MkM3RjQxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJl
Z2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNjJDN0YyMTFGNzdFRkEwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5jcHAgKi87IH07CiAJ
CTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MkM3RjMxMUY3N0VGQjAwNjEy
RUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNTE2NEVENDMxODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNv
bm5lY3Rpb25MZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNjRFRDQxMTgzMjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9u
TGV2ZWxEQi5jcHAgKi87IH07CisJCTUxNjRFRDQ0MTgzMjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2
ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE2NEVENDIxODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rp
b25MZXZlbERCLmggKi87IH07CiAJCTUxNjYwQUI2MTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNr
aW5nU3RvcmVMZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNjYwQUIwMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVMZXZl
bERCLmNwcCAqLzsgfTsKIAkJNTE2NjBBQjcxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdT
dG9yZUxldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNjYwQUIxMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVMZXZlbERCLmgg
Ki87IH07CiAJCTUxNjYwQUI4MTgyOEJCODIwMDA3NENBRCAvKiBJREJGYWN0b3J5QmFja2VuZExl
dmVsREIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE2NjBBQjIxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAg
Ki87IH07CkBAIC04MzI2LDYgKzgzMjksNyBAQAogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
YWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNTlERDkxODIw
QjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kT3Bl
cmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDU5RERBMTgyMEIx
NzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQTMyNkUxODMxODQzMTAwM0M1MzI2
IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSURCU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTBCN0RCNTE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEI3REI2MTgyRDlGNUQwMDlCRjk1
NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JC
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MTEsNiArODQxNSw4IEBA
CiAJCTUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEhpc3RvcnlJdGVtTWFjLm1tOyBwYXRo
ID0gbWFjL0hpc3RvcnlJdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NoZW1lUmVnaXN0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTYyQzdGMzExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVn
aXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZW1lUmVnaXN0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NEVENDExODMyMDhDNzAwRUE4RkYx
IC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NEVENDIxODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNjYwQUIwMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkJhY2tpbmdTdG9yZUxldmVs
REIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTY2MEFCMTE4MjhCQjgyMDAw
NzRDQUQgLyogSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmVMZXZlbERCLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNjYwQUIyMTgyOEJCODIwMDA3NENBRCAvKiBJREJGYWN0b3J5QmFja2VuZExl
dmVsREIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTE3
LDYgKzE1MTIzLDggQEAKIAkJCQk1MTY2MEFCMzE4MjhCQjgyMDAwNzRDQUQgLyogSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmggKi8sCiAJCQkJNTE2NjBBQjQxODI4QkI4MjAwMDc0Q0FEIC8qIElE
QkxldmVsREJDb2RpbmcuY3BwICovLAogCQkJCTUxNjYwQUI1MTgyOEJCODIwMDA3NENBRCAvKiBJ
REJMZXZlbERCQ29kaW5nLmggKi8sCisJCQkJNTE2NEVENDExODMyMDhDNzAwRUE4RkYxIC8qIElE
QlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCAqLywKKwkJCQk1MTY0RUQ0MjE4MzIwOEM3MDBF
QThGRjEgLyogSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gbGV2ZWxkYjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzAwMiw2ICsxNzAx
MCw3IEBACiAJCQkJNTFENzE5QTExODExMDZFMDAwMTZEQzUxIC8qIElEQlJlcXVlc3QuY3BwICov
LAogCQkJCTUxRDcxOUEyMTgxMTA2RTAwMDE2REM1MSAvKiBJREJSZXF1ZXN0LmggKi8sCiAJCQkJ
NTFENzE5QTMxODExMDZFMDAwMTZEQzUxIC8qIElEQlJlcXVlc3QuaWRsICovLAorCQkJCTUxMEEz
MjZFMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uLmggKi8sCiAJCQkJNTFE
NzE5QTQxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmNwcCAqLywKIAkJCQk1MUQ3
MTlBNTE4MTEwNkUwMDAxNkRDNTEgLyogSURCVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk1MUQ3MTlB
NjE4MTEwNkUwMDAxNkRDNTEgLyogSURCVHJhbnNhY3Rpb24uaWRsICovLApAQCAtMjE5NTgsNiAr
MjE5NjcsNyBAQAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzBGNTQ5RTE3RjI0MDI3MDAxNjlFMDQgLyogQXVk
aW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBCRDEyQjAy
NzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEwQTMyNkYxODMxODQzMTAwM0M1MzI2IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAvKiBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIwMjZGNzAwQzFBMzU5IC8qIEF1
ZGlvRFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0MUVCMzE4MThGNUVEMDBFRTRD
NDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTIzMTc1LDYgKzIz
MTg1LDcgQEAKIAkJCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMzRjA1M0UxMjBCMERBNTAwRTU3NDNB
IC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMjQ1ODdD
MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTE2NEVENDQxODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERC
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlB
NjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDcwNTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI3NDI3LDYgKzI3NDM4LDcgQEAKIAkJCQk1MTFFRjJDNDE3RjBG
RDM1MDBFNEZBMTYgLyogSlNJREJGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQzY1
NzEyMTgxNUY5REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0M0NBIC8qIFJlbmRlclByb2dy
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNjRFRDQzMTgzMjA4QzcwMEVBOEZGMSAvKiBJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QTU3NEYy
NDEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QjVCN0ExNzAxN0MxMEFBODAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUQ3MEFENjU3MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5kZXJSZWdpb24uY3BwIGluIFNv
dXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="239642"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216645</attachid>
            <date>2013-11-12 00:22:33 -0800</date>
            <delta_ts>2013-11-12 00:43:03 -0800</delta_ts>
            <desc>Patch v2 - Implement dtor</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77149</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjFlZjAwYy4uZGY4YjdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc5Myw2ICs3OTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIu
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcAor
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIu
Y3BwCiAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NzMx
N2ZkLi4wNGI2NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDEzLTExLTEyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgSURC
U2VydmVyQ29ubmVjdGlvbiAoYW5kIHN0YXJ0IG1vdmluZyB0aGluZ3MgdG8gaXQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCU2VydmVyQ29ubmVj
dGlvbiB3aWxsIGJlIGEgcHVyZWx5IGFzeW5jaHJvbm91cyBpbnRlcmZhY2UgZm9yIGRhdGFiYXNl
IGNvbm5lY3Rpb25zLCB0cmFuc2FjdGlvbnMsIGFuZCBjdXJzb3JzLgorICAgICAgICBJdHMgaW50
ZXJmYWNlIHdpbGwgYmUgMTAwJSBhc3luY2hyb25vdXMgYW5kIGNhbGxiYWNrIGJhc2VkIC0gUGVy
ZmVjdCBmb3IgYW4gSVBDIGRpdmlkZS4KKyAgICAgICAgRXZlbnR1YWxseSBub25lIG9mIHRoZSBJ
REI8Rm9vPkJhY2tlbmQgY2xhc3NlcyB3aWxsIG5lZWQgSURCQmFja2luZ1N0b3JlPEZvbz4gY2xh
c3NlcyBhdCBhbGwsIAorICAgICAgICBhbmQgdGhleeKAmWxsIGFsbCB1c2UgSURCU2VydmVyQ29u
bmVjdGlvbiBkaXJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb246On5J
REJTZXJ2ZXJDb25uZWN0aW9uKToKKworICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiB0
aGF0IC0gZm9yIG5vdyAtIHdyYXBzIGFuIElEQkJhY2tpbmdTdG9yZUxldmVsREI6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6
OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCOjpkZXByZWNhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjppc0Nsb3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaDogQWRkZWQuCisKKyAgICAgICAgTGV2ZWxEQiBj
cmVhdGVkIGRhdGFiYXNlcyBnZXQgTGV2ZWxEQiBzZXJ2ZXIgY29ubmVjdGlvbnM6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4p
OgorCisgICAgICAgIFJlcGxhY2UgbW9zdCB1c2VzIG9mIElEQkJhY2tpbmdTdG9yZSB3aXRoIHNl
cnZlciBjb25uZWN0aW9uOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OklEQkRhdGFiYXNlQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5h
bEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhL
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6b3BlbkNvbm5lY3Rp
b25JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0
ZURhdGFiYXNlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OnNlcnZlckNvbm5lY3Rpb24p
OgorCisgICAgICAgIENoYW5nZSBhbGwgdGhlIG9wZXJhdGlvbnMgdG8gYWNjZXNzIHRoZWlyIERh
dGFiYXNlQmFja2VuZOKAmXMgc2VydmVyIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBpZiBo
YW5naW5nIG9uIHRvIGEgYmFja2luZyBzdG9yZSBkaXJlY3RseToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUNyZWF0ZU9iamVjdFN0b3Jl
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2No
ZWR1bGVEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ3JlYXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVHZXRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmQ6OnNjaGVkdWxlT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ291bnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVDbGVhck9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVj
dFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4
T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5nZU9w
ZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFu
Z2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OkNyZWF0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OkRlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6R2V0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlB1dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlv
bjo6UHV0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpPcGVuQ3Vy
c29yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OkNvdW50T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlUmFuZ2VPcGVyYXRpb246OkRlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsZWFyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJPcGVyYXRpb246OkNsZWFyT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg6CisKIDIwMTMtMTEtMTEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgSURCVHJhbnNhY3Rp
b24gdGFza3MgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBk
MzA5M2UxLi5iMWRiOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE3OTYs
NiArMTc5Niw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkxldmVsREIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJT
ZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmQuaCBcCkBAIC0xODQ3LDYgKzE4NDksNyBAQCB3ZWJjb3JlX21vZHVs
ZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVj
b3JkSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCBiNDcwOWQ5Li44NWQ4MDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHAKQEAgLTQ0LDE5ICs0NCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IElEQkRhdGFiYXNlQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVu
dGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgSURCU2VydmVyQ29u
bmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbikKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChuYW1lLCBiYWNr
aW5nU3RvcmUsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChu
YW1lLCB1bmlxdWVJZGVudGlmaWVyLCBmYWN0b3J5LCBzZXJ2ZXJDb25uZWN0aW9uKSk7CiAgICAg
YmFja2VuZC0+b3BlbkludGVybmFsQXN5bmMoKTsKICAgICAKICAgICByZXR1cm4gYmFja2VuZC5y
ZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlQmFja2VuZDo6SURCRGF0YWJhc2VCYWNrZW5kKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUs
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpCi0gICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgLCBt
X21ldGFkYXRhKG5hbWUsIEludmFsaWRJZCwgMCwgSW52YWxpZElkKQorSURCRGF0YWJhc2VCYWNr
ZW5kOjpJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBJ
REJTZXJ2ZXJDb25uZWN0aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShu
YW1lLCBJbnZhbGlkSWQsIDAsIEludmFsaWRJZCkKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJ
ZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCisgICAgLCBtX3NlcnZlckNvbm5l
Y3Rpb24oc2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKSkKICAgICAsIG1fY2xvc2luZ0Nvbm5l
Y3Rpb24oZmFsc2UpCiB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmQ6OnJlbW92ZUluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQog
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5hbEFzeW5jKCkKIHsKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kPiBzZWxmID0gdGhpczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+
Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKG1fbWV0YWRhdGEubmFtZSwgW3NlbGZd
KGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1Y2Nlc3MpIHsKKyAg
ICBtX3NlcnZlckNvbm5lY3Rpb24tPmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSht
X21ldGFkYXRhLm5hbWUsIFtzZWxmXShjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0
YSwgYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIHNlbGYtPmRpZE9wZW5JbnRlcm5hbEFzeW5jKG1l
dGFkYXRhLCBzdWNjZXNzKTsKICAgICB9KTsKIH0KQEAgLTEyNywxMSArMTI3LDYgQEAgSURCRGF0
YWJhc2VCYWNrZW5kOjp+SURCRGF0YWJhc2VCYWNrZW5kKCkKIHsKIH0KIAotSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBJREJEYXRhYmFzZUJhY2tlbmQ6OmJhY2tpbmdTdG9yZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLmdldCgpOwotfQotCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0
YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9yZSIpOwpAQCAtMjU3LDcgKzI1Miw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktl
eT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZT4gc3RvcmUgPSBtX2JhY2tpbmdTdG9yZTsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlPiBzdG9yZSA9IG1fc2VydmVyQ29ubmVjdGlvbi0+ZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjb3VsZCBiZSBhc3luY2hy
b25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mgd29ydGggdGhlIGV4dHJhIGNv
bXBsZXhpdHkuCiAgICAgUmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZp
ZXI7CiAgICAgYm9vbCBvayA9IHN0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX21ldGFkYXRhLmlkLCBvYmplY3RTdG9y
ZUlkLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllcik7CkBAIC00ODcsNyArNDgyLDYgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIFAKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5D
b25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVDYWxscy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsK
IApAQCAtNTkyLDE1ICs1ODYsMTQgQEAgYm9vbCBJREJEYXRhYmFzZUJhY2tlbmQ6OmlzRGVsZXRl
RGF0YWJhc2VCbG9ja2VkKCkKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpkZWxldGVEYXRhYmFz
ZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgQVNTRVJU
KCFpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUp
OwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gc2VsZih0aGlzKTsKLSAgICBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9tZXRhZGF0YS5uYW1lLCBbc2VsZiwgY2FsbGJh
Y2tzXShib29sIHN1Y2Nlc3MpIHsKKyAgICBtX3NlcnZlckNvbm5lY3Rpb24tPmRlbGV0ZURhdGFi
YXNlKG1fbWV0YWRhdGEubmFtZSwgW3NlbGYsIGNhbGxiYWNrc10oYm9vbCBzdWNjZXNzKSB7CiAg
ICAgICAgIEFTU0VSVChzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRpbmdDb21wbGV0aW9uLmNv
bnRhaW5zKGNhbGxiYWNrcykpOwogICAgICAgICBzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRp
bmdDb21wbGV0aW9uLnJlbW92ZShjYWxsYmFja3MpOwogCiAgICAgICAgIC8vIElmIHRoaXMgSURC
RGF0YWJhc2VCYWNrZW5kIHdhcyBjbG9zZWQgd2hpbGUgd2FpdGluZyBmb3IgZGVsZXRlRGF0YWJh
c2UgdG8gY29tcGxldGUsIG5vIHBvaW50IGluIHBlcmZvcm1pbmcgYW55IGNhbGxiYWNrcy4KLSAg
ICAgICAgaWYgKCFzZWxmLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgaWYgKCFzZWxmLT5tX3Nl
cnZlckNvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsKQEAgLTY0OCw3ICs2NDEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
KQogCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCi0gICAgICAg
IG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+Y2xv
c2UoKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIGZhbHNlIGluIHVu
aXQgdGVzdHMuCiAgICAgICAgIEFTU0VSVChtX2ZhY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAppbmRleCA3YWVm
OGUwLi5iZTcwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ0RlbGV0ZUNhbGwuaCIKICNpbmNsdWRl
ICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgi
CisKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNDAsNyArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTsKIGNsYXNzIElEQkRhdGFiYXNlOwog
Y2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7CkBAIC01OSwx
MCArNjAsMTAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZW5kPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqLCBJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlKiwgSURCU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIH5JREJEYXRhYmFzZUJhY2tlbmQo
KTsKIAotICAgIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7
CisgICAgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG1f
c2VydmVyQ29ubmVjdGlvbi5nZXQoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52
YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5p
ZDsgfQpAQCAtMTI5LDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBWZXJzaW9uQ2hhbmdl
QWJvcnRPcGVyYXRpb247CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiwgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRh
dGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJREJTZXJ2ZXJDb25uZWN0aW9u
Jik7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uKTsKIApAQCAtMTQ0LDEyICsxNDUsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7CiAgICAgdm9pZCBkZWxldGVE
YXRhYmFzZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKLSAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIG1fbWV0YWRhdGE7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIC8vIFRo
aXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBSZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBsaWZl
dGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdyb3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUgY29u
c2VydmF0aXZlIHRoYW4gc29ycnkuCisKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2U+IG1fZmFjdG9yeTsKKyAgICBSZWY8SURCU2VydmVyQ29ubmVjdGlvbj4gbV9zZXJ2ZXJD
b25uZWN0aW9uOwogCiAgICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk0YjNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJTZXJ2ZXJDb25uZWN0aW9uX2gKKyNk
ZWZpbmUgSURCU2VydmVyQ29ubmVjdGlvbl9oCisKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTsKKworLy8gVGhpcyBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gcHJvdmlkZSBhIHNpbmdsZSBhc3lu
Y2hyb25vdXMgbGF5ZXIgYmV0d2VlbiB0aGUgd2ViLWZhY2luZyBmcm9udGVuZAorLy8gYW5kIHRo
ZSBJL08gcGVyZm9ybWluZyBiYWNrZW5kIG9mIEluZGV4ZWREYXRhYmFzZS4KKy8vIElmIHRoZSBj
b21wbGV0aW9uIG9mIGFuIG9wZXJhdGlvbiBpcyBpbXBvcnRhbnQgbW9uaXRvcmluZyBpdCBtdXN0
IGJlIHRocm91Z2ggdGhlIHVzZSBvZiBhIGNhbGxiYWNrIGZ1bmN0aW9uLgorY2xhc3MgSURCU2Vy
dmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlckNvbm5lY3Rpb24+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JREJTZXJ2ZXJDb25uZWN0aW9uKCkgeyB9CisKKyAgICAv
LyBGSVhNRTogRm9yIG5vdywgc2VydmVyIGNvbm5lY3Rpb24gcHJvdmlkZXMgYSBzeW5jaHJvbm91
cyBhY2Nlc3NvciB0byB0aGUgaW4tcHJvY2VzcyBiYWNraW5nIHN0b3JlLgorICAgIC8vIFRoaXMg
aXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi4KKyAgICB2aXJ0dWFsIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBpc0Nsb3NlZCgpID0gMDsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sIHN1Y2Nlc3MpPiBCb29sQ2FsbGJhY2tGdW5jdGlvbjsKKworICAgIC8vIERh
dGFiYXNlLWxldmVsIG9wZXJhdGlvbnMKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJvb2wgc3VjY2Vzcyk+IEdldElEQkRhdGFiYXNl
TWV0YWRhdGFGdW5jdGlvbjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1
bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVy
Q29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCA3Yzc0NTRiLi41M2JiYmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC01NiwxMCArNTcsOSBAQCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZChJREJEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlQmFja2VuZAogICAgICwgbV9jb21taXRQ
ZW5kaW5nKGZhbHNlKQogICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV9kYXRh
YmFzZShkYXRhYmFzZUJhY2tlbmQpCi0gICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGRh
dGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCkpCisgICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UtPnNlcnZl
ckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCkpCiAgICAgLCBtX3Rhc2tUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25C
YWNrZW5kOjp0YXNrVGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMo
MCkKLSAgICAsIG1fYmFja2luZ1N0b3JlKGRhdGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCkp
CiAgICAgLCBtX2lkKGlkKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBv
YmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgpAQCAtMjcyLDEyICsyNzIsMTIgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OmNsb3NlT3BlbkN1cnNvcnMoKQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogewotICAgIHNj
aGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVB
Ym9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKKyAg
ICBzY2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmQ6OnNjaGVkdWxlRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVs
ZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdT
dG9yZS5nZXQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CisgICAgc2NoZWR1
bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3Rv
cmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBj
b25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTI4NywyMiArMjg3LDIyIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklkCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpz
Y2hlZHVsZUNyZWF0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVsZVRhc2soQ3Jl
YXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CisgICAgc2NoZWR1
bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVJZCwg
aW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hl
ZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9y
ZS5nZXQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7Cisg
ICAgc2NoZWR1bGVUYXNrKERlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0
U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUdldE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUg
Y3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBz
Y2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0
KCksIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVs
ZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1l
dGFkYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewotICAgIHNjaGVkdWxlVGFzayhQ
dXRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2Uo
KS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFj
a3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKKyAgICBzY2hlZHVsZVRhc2soUHV0T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1
ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0
aW9uKHNpemVfdCBpbmRleENvdW50KQpAQCAtMzEyLDIyICszMTIsMjIgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBp
bmRleENvdW50KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVPcGVuQ3Vy
c29yT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKLSAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGN1cnNvclR5cGUsIHRhc2tUeXBlLCBjYWxs
YmFja3MpKTsKKyAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRp
cmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgc2NoZWR1bGVU
YXNrKENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRh
dGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVEZWxldGVSYW5nZU9w
ZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3Jl
LmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKKyAgICBzY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ2xlYXJPcGVyYXRpb24o
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CiB9CiAKIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGVDdXJzb3JCYWNr
ZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaAppbmRleCAyODFkMWZkLi4y
MTA3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaApAQCAtMTIzLDggKzEyMyw2IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHM7CiAKICAgICBIYXNoU2V0PElEQkN1cnNv
ckJhY2tlbmQqPiBtX29wZW5DdXJzb3JzOwotICAgIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKaW5kZXggMjgyN2Q1YS4uOTY2YjQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWMKICAgICBDYWxsT25EZXN0cnVjdCBjYWxsT25E
ZXN0cnVjdChjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVh
dGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZU9iamVjdFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBt
X29iamVjdFN0b3JlTWV0YWRhdGEubmFtZSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50KSkgeworICAgIGlmICghbV90cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdT
dG9yZSgpLT5jcmVhdGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVN
ZXRhZGF0YS5pZCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUsIG1fb2JqZWN0U3RvcmVNZXRh
ZGF0YS5rZXlQYXRoLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkpIHsKICAg
ICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0
KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVjdFN0
b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24t
PmFib3J0KGVycm9yLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTcwLDcgKzcwLDcg
QEAgdm9pZCBDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkNyZWF0ZUluZGV4
T3BlcmF0aW9uIik7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgobV90cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YS5pZCwgbV9pbmRleE1l
dGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRoLCBtX2luZGV4TWV0YWRhdGEudW5p
cXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUo
KS0+Y3JlYXRlSW5kZXgobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhN
ZXRhZGF0YS5pZCwgbV9pbmRleE1ldGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRo
LCBtX2luZGV4TWV0YWRhdGEudW5pcXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsK
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5h
bCBlcnJvciB3aGVuIHRyeWluZyB0byBjcmVhdGUgaW5kZXggJyVzJy4iLCBtX2luZGV4TWV0YWRh
dGEubmFtZS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODcs
NyArODcsNyBAQCB2b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2FsbE9u
RGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAiRGVs
ZXRlSW5kZXhPcGVyYXRpb24iKTsKLSAgICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNh
Y3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEu
aWQpOworICAgIGJvb2wgb2sgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5l
Y3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmRlbGV0ZUluZGV4KG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEuaWQpOwogICAgIGlmICghb2sp
IHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6
Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBpbmRleCAnJXMnLiIsIG1faW5kZXhNZXRh
ZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQo
ZXJyb3IpOwpAQCAtMTE1LDE0ICsxMTUsMTQgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0o
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAgaWYgKG1f
aW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgICAgIEFT
U0VSVChtX2N1cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKICAgICAgICAg
ICAgIC8vIE9iamVjdFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgIGJhY2tp
bmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgp
LnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5PYmplY3RT
dG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2N1cnNvclR5
cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSB7CiAgICAgICAgICAgICAgICAgLy8gSW5k
ZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IobV90cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsK
KyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5J
bmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAg
ICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbklu
ZGV4Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElu
ZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29y
ID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRl
ZEJhY2tpbmdTdG9yZSgpLT5vcGVuSW5kZXhDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewogICAgICAgICAvLyBP
YmplY3QgU3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgogICAgICAgICBWZWN0b3I8Y2hhcj4gdmFs
dWU7Ci0gICAgICAgIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29yZChtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgKmtleSwgdmFsdWUpOworICAgICAgICBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAg
ICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UmVjb3Jk
LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEdldE9w
ZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNr
KQogICAgIH0KIAogICAgIC8vIEZyb20gaGVyZSB3ZSBhcmUgZGVhbGluZyBvbmx5IHdpdGggaW5k
ZXhlcy4KLSAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgKmtleSwgcHJpbWFyeUtleSk7CisgICAgb2sgPSBtX3Ry
YW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2lu
Z1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCAqa2V5LCBwcmltYXJ5S2V5KTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgR2V0T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAg
ICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICBWZWN0
b3I8Y2hhcj4gdmFsdWU7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UmVjb3JkKG1fdHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUpOworICAgIG9rID0gbV90cmFuc2FjdGlvbi0+
ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5n
ZXRSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRh
YmFzZUlkLCBtX29iamVjdFN0b3JlSWQsICpwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFv
aykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGlu
IGdldFJlY29yZC4iKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lk
IFB1dE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogCiAgICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmIChtX3B1dE1vZGUgIT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgbV9vYmplY3RTdG9yZS5hdXRvSW5j
cmVtZW50ICYmICFtX2tleSkgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5KCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmUuaWQpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5nZW5lcmF0ZUtleSgqbV90cmFuc2FjdGlvbiwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlLmlkKTsKICAgICAgICAga2V5V2FzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICAg
ICAgaWYgKCFhdXRvSW5jS2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q29uc3RyYWludEVycm9yLCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNoZWQuIikp
OwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAgICBSZWZQdHI8SURCUmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcjsKICAgICBpZiAobV9wdXRNb2RlID09IElEQkRh
dGFiYXNlQmFja2VuZDo6QWRkT25seSkgewotICAgICAgICBib29sIG9rID0gbV9iYWNraW5nU3Rv
cmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkLCAqa2V5LCByZWNvcmRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksIHJlY29yZElkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoIW9rKSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yIGNoZWNraW5nIGtleSBleGlzdGVuY2UuIikpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgVmVjdG9yPFJlZlB0cjxJ
REJJbmRleFdyaXRlcj4+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgIGJvb2wgb2JleXNDb25zdHJhaW50cyA9IGZhbHNlOwotICAgIGJvb2wgYmFja2luZ1N0b3Jl
U3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9p
bmRleElkcywgbV9pbmRleEtleXMsIGluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXND
b25zdHJhaW50cyk7CisgICAgYm9vbCBiYWNraW5nU3RvcmVTdWNjZXNzID0gbV90cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgp
LT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0
U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9pbmRleElkcywgbV9pbmRleEtleXMsIGlu
ZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXNDb25zdHJhaW50cyk7CiAgICAgaWYgKCFi
YWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAi
SW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgdXBkYXRpbmcgaW5kZXgga2V5cy4i
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFB1dE9wZXJhdGlv
bjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAg
IH0KIAogICAgIC8vIEJlZm9yZSB0aGlzIHBvaW50LCBkb24ndCBkbyBhbnkgbXV0YXRpb24uIEFm
dGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9mIGVycm9y
LgotICAgIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7Cisg
ICAgYmFja2luZ1N0b3JlU3VjY2VzcyA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVy
Q29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CiAgICAgaWYg
KCFiYWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiSW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgcGVyZm9ybWluZyBwdXQvYWRk
LiIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDExICsyNTQsMTEgQEAgdm9pZCBQdXRPcGVy
YXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIElEQkluZGV4V3JpdGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5n
ZXQoKTsKLSAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZp
ZXIuZ2V0KCksICptX2JhY2tpbmdTdG9yZSwgbV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkKTsKKyAgICAgICAgaW5k
ZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICptX3RyYW5z
YWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0
b3JlKCksIG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAgfQogCiAgICAgaWYgKG1fb2JqZWN0U3RvcmUu
YXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JV
cGRhdGUgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7Ci0gICAgICAgIGJv
b2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+dXBkYXRlS2V5R2VuZXJhdG9yKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksICFrZXlXYXNHZW5lcmF0ZWQp
OworICAgICAgICBib29sIG9rID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25u
ZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT51cGRhdGVLZXlHZW5lcmF0b3IoKm1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwgKmtleSwgIWtleVdh
c0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRvci4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsMTMgKzI5MywxMyBAQCB2b2lkIE9wZW5DdXJz
b3JPcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxs
YmFjaykKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBiYWNraW5n
U3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZh
bGlkSWQpIHsKICAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNv
cktleU9ubHkpOwotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fdGFza1R5cGUgPT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpOb3JtYWxUYXNrKTsKICAgICAgICAgaWYgKG1fY3Vyc29yVHlw
ZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CisgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVk
QmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCBtX2tleVJhbmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CiAgICAgfQogCiAgICAgaWYgKCFiYWNr
aW5nU3RvcmVDdXJzb3IpIHsKQEAgLTMyMiw5ICszMjIsOSBAQCB2b2lkIENvdW50T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFja2luZ1N0b3JlQ3Vyc29y
OwogCiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpCi0g
ICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9k
YXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwor
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNl
cnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEtleUN1
cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNl
SWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVk
REI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAgICAgICByZXR1cm47CkBAIC0zNDIs
MTAgKzM0MiwxMCBAQCB2b2lkIERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2Fs
bE9uRGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAi
RGVsZXRlUmFuZ2VPcGVyYXRpb24iKTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6
OkN1cnNvck5leHQpOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29y
KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQp
OwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVjb3JkKG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBiYWNr
aW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1
cnNvci0+cmVjb3JkSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiRXJyb3IgZGVsZXRpbmcgZGF0YSBpbiByYW5nZSIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBD
bGVhck9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0KGNvbXBsZXRpb25DYWxs
YmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb24i
KTsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkKSkgeworICAgIGlmICghbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0
aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkKSkgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkVycm9yIGNsZWFy
aW5nIG9iamVjdCBzdG9yZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3Miw3ICsz
NzIsNyBAQCB2b2lkIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhYwogICAgIENhbGxPbkRlc3RydWN0IGNhbGxP
bkRlc3RydWN0KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkRl
bGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7Ci0gICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3Jl
LT5kZWxldGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YS5pZCk7CisgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+ZGVsZXRlT2JqZWN0U3RvcmUobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuaWQpOwogICAgIGlmICghb2spIHsK
ICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9y
bWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVj
dFN0b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rp
b24tPmFib3J0KGVycm9yKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gYwogICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWlu
dDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KICAgICBBU1NFUlQobV92ZXJz
aW9uID4gKGludDY0X3Qpb2xkVmVyc2lvbik7CiAgICAgZGF0YWJhc2Uuc2V0Q3VycmVudFZlcnNp
b24obV92ZXJzaW9uKTsKLSAgICBpZiAoIWRhdGFiYXNlLmJhY2tpbmdTdG9yZSgpLT51cGRhdGVJ
REJEYXRhYmFzZVZlcnNpb24obV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJzaW9uKSkgeworICAgIGlmICgh
ZGF0YWJhc2Uuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+dXBk
YXRlSURCRGF0YWJhc2VWZXJzaW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLm1ldGFkYXRhKCkudmVyc2lvbikpIHsKICAgICAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICBt
X2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0
KGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaAppbmRleCBiODQ2MmM4
Li5jNGUzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJ
REJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKQEAgLTM2LDQxICszNywzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWF0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3Rv
cmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0
U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRl
T2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgb2JqZWN0U3Rv
cmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2Fs
bGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDcmVhdGVPYmplY3RTdG9yZU9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICB9
CiAgICAgCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsK
LSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9y
ZTsKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YTsKIH07CiAKIGNsYXNzIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9i
amVjdFN0b3JlTWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJh
Y2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5z
YWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFj
a2luZ1N0b3JlKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1l
dGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
PiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9v
YmplY3RTdG9yZU1ldGFkYXRhOwogfTsKIApAQCAtMTU2LDIyICsxNTMsMjAgQEAgcHJpdmF0ZToK
IAogY2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJh
Y2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRh
JiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRlSW5kZXhPcGVyYXRpb24odHJhbnNhY3Rpb24s
IGJhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFM
OwogcHJpdmF0ZToKLSAgICBDcmVhdGVJbmRleE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhKQorICAgIENyZWF0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYg
aW5kZXhNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAg
ICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVjdFN0
b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4TWV0YWRhdGEoaW5kZXhNZXRh
ZGF0YSkKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4g
bV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
PiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAg
ICBjb25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKIH07CkBAIC0xOTgsMjIg
KzE5MywyMCBAQCBwcml2YXRlOgogCiBjbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1l
dGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVJbmRleE9w
ZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1l
dGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlSW5kZXhPcGVyYXRp
b24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxs
YmFjaykgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIERlbGV0ZUluZGV4T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgRGVsZXRlSW5kZXhPcGVyYXRpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5k
ZXhNZXRhZGF0YShpbmRleE1ldGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3Qg
bV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFk
YXRhOwogfTsKQEAgLTI0MCwxNSArMjMzLDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG1ldGFkYXRh
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9u
LCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgR2V0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBHZXRPcGVy
YXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAgLCBtX2JhY2tpbmdTdG9y
ZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRhLmlkKQogICAg
ICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5kZXhJ
ZChpbmRleElkKQpAQCAtMjYzLDcgKzI1NSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBp
bnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsK
ICAgICBjb25zdCBpbnQ2NF90IG1faW5kZXhJZDsKQEAgLTI3NiwxNSArMjY3LDE0IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFB1dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEm
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJ
ZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3Jl
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tz
LCBpbmRleElkcywgaW5kZXhLZXlzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHV0
T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtl
eSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJh
Y2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBQdXRPcGVyYXRpb24oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJh
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4
S2V5cz4mIGluZGV4S2V5cykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQot
ICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFi
YXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCkBAIC0yOTcsNyArMjg3LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9yZTsKICAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3ZhbHVlOwpAQCAtMzI4LDE1ICszMTcsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgT3BlbkN1
cnNvck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCog
dHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJh
c2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVk
REI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0
YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwg
YmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vy
c29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBG
SU5BTDsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAg
ICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3Jl
SWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKQEAgLTM0OSw3
ICszMzcsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmQ+IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7
CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBt
X2luZGV4SWQ7CkBAIC0zNjIsMTUgKzM0OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBDb3VudE9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ291bnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tp
bmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvdW50T3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBDb3VudE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAg
Q291bnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAg
LCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRh
dGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCiAgICAg
ICAgICwgbV9pbmRleElkKGluZGV4SWQpCkBAIC0zODAsNyArMzY2LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9v
YmplY3RTdG9yZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9pbmRleElkOwpAQCAtMzkwLDE1ICsz
NzUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRlUmFuZ2VPcGVyYXRpb24gOiBwdWJsaWMg
SURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlUmFuZ2VPcGVyYXRpb24odHJhbnNh
Y3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2Us
IGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZVJhbmdlT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVSYW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9u
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIERlbGV0ZVJhbmdl
T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBt
X29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2tleVJhbmdlKGtleVJh
bmdlKQpAQCAtNDA3LDcgKzM5MSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90
IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBj
b25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7CkBAIC00MTYsMTUgKzM5OSwxNCBA
QCBwcml2YXRlOgogCiBjbGFzcyBDbGVhck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgQ2xlYXJPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorICAgIENsZWFyT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rp
b24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1f
ZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RT
dG9yZUlkKQogICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKQEAgLTQzMiw3ICs0MTQs
NiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+
IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAg
Y29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggMTUyMDIzMi4u
MTk4NzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rpb25zIGFzIHRoZXkgc3RhcnQgYW5kIGZp
bmlzaC4KICAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCopOworICAgIHZvaWQgZGlkT3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uQmFja2VuZCopOwogICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmQqKTsKICAgICB2b2lkIGRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9u
QmFja2VuZCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5k
ZXggYzU5YmJlYi4uZWMyYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEyMiw3ICsxMjMsOCBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNr
ZW5kOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlm
aWVyKTsKKyAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbiA9
IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3JlLmdldCgpKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRh
YmFzZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCB1bmlxdWVJZGVudGlmaWVyLCB0aGlzLCAqc2VydmVy
Q29ubmVjdGlvbik7CiAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkgewogICAgICAgICBtX2RhdGFi
YXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgp
KTsKICAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwpA
QCAtMTc2LDcgKzE3OCw4IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgaW50NjRfCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFz
ZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1ZUlk
ZW50aWZpZXIpOworICAgICAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29u
bmVjdGlvbiA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3Jl
LmdldCgpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kOjpj
cmVhdGUobmFtZSwgdW5pcXVlSWRlbnRpZmllciwgdGhpcywgKnNlcnZlckNvbm5lY3Rpb24pOwog
ICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQogICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tl
bmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI1NDBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJD
b25uZWN0aW9uTGV2ZWxEQi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIgor
CisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIo
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUpCisgICAgOiBtX2JhY2tpbmdT
dG9yZShiYWNraW5nU3RvcmUpCisgICAgLCBtX2Nsb3NlZChmYWxzZSkKK3sKK30KKwordmlydHVh
bCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6fklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERC
KCkKK3sKK30KKworSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBJREJTZXJ2ZXJDb25uZWN0aW9u
TGV2ZWxEQjo6ZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpCit7CisgICAgcmV0dXJuIG1fYmFja2lu
Z1N0b3JlLmdldCgpOworfQorCitib29sIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjppc0Ns
b3NlZCgpCit7CisgICAgcmV0dXJuIG1fY2xvc2VkOworfQorCit2b2lkIElEQlNlcnZlckNvbm5l
Y3Rpb25MZXZlbERCOjpnZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3Ry
aW5nJiBuYW1lLCBHZXRJREJEYXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24gY2FsbGJhY2spCit7Cisg
ICAgUmVmUHRyPElEQlNlcnZlckNvbm5lY3Rpb24+IHNlbGYodGhpcyk7CisgICAgbV9iYWNraW5n
U3RvcmUtPmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShuYW1lLCBbc2VsZiwgdGhp
cywgY2FsbGJhY2tdKGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1
Y2Nlc3MpIHsKKyAgICAgICAgY2FsbGJhY2sobWV0YWRhdGEsIHN1Y2Nlc3MpOworICAgIH0pOwor
fQorCit2b2lkIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpkZWxldGVEYXRhYmFzZShjb25z
dCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nlc3NDYWxsYmFjaykKK3sK
KyAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VsZih0aGlzKTsKKyAgICBtX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobmFtZSwgW3NlbGYsIHRoaXMsIHN1Y2Nlc3NDYWxsYmFj
a10oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzKTsKKyAg
ICB9KTsKK30KKwordm9pZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Y2xvc2UoKQorewor
ICAgIG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgbV9jbG9zZWQgPSB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTEVWRUxEQikKKyNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlv
bkxldmVsREIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE4YmFlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxk
Yi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCX2gKKyNkZWZpbmUgSURCU2Vy
dmVyQ29ubmVjdGlvbkxldmVsREJfaAorCisjaW5jbHVkZSAiSURCU2VydmVyQ29ubmVjdGlvbi5o
IgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaWYgVVNFKExFVkVMREIpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlOworCitj
bGFzcyBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQiBGSU5BTCA6IHB1YmxpYyBJREJTZXJ2ZXJD
b25uZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJTZXJ2ZXJDb25u
ZWN0aW9uPiBjcmVhdGUoSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCKGJhY2tpbmdTdG9yZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfklEQlNlcnZlckNvbm5l
Y3Rpb25MZXZlbERCKCk7CisKKyAgICAvLyBGSVhNRTogRm9yIG5vdywgc2VydmVyIGNvbm5lY3Rp
b24gcHJvdmlkZXMgYSBzeW5jaHJvbm91cyBhY2Nlc3NvciB0byB0aGUgaW4tcHJvY2VzcyBiYWNr
aW5nIHN0b3JlLgorICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIHJlbW92ZWQg
c29vbi4KKyAgICB2aXJ0dWFsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGlzQ2xvc2VkKCkgT1ZF
UlJJREU7CisKKyAgICAvLyBEYXRhYmFzZS1sZXZlbCBvcGVyYXRpb25zCisgICAgdmlydHVhbCB2
b2lkIGdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUs
IEdldElEQkRhdGFiYXNlTWV0YWRhdGFGdW5jdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rp
b24gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBP
VkVSUklERTsKKworcHJpdmF0ZToKKyAgICBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQihJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqKTsKKworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRl
cmZhY2U+IG1fYmFja2luZ1N0b3JlOworICAgIGJvb2wgbV9jbG9zZWQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoTEVWRUxEQikKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxE
Ql9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNmIxMzhkMy4uN2I4MjM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTY0NSw2ICsxNjQ1LDcgQEAKIAkJNTEw
MTg0NkEwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjgwQjA4NjAyQTAwNEE4MjVGIC8q
IENhY2hlZFBhZ2UuY3BwICovOyB9OwogCQk1MTA1OURERDE4MjBCMTc2MDBERkY5QjEgLyogSURC
VHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1OUREOTE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJh
bnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAgKi87IH07CiAJCTUxMDU5RERFMTgyMEIxNzYw
MERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA1OUREQTE4MjBCMTc2MDBERkY5
QjEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oICovOyB9OworCQk1MTBBMzI2
RjE4MzE4NDMxMDAzQzUzMjYgLyogSURCU2VydmVyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQTMyNkUxODMxODQzMTAwM0M1MzI2
IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MTBCN0RCNzE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNh
Y3Rpb25CYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMEI3REI1MTgyRDlGNUQwMDlCRjk1NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQu
Y3BwICovOyB9OwogCQk1MTBCN0RCODE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25C
YWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBCN0RCNjE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEwRDRBMzMxMDMx
NjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQg
LyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLzsgfTsKQEAgLTE3MjksNiArMTczMCw4IEBA
CiAJCTUxNjBGNDk4MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBGNDk3MEIwQUE3NUYw
MEMxRDJBRiAvKiBIaXN0b3J5SXRlbU1hYy5tbSAqLzsgfTsKIAkJNTE2MkM3RjQxMUY3N0VGQjAw
NjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjJDN0YyMTFGNzdFRkEwMDYxMkVGRSAvKiBTY2hlbWVSZWdp
c3RyeS5jcHAgKi87IH07CiAJCTUxNjJDN0Y1MTFGNzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
MkM3RjMxMUY3N0VGQjAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE2NEVENDMxODMyMDhDNzAwRUE4
RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjRFRDQxMTgzMjA4QzcwMEVBOEZGMSAvKiBJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgKi87IH07CisJCTUxNjRFRDQ0MTgzMjA4Qzcw
MEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2NEVENDIxODMyMDhDNzAwRUE4RkYxIC8q
IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmggKi87IH07CiAJCTUxNjYwQUI2MTgyOEJCODIw
MDA3NENBRCAvKiBJREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjYwQUIwMTgyOEJCODIwMDA3NENBRCAvKiBJ
REJCYWNraW5nU3RvcmVMZXZlbERCLmNwcCAqLzsgfTsKIAkJNTE2NjBBQjcxODI4QkI4MjAwMDc0
Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUxldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjYwQUIxMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNr
aW5nU3RvcmVMZXZlbERCLmggKi87IH07CiAJCTUxNjYwQUI4MTgyOEJCODIwMDA3NENBRCAvKiBJ
REJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2NjBBQjIxODI4QkI4MjAwMDc0Q0FEIC8qIElEQkZhY3RvcnlC
YWNrZW5kTGV2ZWxEQi5jcHAgKi87IH07CkBAIC04MzI2LDYgKzgzMjksNyBAQAogCQk1MTAxODQ2
ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZE9w
ZXJhdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCVHJh
bnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMDU5RERBMTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwQTMy
NkUxODMxODQzMTAwM0M1MzI2IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCU2VydmVyQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTBCN0RCNTE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlRy
YW5zYWN0aW9uQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEI3
REI2MTgyRDlGNUQwMDlCRjk1NyAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVHJhbnNhY3Rpb25CYWNrZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJEMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRT
dHJlYW1FcnJvckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg0MTEsNiArODQxNSw4IEBACiAJCTUxNjBGNDk3MEIwQUE3NUYwMEMxRDJBRiAvKiBIaXN0b3J5
SXRlbU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEhpc3Rv
cnlJdGVtTWFjLm1tOyBwYXRoID0gbWFjL0hpc3RvcnlJdGVtTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0
cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NoZW1lUmVnaXN0
cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTYyQzdGMzExRjc3RUZCMDA2
MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NoZW1lUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NEVE
NDExODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE2NEVENDIxODMyMDhDNzAw
RUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNjYwQUIwMTgyOEJCODIwMDA3NENBRCAvKiBJREJCYWNraW5n
U3RvcmVMZXZlbERCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElE
QkJhY2tpbmdTdG9yZUxldmVsREIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTY2MEFCMTE4MjhCQjgyMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJCYWNraW5nU3RvcmVMZXZlbERCLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNjYwQUIyMTgyOEJCODIwMDA3NENBRCAvKiBJ
REJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1MTE3LDYgKzE1MTIzLDggQEAKIAkJCQk1MTY2MEFCMzE4MjhCQjgyMDAw
NzRDQUQgLyogSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmggKi8sCiAJCQkJNTE2NjBBQjQxODI4
QkI4MjAwMDc0Q0FEIC8qIElEQkxldmVsREJDb2RpbmcuY3BwICovLAogCQkJCTUxNjYwQUI1MTgy
OEJCODIwMDA3NENBRCAvKiBJREJMZXZlbERCQ29kaW5nLmggKi8sCisJCQkJNTE2NEVENDExODMy
MDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcCAqLywKKwkJCQk1
MTY0RUQ0MjE4MzIwOEM3MDBFQThGRjEgLyogSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gbGV2ZWxkYjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xNzAwMiw2ICsxNzAxMCw3IEBACiAJCQkJNTFENzE5QTExODExMDZFMDAwMTZEQzUxIC8q
IElEQlJlcXVlc3QuY3BwICovLAogCQkJCTUxRDcxOUEyMTgxMTA2RTAwMDE2REM1MSAvKiBJREJS
ZXF1ZXN0LmggKi8sCiAJCQkJNTFENzE5QTMxODExMDZFMDAwMTZEQzUxIC8qIElEQlJlcXVlc3Qu
aWRsICovLAorCQkJCTUxMEEzMjZFMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25uZWN0
aW9uLmggKi8sCiAJCQkJNTFENzE5QTQxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9u
LmNwcCAqLywKIAkJCQk1MUQ3MTlBNTE4MTEwNkUwMDAxNkRDNTEgLyogSURCVHJhbnNhY3Rpb24u
aCAqLywKIAkJCQk1MUQ3MTlBNjE4MTEwNkUwMDAxNkRDNTEgLyogSURCVHJhbnNhY3Rpb24uaWRs
ICovLApAQCAtMjE5NTgsNiArMjE5NjcsNyBAQAogCQkJCUZEMzE2MDdGMTJCMDI2RjcwMEMxQTM1
OSAvKiBBdWRpb0Rlc3RpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzBGNTQ5RTE3RjI0
MDI3MDAxNjlFMDQgLyogQXVkaW9EZXN0aW5hdGlvbkNvbnN1bWVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDMxNjBCRDEyQjAyNzJBMDBDMUEzNTkgLyogQXVkaW9EZXN0aW5hdGlvbk1hYy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTEwQTMyNkYxODMxODQzMTAwM0M1MzI2IC8qIElEQlNlcnZlckNv
bm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDA4MTJCMDI2NzYwMEMxQTM1OSAv
KiBBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODAxMkIw
MjZGNzAwQzFBMzU5IC8qIEF1ZGlvRFNQS2VybmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDY0
MUVCMzE4MThGNUVEMDBFRTRDNDEgLyogTWVkaWFTb3VyY2VQcml2YXRlLmggaW4gSGVhZGVycyAq
LywKQEAgLTIzMTc1LDYgKzIzMTg1LDcgQEAKIAkJCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMg
LyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMzRjA1
M0UxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdBMjQ1ODdDMTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE2NEVENDQxODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCLmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYz
MDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwNTg1MzQxN0ZERTZEOTAwNUYyQkNCIC8qIEpTTWVkaWFU
cmFja0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDI3LDYgKzI3NDM4LDcgQEAK
IAkJCQk1MTFFRjJDNDE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJGYWN0b3J5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQzY1NzEyMTgxNUY5REQwMDI1NkNERCAvKiBKU0NyeXB0b0FsZ29yaXRo
bURpY3Rpb25hcnkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTQzQkY1OUMxMTQ5MjkyODAwQzY0
M0NBIC8qIFJlbmRlclByb2dyZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxNjRFRDQzMTgz
MjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1QTU3NEYyNDEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQjVCN0ExNzAxN0MxMEFBODAwRTRBQTBBIC8qIEVsZW1lbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUQ3MEFENjU3MTNFMTM0MkIwMDVCNTBCNCAvKiBSZW5k
ZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="239647"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216648</attachid>
            <date>2013-11-12 00:43:03 -0800</date>
            <delta_ts>2013-11-12 13:12:14 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>77141</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjFlZjAwYy4uZGY4YjdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc5Myw2ICs3OTMsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREIuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIu
Y3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcAor
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIu
Y3BwCiAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAogICAgIE1vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3NzMx
N2ZkLi4wNGI2NGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDEzLTExLTEyICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgSURC
U2VydmVyQ29ubmVjdGlvbiAoYW5kIHN0YXJ0IG1vdmluZyB0aGluZ3MgdG8gaXQpLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0MTkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSURCU2VydmVyQ29ubmVj
dGlvbiB3aWxsIGJlIGEgcHVyZWx5IGFzeW5jaHJvbm91cyBpbnRlcmZhY2UgZm9yIGRhdGFiYXNl
IGNvbm5lY3Rpb25zLCB0cmFuc2FjdGlvbnMsIGFuZCBjdXJzb3JzLgorICAgICAgICBJdHMgaW50
ZXJmYWNlIHdpbGwgYmUgMTAwJSBhc3luY2hyb25vdXMgYW5kIGNhbGxiYWNrIGJhc2VkIC0gUGVy
ZmVjdCBmb3IgYW4gSVBDIGRpdmlkZS4KKyAgICAgICAgRXZlbnR1YWxseSBub25lIG9mIHRoZSBJ
REI8Rm9vPkJhY2tlbmQgY2xhc3NlcyB3aWxsIG5lZWQgSURCQmFja2luZ1N0b3JlPEZvbz4gY2xh
c3NlcyBhdCBhbGwsIAorICAgICAgICBhbmQgdGhleeKAmWxsIGFsbCB1c2UgSURCU2VydmVyQ29u
bmVjdGlvbiBkaXJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb246On5J
REJTZXJ2ZXJDb25uZWN0aW9uKToKKworICAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiB0
aGF0IC0gZm9yIG5vdyAtIHdyYXBzIGFuIElEQkJhY2tpbmdTdG9yZUxldmVsREI6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6
OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCOjpkZXByZWNhdGVkQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjppc0Nsb3NlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaDogQWRkZWQuCisKKyAgICAgICAgTGV2ZWxEQiBj
cmVhdGVkIGRhdGFiYXNlcyBnZXQgTGV2ZWxEQiBzZXJ2ZXIgY29ubmVjdGlvbnM6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRh
YmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZExldmVsREI6Om9wZW4p
OgorCisgICAgICAgIFJlcGxhY2UgbW9zdCB1c2VzIG9mIElEQkJhY2tpbmdTdG9yZSB3aXRoIHNl
cnZlciBjb25uZWN0aW9uOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OklEQkRhdGFiYXNlQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5h
bEFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6c2V0SW5kZXhL
ZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6b3BlbkNvbm5lY3Rp
b25JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OmRlbGV0
ZURhdGFiYXNlQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpj
bG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OnNlcnZlckNvbm5lY3Rpb24p
OgorCisgICAgICAgIENoYW5nZSBhbGwgdGhlIG9wZXJhdGlvbnMgdG8gYWNjZXNzIHRoZWlyIERh
dGFiYXNlQmFja2VuZOKAmXMgc2VydmVyIGNvbm5lY3Rpb24gaW5zdGVhZAorICAgICAgICBpZiBo
YW5naW5nIG9uIHRvIGEgYmFja2luZyBzdG9yZSBkaXJlY3RseToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUNyZWF0ZU9iamVjdFN0b3Jl
T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2No
ZWR1bGVEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJU
cmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ3JlYXRlSW5kZXhPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVHZXRPcGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVB1dE9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bkJhY2tlbmQ6OnNjaGVkdWxlT3BlbkN1cnNvck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ291bnRPcGVyYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZVJhbmdlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1
bGVDbGVhck9wZXJhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9iamVj
dFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4
T3BlcmF0aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpQdXRPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6T3BlbkN1cnNvck9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudE9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVSYW5nZU9w
ZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDbGVhck9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFu
Z2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZU9i
amVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb246OkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OkRlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q3JlYXRlSW5kZXhPcGVyYXRpb246OkNyZWF0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlSW5kZXhPcGVyYXRpb246OkRlbGV0ZUluZGV4T3Bl
cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdldE9wZXJhdGlvbjo6R2V0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlB1dE9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1dE9wZXJhdGlv
bjo6UHV0T3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uOjpPcGVuQ3Vy
c29yT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50T3BlcmF0aW9uOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRPcGVyYXRpb246OkNvdW50T3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RGVsZXRlUmFuZ2VPcGVyYXRpb246OkRlbGV0ZVJhbmdlT3BlcmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsZWFyT3BlcmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xlYXJPcGVyYXRpb246OkNsZWFyT3BlcmF0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg6CisKIDIwMTMtMTEtMTEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgSURCVHJhbnNhY3Rp
b24gdGFza3MgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBk
MzA5M2UxLi5iMWRiOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE3OTYs
NiArMTc5Niw4IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbkxldmVsREIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJT
ZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvckJhY2tlbmQuaCBcCkBAIC0xODQ3LDYgKzE4NDksNyBAQCB3ZWJjb3JlX21vZHVs
ZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVj
b3JkSWRlbnRpZmllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0
aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kLmNwcAppbmRleCBiNDcwOWQ5Li44NWQ4MDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZC5jcHAKQEAgLTQ0LDE5ICs0NCwxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBJREJEYXRhYmFzZUJhY2tlbmQ6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBJ
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJ
ZGVudGlmaWVyKQorUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IElEQkRhdGFiYXNlQmFj
a2VuZDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB1bmlxdWVJZGVu
dGlmaWVyLCBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogZmFjdG9yeSwgSURCU2VydmVyQ29u
bmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbikKIHsKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChuYW1lLCBiYWNr
aW5nU3RvcmUsIGZhY3RvcnksIHVuaXF1ZUlkZW50aWZpZXIpKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kPiBiYWNrZW5kID0gYWRvcHRSZWYobmV3IElEQkRhdGFiYXNlQmFja2VuZChu
YW1lLCB1bmlxdWVJZGVudGlmaWVyLCBmYWN0b3J5LCBzZXJ2ZXJDb25uZWN0aW9uKSk7CiAgICAg
YmFja2VuZC0+b3BlbkludGVybmFsQXN5bmMoKTsKICAgICAKICAgICByZXR1cm4gYmFja2VuZC5y
ZWxlYXNlKCk7CiB9CiAKLUlEQkRhdGFiYXNlQmFja2VuZDo6SURCRGF0YWJhc2VCYWNrZW5kKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUs
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1
ZUlkZW50aWZpZXIpCi0gICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgLCBt
X21ldGFkYXRhKG5hbWUsIEludmFsaWRJZCwgMCwgSW52YWxpZElkKQorSURCRGF0YWJhc2VCYWNr
ZW5kOjpJREJEYXRhYmFzZUJhY2tlbmQoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBmYWN0b3J5LCBJ
REJTZXJ2ZXJDb25uZWN0aW9uJiBzZXJ2ZXJDb25uZWN0aW9uKQorICAgIDogbV9tZXRhZGF0YShu
YW1lLCBJbnZhbGlkSWQsIDAsIEludmFsaWRJZCkKICAgICAsIG1faWRlbnRpZmllcih1bmlxdWVJ
ZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCisgICAgLCBtX3NlcnZlckNvbm5l
Y3Rpb24oc2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKSkKICAgICAsIG1fY2xvc2luZ0Nvbm5l
Y3Rpb24oZmFsc2UpCiB7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmQ6OnJlbW92ZUluZGV4KGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKQog
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5JbnRlcm5hbEFzeW5jKCkKIHsKICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kPiBzZWxmID0gdGhpczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+
Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKG1fbWV0YWRhdGEubmFtZSwgW3NlbGZd
KGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhLCBib29sIHN1Y2Nlc3MpIHsKKyAg
ICBtX3NlcnZlckNvbm5lY3Rpb24tPmdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YSht
X21ldGFkYXRhLm5hbWUsIFtzZWxmXShjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0
YSwgYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgIHNlbGYtPmRpZE9wZW5JbnRlcm5hbEFzeW5jKG1l
dGFkYXRhLCBzdWNjZXNzKTsKICAgICB9KTsKIH0KQEAgLTEyNywxMSArMTI3LDYgQEAgSURCRGF0
YWJhc2VCYWNrZW5kOjp+SURCRGF0YWJhc2VCYWNrZW5kKCkKIHsKIH0KIAotSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKiBJREJEYXRhYmFzZUJhY2tlbmQ6OmJhY2tpbmdTdG9yZSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLmdldCgpOwotfQotCiB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5
UGF0aCwgYm9vbCBhdXRvSW5jcmVtZW50KQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURCRGF0
YWJhc2VCYWNrZW5kOjpjcmVhdGVPYmplY3RTdG9yZSIpOwpAQCAtMjU3LDcgKzI1Miw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kOjpzZXRJbmRleEtleXMoaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwogCiAgICAgUmVmUHRyPElEQktl
eT4gcHJpbWFyeUtleSA9IHBycFByaW1hcnlLZXk7Ci0gICAgUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUludGVyZmFjZT4gc3RvcmUgPSBtX2JhY2tpbmdTdG9yZTsKKyAgICBSZWZQdHI8SURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlPiBzdG9yZSA9IG1fc2VydmVyQ29ubmVjdGlvbi0+ZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjb3VsZCBiZSBhc3luY2hy
b25vdXMsIGJ1dCB3ZSBuZWVkIHRvIGV2YWx1YXRlIGlmIGl0J3Mgd29ydGggdGhlIGV4dHJhIGNv
bXBsZXhpdHkuCiAgICAgUmVmUHRyPElEQlJlY29yZElkZW50aWZpZXI+IHJlY29yZElkZW50aWZp
ZXI7CiAgICAgYm9vbCBvayA9IHN0b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0
aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX21ldGFkYXRhLmlkLCBvYmplY3RTdG9y
ZUlkLCAqcHJpbWFyeUtleSwgcmVjb3JkSWRlbnRpZmllcik7CkBAIC00ODcsNyArNDgyLDYgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2Fs
bGJhY2tzPiBwcnBDYWxsYmFja3MsIFAKIAogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5D
b25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrcywg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwRGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKIHsKLSAgICBBU1NFUlQobV9i
YWNraW5nU3RvcmUuZ2V0KCkpOwogICAgIEFTU0VSVChtX3BlbmRpbmdEZWxldGVDYWxscy5pc0Vt
cHR5KCkpOwogICAgIEFTU0VSVCghbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKTsK
IApAQCAtNTkyLDE1ICs1ODYsMTQgQEAgYm9vbCBJREJEYXRhYmFzZUJhY2tlbmQ6OmlzRGVsZXRl
RGF0YWJhc2VCbG9ja2VkKCkKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpkZWxldGVEYXRhYmFz
ZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CiAgICAgQVNTRVJU
KCFpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKTsKLSAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUp
OwogCiAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gc2VsZih0aGlzKTsKLSAgICBtX2Jh
Y2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2UobV9tZXRhZGF0YS5uYW1lLCBbc2VsZiwgY2FsbGJh
Y2tzXShib29sIHN1Y2Nlc3MpIHsKKyAgICBtX3NlcnZlckNvbm5lY3Rpb24tPmRlbGV0ZURhdGFi
YXNlKG1fbWV0YWRhdGEubmFtZSwgW3NlbGYsIGNhbGxiYWNrc10oYm9vbCBzdWNjZXNzKSB7CiAg
ICAgICAgIEFTU0VSVChzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRpbmdDb21wbGV0aW9uLmNv
bnRhaW5zKGNhbGxiYWNrcykpOwogICAgICAgICBzZWxmLT5tX2RlbGV0ZUNhbGxiYWNrc1dhaXRp
bmdDb21wbGV0aW9uLnJlbW92ZShjYWxsYmFja3MpOwogCiAgICAgICAgIC8vIElmIHRoaXMgSURC
RGF0YWJhc2VCYWNrZW5kIHdhcyBjbG9zZWQgd2hpbGUgd2FpdGluZyBmb3IgZGVsZXRlRGF0YWJh
c2UgdG8gY29tcGxldGUsIG5vIHBvaW50IGluIHBlcmZvcm1pbmcgYW55IGNhbGxiYWNrcy4KLSAg
ICAgICAgaWYgKCFzZWxmLT5tX2JhY2tpbmdTdG9yZSkKKyAgICAgICAgaWYgKCFzZWxmLT5tX3Nl
cnZlckNvbm5lY3Rpb24tPmlzQ2xvc2VkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKHN1Y2Nlc3MpIHsKQEAgLTY0OCw3ICs2NDEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tz
KQogCiAgICAgICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCi0gICAgICAg
IG1fYmFja2luZ1N0b3JlLmNsZWFyKCk7CisgICAgICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+Y2xv
c2UoKTsKIAogICAgICAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIGZhbHNlIGluIHVu
aXQgdGVzdHMuCiAgICAgICAgIEFTU0VSVChtX2ZhY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAppbmRleCA3YWVm
OGUwLi5iZTcwN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ0RlbGV0ZUNhbGwuaCIKICNpbmNsdWRl
ICJJREJQZW5kaW5nT3BlbkNhbGwuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgi
CisKICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtNDAsNyArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTsKIGNsYXNzIElEQkRhdGFiYXNlOwog
Y2xhc3MgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJLZXk7CkBAIC01OSwx
MCArNjAsMTAgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgSURCRGF0YWJh
c2VCYWNrZW5kIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VCYWNrZW5kPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqLCBJREJGYWN0b3J5QmFj
a2VuZEludGVyZmFjZSosIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlKiwgSURCU2VydmVyQ29ubmVjdGlvbiYpOwogICAgIH5JREJEYXRhYmFzZUJhY2tlbmQo
KTsKIAotICAgIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKCkgY29uc3Q7
CisgICAgSURCU2VydmVyQ29ubmVjdGlvbiYgc2VydmVyQ29ubmVjdGlvbigpIHsgcmV0dXJuIG1f
c2VydmVyQ29ubmVjdGlvbi5nZXQoKTsgfQogCiAgICAgc3RhdGljIGNvbnN0IGludDY0X3QgSW52
YWxpZElkID0gMDsKICAgICBpbnQ2NF90IGlkKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5p
ZDsgfQpAQCAtMTI5LDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICBjbGFzcyBWZXJzaW9uQ2hhbmdl
QWJvcnRPcGVyYXRpb247CiAKIHByaXZhdGU6Ci0gICAgSURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiwgSURCRmFjdG9yeUJhY2tl
bmRJbnRlcmZhY2UqLCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIElEQkRh
dGFiYXNlQmFja2VuZChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdW5pcXVlSWRl
bnRpZmllciwgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqLCBJREJTZXJ2ZXJDb25uZWN0aW9u
Jik7CiAKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uSW50ZXJuYWwoUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uKTsKIApAQCAtMTQ0LDEyICsxNDUsMTIgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCk7CiAgICAgdm9pZCBkZWxldGVE
YXRhYmFzZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPik7CiAKLSAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIG1fbWV0YWRhdGE7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwotICAgIC8vIFRo
aXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBSZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBsaWZl
dGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdyb3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUgY29u
c2VydmF0aXZlIHRoYW4gc29ycnkuCisKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2U+IG1fZmFjdG9yeTsKKyAgICBSZWY8SURCU2VydmVyQ29ubmVjdGlvbj4gbV9zZXJ2ZXJD
b25uZWN0aW9uOwogCiAgICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJh
bnNhY3Rpb25Db29yZGluYXRvcjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJTZXJ2ZXJDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk0YjNhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rpb24uaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJTZXJ2ZXJDb25uZWN0aW9uX2gKKyNk
ZWZpbmUgSURCU2VydmVyQ29ubmVjdGlvbl9oCisKKyNpbmNsdWRlICJJREJNZXRhZGF0YS5oIgor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZTsKKworLy8gVGhpcyBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gcHJvdmlkZSBhIHNpbmdsZSBhc3lu
Y2hyb25vdXMgbGF5ZXIgYmV0d2VlbiB0aGUgd2ViLWZhY2luZyBmcm9udGVuZAorLy8gYW5kIHRo
ZSBJL08gcGVyZm9ybWluZyBiYWNrZW5kIG9mIEluZGV4ZWREYXRhYmFzZS4KKy8vIElmIHRoZSBj
b21wbGV0aW9uIG9mIGFuIG9wZXJhdGlvbiBpcyBpbXBvcnRhbnQgbW9uaXRvcmluZyBpdCBtdXN0
IGJlIHRocm91Z2ggdGhlIHVzZSBvZiBhIGNhbGxiYWNrIGZ1bmN0aW9uLgorY2xhc3MgSURCU2Vy
dmVyQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPElEQlNlcnZlckNvbm5lY3Rpb24+IHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JREJTZXJ2ZXJDb25uZWN0aW9uKCkgeyB9CisKKyAgICAv
LyBGSVhNRTogRm9yIG5vdywgc2VydmVyIGNvbm5lY3Rpb24gcHJvdmlkZXMgYSBzeW5jaHJvbm91
cyBhY2Nlc3NvciB0byB0aGUgaW4tcHJvY2VzcyBiYWNraW5nIHN0b3JlLgorICAgIC8vIFRoaXMg
aXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGJlIHJlbW92ZWQgc29vbi4KKyAgICB2aXJ0dWFsIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpID0gMDsKKworICAg
IHZpcnR1YWwgYm9vbCBpc0Nsb3NlZCgpID0gMDsKKworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlv
bjx2b2lkIChib29sIHN1Y2Nlc3MpPiBCb29sQ2FsbGJhY2tGdW5jdGlvbjsKKworICAgIC8vIERh
dGFiYXNlLWxldmVsIG9wZXJhdGlvbnMKKyAgICB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYsIGJvb2wgc3VjY2Vzcyk+IEdldElEQkRhdGFiYXNl
TWV0YWRhdGFGdW5jdGlvbjsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1
bmN0aW9uKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQm9vbENhbGxiYWNrRnVuY3Rpb24gc3VjY2Vzc0NhbGxiYWNrKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVy
Q29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAppbmRleCA3Yzc0NTRiLi41M2JiYmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQmFja2VuZC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgi
CiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9u
LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIgogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBA
IC01NiwxMCArNTcsOSBAQCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OklEQlRyYW5zYWN0aW9uQmFj
a2VuZChJREJEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlQmFja2VuZAogICAgICwgbV9jb21taXRQ
ZW5kaW5nKGZhbHNlKQogICAgICwgbV9jYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV9kYXRh
YmFzZShkYXRhYmFzZUJhY2tlbmQpCi0gICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGRh
dGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCkpCisgICAgLCBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKG1fZGF0YWJhc2UtPnNlcnZl
ckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmNyZWF0ZUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uKCkpCiAgICAgLCBtX3Rhc2tUaW1lcih0aGlzLCAmSURCVHJhbnNhY3Rpb25C
YWNrZW5kOjp0YXNrVGltZXJGaXJlZCkKICAgICAsIG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHMo
MCkKLSAgICAsIG1fYmFja2luZ1N0b3JlKGRhdGFiYXNlQmFja2VuZC0+YmFja2luZ1N0b3JlKCkp
CiAgICAgLCBtX2lkKGlkKQogewogICAgIC8vIFdlIHBhc3MgYSByZWZlcmVuY2Ugb2YgdGhpcyBv
YmplY3QgYmVmb3JlIGl0IGNhbiBiZSBhZG9wdGVkLgpAQCAtMjcyLDEyICsyNzIsMTIgQEAgdm9p
ZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OmNsb3NlT3BlbkN1cnNvcnMoKQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogewotICAgIHNj
aGVkdWxlVGFzayhDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVB
Ym9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKKyAg
ICBzY2hlZHVsZVRhc2soQ3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZU1ldGFkYXRhKSwgQ3JlYXRlT2JqZWN0U3RvcmVBYm9ydE9wZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpKTsKIH0KIAogdm9pZCBJREJUcmFuc2Fj
dGlvbkJhY2tlbmQ6OnNjaGVkdWxlRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVs
ZVRhc2soRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdT
dG9yZS5nZXQoKSwgb2JqZWN0U3RvcmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CisgICAgc2NoZWR1
bGVUYXNrKERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3Rv
cmVNZXRhZGF0YSksIERlbGV0ZU9iamVjdFN0b3JlQWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5k
OjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRpb24oaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IHJlcXVlc3RlZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzLCBj
b25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKQEAgLTI4NywyMiArMjg3LDIyIEBA
IHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZVZlcnNpb25DaGFuZ2VPcGVyYXRp
b24oaW50NjRfdCB0cmFuc2FjdGlvbklkCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpz
Y2hlZHVsZUNyZWF0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3Qg
SURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hlZHVsZVRhc2soQ3Jl
YXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CisgICAgc2NoZWR1
bGVUYXNrKENyZWF0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0U3RvcmVJZCwg
aW5kZXhNZXRhZGF0YSksIENyZWF0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBv
YmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhLmlkKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rp
b25CYWNrZW5kOjpzY2hlZHVsZURlbGV0ZUluZGV4T3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKIHsKLSAgICBzY2hl
ZHVsZVRhc2soRGVsZXRlSW5kZXhPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9y
ZS5nZXQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRP
cGVyYXRpb246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7Cisg
ICAgc2NoZWR1bGVUYXNrKERlbGV0ZUluZGV4T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgb2JqZWN0
U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSksIERlbGV0ZUluZGV4QWJvcnRPcGVyYXRpb246OmNyZWF0
ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiB9CiAKIHZvaWQgSURCVHJh
bnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUdldE9wZXJhdGlvbihjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQs
IFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUg
Y3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKLSAgICBz
Y2hlZHVsZVRhc2soR2V0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0
KCksIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CisgICAgc2NoZWR1bGVUYXNrKEdldE9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1ldGFkYXRhLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlw
ZSwgY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVs
ZVB1dE9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1l
dGFkYXRhLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SWRzLCBj
b25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQogewotICAgIHNjaGVkdWxlVGFzayhQ
dXRPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCBtX2JhY2tpbmdTdG9yZS5nZXQoKSwgZGF0YWJhc2Uo
KS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFj
a3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKKyAgICBzY2hlZHVsZVRhc2soUHV0T3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgZGF0YWJhc2UoKS5pZCgpLCBvYmplY3RTdG9yZU1ldGFkYXRhLCB2YWx1
ZSwga2V5LCBwdXRNb2RlLCBjYWxsYmFja3MsIGluZGV4SWRzLCBpbmRleEtleXMpKTsKIH0KIAog
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0
aW9uKHNpemVfdCBpbmRleENvdW50KQpAQCAtMzEyLDIyICszMTIsMjIgQEAgdm9pZCBJREJUcmFu
c2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlU2V0SW5kZXhlc1JlYWR5T3BlcmF0aW9uKHNpemVfdCBp
bmRleENvdW50KQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVPcGVuQ3Vy
c29yT3BlcmF0aW9uKGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNz
UmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VC
YWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKIHsKLSAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIG1fYmFja2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIGtleVJhbmdlLCBkaXJlY3Rpb24sIGN1cnNvclR5cGUsIHRhc2tUeXBlLCBjYWxs
YmFja3MpKTsKKyAgICBzY2hlZHVsZVRhc2soT3BlbkN1cnNvck9wZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIGRhdGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRp
cmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDb3VudE9wZXJhdGlvbihpbnQ2NF90IG9iamVj
dFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFu
Z2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7Ci0gICAgc2NoZWR1bGVU
YXNrKENvdW50T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9iYWNraW5nU3RvcmUuZ2V0KCksIGRh
dGFiYXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDb3VudE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVEZWxldGVSYW5nZU9w
ZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtl
eVJhbmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogewotICAgIHNjaGVk
dWxlVGFzayhEZWxldGVSYW5nZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFja2luZ1N0b3Jl
LmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFj
a3MpKTsKKyAgICBzY2hlZHVsZVRhc2soRGVsZXRlUmFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGtleVJhbmdlLCBjYWxsYmFja3MpKTsK
IH0KIAogdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ2xlYXJPcGVyYXRpb24o
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQogewotICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fYmFj
a2luZ1N0b3JlLmdldCgpLCBkYXRhYmFzZSgpLmlkKCksIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNr
cykpOworICAgIHNjaGVkdWxlVGFzayhDbGVhck9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIGRhdGFi
YXNlKCkuaWQoKSwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CiB9CiAKIFBhc3NSZWZQdHI8
SURCQ3Vyc29yQmFja2VuZD4gSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGVDdXJzb3JCYWNr
ZW5kKElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZSYgY3Vyc29yLCBJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlw
ZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaAppbmRleCAyODFkMWZkLi4y
MTA3MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaApAQCAtMTIzLDggKzEyMyw2IEBAIHByaXZhdGU6CiAg
ICAgaW50IG1fcGVuZGluZ1ByZWVtcHRpdmVFdmVudHM7CiAKICAgICBIYXNoU2V0PElEQkN1cnNv
ckJhY2tlbmQqPiBtX29wZW5DdXJzb3JzOwotICAgIAotICAgIFJlZlB0cjxJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogCiAgICAgaW50NjRfdCBtX2lkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKaW5kZXggMjgyN2Q1YS4uOTY2YjQ2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgdm9pZCBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWMKICAgICBDYWxsT25EZXN0cnVjdCBjYWxsT25E
ZXN0cnVjdChjb21wbGV0aW9uQ2FsbGJhY2spOwogCiAgICAgTE9HKFN0b3JhZ2VBUEksICJDcmVh
dGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZU9iamVjdFN0b3JlKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
dHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmlkLCBt
X29iamVjdFN0b3JlTWV0YWRhdGEubmFtZSwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLmtleVBhdGgs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVtZW50KSkgeworICAgIGlmICghbV90cmFu
c2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdT
dG9yZSgpLT5jcmVhdGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVN
ZXRhZGF0YS5pZCwgbV9vYmplY3RTdG9yZU1ldGFkYXRhLm5hbWUsIG1fb2JqZWN0U3RvcmVNZXRh
ZGF0YS5rZXlQYXRoLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCkpIHsKICAg
ICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0
KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVjdFN0
b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24t
PmFib3J0KGVycm9yLnJlbGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTcwLDcgKzcwLDcg
QEAgdm9pZCBDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkNyZWF0ZUluZGV4
T3BlcmF0aW9uIik7Ci0gICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSW5kZXgobV90cmFu
c2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhNZXRhZGF0YS5pZCwgbV9pbmRleE1l
dGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRoLCBtX2luZGV4TWV0YWRhdGEudW5p
cXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUo
KS0+Y3JlYXRlSW5kZXgobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwg
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhN
ZXRhZGF0YS5pZCwgbV9pbmRleE1ldGFkYXRhLm5hbWUsIG1faW5kZXhNZXRhZGF0YS5rZXlQYXRo
LCBtX2luZGV4TWV0YWRhdGEudW5pcXVlLCBtX2luZGV4TWV0YWRhdGEubXVsdGlFbnRyeSkpIHsK
ICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5h
bCBlcnJvciB3aGVuIHRyeWluZyB0byBjcmVhdGUgaW5kZXggJyVzJy4iLCBtX2luZGV4TWV0YWRh
dGEubmFtZS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODcs
NyArODcsNyBAQCB2b2lkIERlbGV0ZUluZGV4T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2FsbE9u
RGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAiRGVs
ZXRlSW5kZXhPcGVyYXRpb24iKTsKLSAgICBib29sIG9rID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0
ZUluZGV4KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNh
Y3Rpb24tPmRhdGFiYXNlKCkuaWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEu
aWQpOworICAgIGJvb2wgb2sgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5l
Y3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPmRlbGV0ZUluZGV4KG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
aWQoKSwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4TWV0YWRhdGEuaWQpOwogICAgIGlmICghb2sp
IHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6
Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBpbmRleCAnJXMnLiIsIG1faW5kZXhNZXRh
ZGF0YS5uYW1lLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV90cmFuc2FjdGlvbi0+YWJvcnQo
ZXJyb3IpOwpAQCAtMTE1LDE0ICsxMTUsMTQgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBlcmZvcm0o
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAgaWYgKG1f
aW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKICAgICAgICAgICAgIEFT
U0VSVChtX2N1cnNvclR5cGUgIT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KTsKICAgICAgICAg
ICAgIC8vIE9iamVjdFN0b3JlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAgICAgICAgICAgIGJhY2tp
bmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3RvcmVDdXJzb3IobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6Q3Vyc29yTmV4dCk7Cisg
ICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgp
LnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5PYmplY3RT
dG9yZUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpD
dXJzb3JOZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChtX2N1cnNvclR5
cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JLZXlPbmx5KSB7CiAgICAgICAgICAgICAgICAgLy8gSW5k
ZXggVmFsdWUgUmV0cmlldmFsIE9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGJhY2tpbmdTdG9y
ZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuSW5kZXhLZXlDdXJzb3IobV90cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3Jl
SWQsIG1faW5kZXhJZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsK
KyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRh
YmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5J
bmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBt
X2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KLSAg
ICAgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbklu
ZGV4Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0
YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIElu
ZGV4ZWREQjo6Q3Vyc29yTmV4dCk7CisgICAgICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29y
ID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRl
ZEJhY2tpbmdTdG9yZSgpLT5vcGVuSW5kZXhDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1faW5kZXhJ
ZCwgbV9rZXlSYW5nZS5nZXQoKSwgSW5kZXhlZERCOjpDdXJzb3JOZXh0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBHZXRPcGVyYXRpb246OnBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICBpZiAo
bV9pbmRleElkID09IElEQkluZGV4TWV0YWRhdGE6OkludmFsaWRJZCkgewogICAgICAgICAvLyBP
YmplY3QgU3RvcmUgUmV0cmlldmFsIE9wZXJhdGlvbgogICAgICAgICBWZWN0b3I8Y2hhcj4gdmFs
dWU7Ci0gICAgICAgIG9rID0gbV9iYWNraW5nU3RvcmUtPmdldFJlY29yZChtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgKmtleSwgdmFsdWUpOworICAgICAgICBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+Z2V0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCAqa2V5LCB2YWx1ZSk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAg
ICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UmVjb3Jk
LiIpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIEdldE9w
ZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNr
KQogICAgIH0KIAogICAgIC8vIEZyb20gaGVyZSB3ZSBhcmUgZGVhbGluZyBvbmx5IHdpdGggaW5k
ZXhlcy4KLSAgICBvayA9IG1fYmFja2luZ1N0b3JlLT5nZXRQcmltYXJ5S2V5VmlhSW5kZXgobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29i
amVjdFN0b3JlSWQsIG1faW5kZXhJZCwgKmtleSwgcHJpbWFyeUtleSk7CisgICAgb2sgPSBtX3Ry
YW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2lu
Z1N0b3JlKCktPmdldFByaW1hcnlLZXlWaWFJbmRleChtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCAqa2V5LCBwcmltYXJ5S2V5KTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgaW4gZ2V0UHJpbWFyeUtleVZpYUluZGV4LiIp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgR2V0T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAg
ICAvLyBJbmRleCBSZWZlcmVuY2VkIFZhbHVlIFJldHJpZXZhbCBPcGVyYXRpb24KICAgICBWZWN0
b3I8Y2hhcj4gdmFsdWU7Ci0gICAgb2sgPSBtX2JhY2tpbmdTdG9yZS0+Z2V0UmVjb3JkKG1fdHJh
bnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmpl
Y3RTdG9yZUlkLCAqcHJpbWFyeUtleSwgdmFsdWUpOworICAgIG9rID0gbV90cmFuc2FjdGlvbi0+
ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5n
ZXRSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9kYXRh
YmFzZUlkLCBtX29iamVjdFN0b3JlSWQsICpwcmltYXJ5S2V5LCB2YWx1ZSk7CiAgICAgaWYgKCFv
aykgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGlu
IGdldFJlY29yZC4iKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTIwNiw3ICsyMDYsNyBAQCB2b2lk
IFB1dE9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogCiAgICAgUmVmUHRyPElEQktleT4ga2V5OwogICAgIGlmIChtX3B1dE1vZGUgIT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgbV9vYmplY3RTdG9yZS5hdXRvSW5j
cmVtZW50ICYmICFtX2tleSkgewotICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV9iYWNraW5nU3RvcmUtPmdlbmVyYXRlS2V5KCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQs
IG1fb2JqZWN0U3RvcmUuaWQpOworICAgICAgICBSZWZQdHI8SURCS2V5PiBhdXRvSW5jS2V5ID0g
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5nZW5lcmF0ZUtleSgqbV90cmFuc2FjdGlvbiwgbV9kYXRhYmFzZUlkLCBt
X29iamVjdFN0b3JlLmlkKTsKICAgICAgICAga2V5V2FzR2VuZXJhdGVkID0gdHJ1ZTsKICAgICAg
ICAgaWYgKCFhdXRvSW5jS2V5LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
Q29uc3RyYWludEVycm9yLCAiTWF4aW11bSBrZXkgZ2VuZXJhdG9yIHZhbHVlIHJlYWNoZWQuIikp
OwpAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAKICAgICBSZWZQdHI8SURCUmVjb3Jk
SWRlbnRpZmllcj4gcmVjb3JkSWRlbnRpZmllcjsKICAgICBpZiAobV9wdXRNb2RlID09IElEQkRh
dGFiYXNlQmFja2VuZDo6QWRkT25seSkgewotICAgICAgICBib29sIG9rID0gbV9iYWNraW5nU3Rv
cmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkLCAqa2V5LCByZWNvcmRJ
ZGVudGlmaWVyKTsKKyAgICAgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
c2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2Rh
dGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksIHJlY29yZElkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoIW9rKSB7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yIGNoZWNraW5nIGtleSBleGlzdGVuY2UuIikpOwogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgVmVjdG9yPFJlZlB0cjxJ
REJJbmRleFdyaXRlcj4+IGluZGV4V3JpdGVyczsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgIGJvb2wgb2JleXNDb25zdHJhaW50cyA9IGZhbHNlOwotICAgIGJvb2wgYmFja2luZ1N0b3Jl
U3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9p
bmRleElkcywgbV9pbmRleEtleXMsIGluZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXND
b25zdHJhaW50cyk7CisgICAgYm9vbCBiYWNraW5nU3RvcmVTdWNjZXNzID0gbV90cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgp
LT5tYWtlSW5kZXhXcml0ZXJzKCptX3RyYW5zYWN0aW9uLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0
U3RvcmUsICprZXksIGtleVdhc0dlbmVyYXRlZCwgbV9pbmRleElkcywgbV9pbmRleEtleXMsIGlu
ZGV4V3JpdGVycywgJmVycm9yTWVzc2FnZSwgb2JleXNDb25zdHJhaW50cyk7CiAgICAgaWYgKCFi
YWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAi
SW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgdXBkYXRpbmcgaW5kZXgga2V5cy4i
KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFB1dE9wZXJhdGlv
bjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNhbGxiYWNrKQogICAg
IH0KIAogICAgIC8vIEJlZm9yZSB0aGlzIHBvaW50LCBkb24ndCBkbyBhbnkgbXV0YXRpb24uIEFm
dGVyIHRoaXMgcG9pbnQsIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbiBpbiBjYXNlIG9mIGVycm9y
LgotICAgIGJhY2tpbmdTdG9yZVN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3JkKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7Cisg
ICAgYmFja2luZ1N0b3JlU3VjY2VzcyA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVy
Q29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+cHV0UmVjb3JkKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZS5pZCwgKmtleSwgbV92YWx1ZSwgcmVjb3JkSWRlbnRpZmllci5nZXQoKSk7CiAgICAgaWYg
KCFiYWNraW5nU3RvcmVTdWNjZXNzKSB7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKElE
QkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9y
LCAiSW50ZXJuYWwgZXJyb3I6IGJhY2tpbmcgc3RvcmUgZXJyb3IgcGVyZm9ybWluZyBwdXQvYWRk
LiIpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDExICsyNTQsMTEgQEAgdm9pZCBQdXRPcGVy
YXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykK
IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhXcml0ZXJzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIElEQkluZGV4V3JpdGVyKiBpbmRleFdyaXRlciA9IGluZGV4V3JpdGVyc1tpXS5n
ZXQoKTsKLSAgICAgICAgaW5kZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZp
ZXIuZ2V0KCksICptX2JhY2tpbmdTdG9yZSwgbV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlLmlkKTsKKyAgICAgICAgaW5k
ZXhXcml0ZXItPndyaXRlSW5kZXhLZXlzKHJlY29yZElkZW50aWZpZXIuZ2V0KCksICptX3RyYW5z
YWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0
b3JlKCksIG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJh
c2VJZCwgbV9vYmplY3RTdG9yZS5pZCk7CiAgICAgfQogCiAgICAgaWYgKG1fb2JqZWN0U3RvcmUu
YXV0b0luY3JlbWVudCAmJiBtX3B1dE1vZGUgIT0gSURCRGF0YWJhc2VCYWNrZW5kOjpDdXJzb3JV
cGRhdGUgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7Ci0gICAgICAgIGJv
b2wgb2sgPSBtX2JhY2tpbmdTdG9yZS0+dXBkYXRlS2V5R2VuZXJhdG9yKCptX3RyYW5zYWN0aW9u
LCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmUuaWQsICprZXksICFrZXlXYXNHZW5lcmF0ZWQp
OworICAgICAgICBib29sIG9rID0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25u
ZWN0aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT51cGRhdGVLZXlHZW5lcmF0b3IoKm1f
dHJhbnNhY3Rpb24sIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZS5pZCwgKmtleSwgIWtleVdh
c0dlbmVyYXRlZCk7CiAgICAgICAgIGlmICghb2spIHsKICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgdXBkYXRpbmcga2V5IGdlbmVyYXRvci4iKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsMTMgKzI5MywxMyBAQCB2b2lkIE9wZW5DdXJz
b3JPcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxs
YmFjaykKICAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29ySW50ZXJmYWNlPiBiYWNraW5n
U3RvcmVDdXJzb3I7CiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZh
bGlkSWQpIHsKICAgICAgICAgQVNTRVJUKG1fY3Vyc29yVHlwZSAhPSBJbmRleGVkREI6OkN1cnNv
cktleU9ubHkpOwotICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBt
X2RpcmVjdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fdGFza1R5cGUgPT0g
SURCRGF0YWJhc2VCYWNrZW5kOjpOb3JtYWxUYXNrKTsKICAgICAgICAgaWYgKG1fY3Vyc29yVHlw
ZSA9PSBJbmRleGVkREI6OkN1cnNvcktleU9ubHkpCi0gICAgICAgICAgICBiYWNraW5nU3RvcmVD
dXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24t
PmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlk
LCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsKKyAgICAgICAgICAg
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3BlbkluZGV4S2V5Q3Vyc29yKG1f
dHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9v
YmplY3RTdG9yZUlkLCBtX2luZGV4SWQsIG1fa2V5UmFuZ2UuZ2V0KCksIG1fZGlyZWN0aW9uKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgYmFja2luZ1N0b3JlQ3Vyc29yID0gbV9iYWNraW5n
U3RvcmUtPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJh
bmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CisgICAgICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3Ig
PSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVk
QmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEN1cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElk
LCBtX2tleVJhbmdlLmdldCgpLCBtX2RpcmVjdGlvbik7CiAgICAgfQogCiAgICAgaWYgKCFiYWNr
aW5nU3RvcmVDdXJzb3IpIHsKQEAgLTMyMiw5ICszMjIsOSBAQCB2b2lkIENvdW50T3BlcmF0aW9u
OjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZUN1cnNvckludGVyZmFjZT4gYmFja2luZ1N0b3JlQ3Vyc29y
OwogCiAgICAgaWYgKG1faW5kZXhJZCA9PSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpCi0g
ICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fYmFja2luZ1N0b3JlLT5vcGVuT2JqZWN0U3Rv
cmVLZXlDdXJzb3IobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9k
YXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIG1fa2V5UmFuZ2UuZ2V0KCksIEluZGV4ZWREQjo6
Q3Vyc29yTmV4dCk7CisgICAgICAgIGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+
b3Blbk9iamVjdFN0b3JlS2V5Q3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgp
LCBJbmRleGVkREI6OkN1cnNvck5leHQpOwogICAgIGVsc2UKLSAgICAgICAgYmFja2luZ1N0b3Jl
Q3Vyc29yID0gbV9iYWNraW5nU3RvcmUtPm9wZW5JbmRleEtleUN1cnNvcihtX3RyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlSWQsIG1fb2JqZWN0U3RvcmVJ
ZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQpOwor
ICAgICAgICBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNl
cnZlckNvbm5lY3Rpb24oKS5kZXByZWNhdGVkQmFja2luZ1N0b3JlKCktPm9wZW5JbmRleEtleUN1
cnNvcihtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNl
SWQsIG1fb2JqZWN0U3RvcmVJZCwgbV9pbmRleElkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVk
REI6OkN1cnNvck5leHQpOwogICAgIGlmICghYmFja2luZ1N0b3JlQ3Vyc29yKSB7CiAgICAgICAg
IG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3MoY291bnQpOwogICAgICAgICByZXR1cm47CkBAIC0zNDIs
MTAgKzM0MiwxMCBAQCB2b2lkIERlbGV0ZVJhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgQ2FsbE9uRGVzdHJ1Y3QgY2Fs
bE9uRGVzdHJ1Y3QoY29tcGxldGlvbkNhbGxiYWNrKTsKIAogICAgIExPRyhTdG9yYWdlQVBJLCAi
RGVsZXRlUmFuZ2VPcGVyYXRpb24iKTsKLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlQ3Vyc29y
SW50ZXJmYWNlPiBiYWNraW5nU3RvcmVDdXJzb3IgPSBtX2JhY2tpbmdTdG9yZS0+b3Blbk9iamVj
dFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1f
ZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6
OkN1cnNvck5leHQpOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVDdXJzb3JJbnRlcmZhY2U+
IGJhY2tpbmdTdG9yZUN1cnNvciA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29y
KG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwg
bV9vYmplY3RTdG9yZUlkLCBtX2tleVJhbmdlLmdldCgpLCBJbmRleGVkREI6OkN1cnNvck5leHQp
OwogICAgIGlmIChiYWNraW5nU3RvcmVDdXJzb3IpIHsKICAgICAgICAgZG8gewotICAgICAgICAg
ICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlUmVjb3JkKG1fdHJhbnNhY3Rpb24tPmJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9yZUlkLCBiYWNr
aW5nU3RvcmVDdXJzb3ItPnJlY29yZElkZW50aWZpZXIoKSkpIHsKKyAgICAgICAgICAgIGlmICgh
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkuZGVwcmVjYXRlZEJh
Y2tpbmdTdG9yZSgpLT5kZWxldGVSZWNvcmQobV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24oKSwgbV9kYXRhYmFzZUlkLCBtX29iamVjdFN0b3JlSWQsIGJhY2tpbmdTdG9yZUN1
cnNvci0+cmVjb3JkSWRlbnRpZmllcigpKSkgewogICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiRXJyb3IgZGVsZXRpbmcgZGF0YSBpbiByYW5nZSIpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBD
bGVhck9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkNh
bGxiYWNrKQogICAgIENhbGxPbkRlc3RydWN0IGNhbGxPbkRlc3RydWN0KGNvbXBsZXRpb25DYWxs
YmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIk9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb24i
KTsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RTdG9y
ZUlkKSkgeworICAgIGlmICghbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0
aW9uKCkuZGVwcmVjYXRlZEJhY2tpbmdTdG9yZSgpLT5jbGVhck9iamVjdFN0b3JlKG1fdHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2VJZCwgbV9vYmplY3RT
dG9yZUlkKSkgewogICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkVycm9yIGNsZWFy
aW5nIG9iamVjdCBzdG9yZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3Miw3ICsz
NzIsNyBAQCB2b2lkIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhYwogICAgIENhbGxPbkRlc3RydWN0IGNhbGxP
bkRlc3RydWN0KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBMT0coU3RvcmFnZUFQSSwgIkRl
bGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7Ci0gICAgYm9vbCBvayA9IG1fYmFja2luZ1N0b3Jl
LT5kZWxldGVPYmplY3RTdG9yZShtX3RyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLmlkKCksIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YS5pZCk7CisgICAgYm9vbCBvayA9IG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2VydmVyQ29u
bmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+ZGVsZXRlT2JqZWN0U3RvcmUobV90
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS5pZCgpLCBtX29iamVjdFN0b3JlTWV0YWRhdGEuaWQpOwogICAgIGlmICghb2spIHsK
ICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9y
bWF0KCJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUgJyVzJy4iLCBtX29iamVj
dFN0b3JlTWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rp
b24tPmFib3J0KGVycm9yKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gYwogICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWlu
dDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KICAgICBBU1NFUlQobV92ZXJz
aW9uID4gKGludDY0X3Qpb2xkVmVyc2lvbik7CiAgICAgZGF0YWJhc2Uuc2V0Q3VycmVudFZlcnNp
b24obV92ZXJzaW9uKTsKLSAgICBpZiAoIWRhdGFiYXNlLmJhY2tpbmdTdG9yZSgpLT51cGRhdGVJ
REJEYXRhYmFzZVZlcnNpb24obV90cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UubWV0YWRhdGEoKS52ZXJzaW9uKSkgeworICAgIGlmICgh
ZGF0YWJhc2Uuc2VydmVyQ29ubmVjdGlvbigpLmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKS0+dXBk
YXRlSURCRGF0YWJhc2VWZXJzaW9uKG1fdHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLm1ldGFkYXRhKCkudmVyc2lvbikpIHsKICAgICAg
ICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRh
dGEgdG8gc3RhYmxlIHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICBt
X2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmFib3J0
KGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaAppbmRleCBiODQ2MmM4
Li5jNGUzOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCkBAIC0yOCw2
ICsyOCw3IEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJ
REJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKQEAgLTM2LDQxICszNywzNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENyZWF0
ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3Rv
cmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlTWV0YWRhdGEpCisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0
U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRl
T2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgb2JqZWN0U3Rv
cmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhKSk7CiAgICAgfQog
ICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2Fs
bGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBDcmVhdGVPYmplY3RTdG9yZU9w
ZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3Rv
cmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFk
YXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAs
IG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgIHsKICAgICB9
CiAgICAgCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsK
LSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9y
ZTsKICAgICBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhIG1fb2JqZWN0U3RvcmVNZXRhZGF0
YTsKIH07CiAKIGNsYXNzIERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIDogcHVibGljIElEQk9w
ZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3Jl
SW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9i
amVjdFN0b3JlTWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBj
cmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJh
Y2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVNZXRhZGF0YSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IERlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9y
ZU1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5z
YWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSkKKyAgICBEZWxldGVPYmpl
Y3RTdG9yZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRhKQogICAgICAgICA6
IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFj
a2luZ1N0b3JlKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVNZXRhZGF0YShvYmplY3RTdG9yZU1l
dGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
PiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZh
Y2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbV9v
YmplY3RTdG9yZU1ldGFkYXRhOwogfTsKIApAQCAtMTU2LDIyICsxNTMsMjAgQEAgcHJpdmF0ZToK
IAogY2xhc3MgQ3JlYXRlSW5kZXhPcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9uIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJh
Y2tpbmdTdG9yZSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRh
JiBpbmRleE1ldGFkYXRhKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3Jl
YXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYgaW5kZXhNZXRhZGF0YSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ3JlYXRlSW5kZXhPcGVyYXRpb24odHJhbnNhY3Rpb24s
IGJhY2tpbmdTdG9yZSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhNZXRhZGF0YSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENyZWF0ZUluZGV4T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleE1ldGFkYXRhKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJm
b3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFM
OwogcHJpdmF0ZToKLSAgICBDcmVhdGVJbmRleE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFk
YXRhKQorICAgIENyZWF0ZUluZGV4T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJh
bnNhY3Rpb24sIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCSW5kZXhNZXRhZGF0YSYg
aW5kZXhNZXRhZGF0YSkKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAg
ICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX29iamVjdFN0
b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4TWV0YWRhdGEoaW5kZXhNZXRh
ZGF0YSkKICAgICB7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4g
bV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNl
PiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAg
ICBjb25zdCBJREJJbmRleE1ldGFkYXRhIG1faW5kZXhNZXRhZGF0YTsKIH07CkBAIC0xOTgsMjIg
KzE5MywyMCBAQCBwcml2YXRlOgogCiBjbGFzcyBEZWxldGVJbmRleE9wZXJhdGlvbiA6IHB1Ymxp
YyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJh
dGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tp
bmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQkluZGV4TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1l
dGFkYXRhKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEZWxldGVJbmRleE9w
ZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3JlLCBvYmplY3RTdG9yZUlkLCBpbmRleE1l
dGFkYXRhKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlSW5kZXhPcGVyYXRp
b24odHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlSWQsIGluZGV4TWV0YWRhdGEpKTsKICAgICB9CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxs
YmFjaykgT1ZFUlJJREUgRklOQUw7CiBwcml2YXRlOgotICAgIERlbGV0ZUluZGV4T3BlcmF0aW9u
KElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVy
ZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQkluZGV4
TWV0YWRhdGEmIGluZGV4TWV0YWRhdGEpCisgICAgRGVsZXRlSW5kZXhPcGVyYXRpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBJREJJbmRleE1ldGFkYXRhJiBpbmRleE1ldGFkYXRhKQogICAgICAgICA6IG1fdHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQog
ICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5k
ZXhNZXRhZGF0YShpbmRleE1ldGFkYXRhKQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8SURC
VHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwotICAgIGNvbnN0IFJlZlB0cjxJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3JlOwogICAgIGNvbnN0IGludDY0X3Qg
bV9vYmplY3RTdG9yZUlkOwogICAgIGNvbnN0IElEQkluZGV4TWV0YWRhdGEgbV9pbmRleE1ldGFk
YXRhOwogfTsKQEAgLTI0MCwxNSArMjMzLDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIEdldE9wZXJh
dGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNv
clR5cGUgY3Vyc29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBhc3NSZWZQdHI8SURCS2V5
UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBiYWNraW5nU3RvcmUsIG1ldGFkYXRh
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwgY3Vyc29yVHlwZSwgY2FsbGJhY2tz
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2V0T3BlcmF0aW9uKHRyYW5zYWN0aW9u
LCBtZXRhZGF0YSwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGN1cnNvclR5cGUs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgR2V0T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJh
Y2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJiBtZXRhZGF0YSwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIFBh
c3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBHZXRPcGVy
YXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYgbWV0YWRhdGEsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRl
eElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JU
eXBlIGN1cnNvclR5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiAgICAg
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAgLCBtX2JhY2tpbmdTdG9y
ZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKG1ldGFkYXRhLmlkKQogICAg
ICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RTdG9yZUlkKQogICAgICAgICAsIG1faW5kZXhJ
ZChpbmRleElkKQpAQCAtMjYzLDcgKzI1NSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVm
UHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQ
dHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBp
bnQ2NF90IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsK
ICAgICBjb25zdCBpbnQ2NF90IG1faW5kZXhJZDsKQEAgLTI3NiwxNSArMjY3LDE0IEBAIHByaXZh
dGU6CiAKIGNsYXNzIFB1dE9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0
aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2lu
Z1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEm
IG9iamVjdFN0b3JlLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8
SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
b2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJLZXk+IGtleSwgSURCRGF0YWJhc2VCYWNrZW5kOjpQdXRNb2RlIHB1dE1vZGUsIFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJ
ZHMsIGNvbnN0IFZlY3RvcjxJbmRleEtleXM+JiBpbmRleEtleXMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFB1dE9wZXJhdGlvbih0cmFuc2FjdGlvbiwgYmFja2luZ1N0b3Jl
LCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtleSwgcHV0TW9kZSwgY2FsbGJhY2tz
LCBpbmRleElkcywgaW5kZXhLZXlzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHV0
T3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZSwgdmFsdWUsIGtl
eSwgcHV0TW9kZSwgY2FsbGJhY2tzLCBpbmRleElkcywgaW5kZXhLZXlzKSk7CiAgICAgfQogICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJh
Y2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAgICBQdXRPcGVyYXRpb24oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNr
aW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YSYgb2JqZWN0U3RvcmUsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiYgdmFsdWUsIFBhc3NSZWZQ
dHI8SURCS2V5PiBrZXksIElEQkRhdGFiYXNlQmFja2VuZDo6UHV0TW9kZSBwdXRNb2RlLCBQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGlu
ZGV4SWRzLCBjb25zdCBWZWN0b3I8SW5kZXhLZXlzPiYgaW5kZXhLZXlzKQorICAgIFB1dE9wZXJh
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SWQsIGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG9iamVjdFN0b3JlLCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4mIHZhbHVlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OlB1dE1vZGUgcHV0TW9kZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcywgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElkcywgY29uc3QgVmVjdG9yPEluZGV4
S2V5cz4mIGluZGV4S2V5cykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQot
ICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFi
YXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3JlKG9iamVjdFN0b3JlKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCkBAIC0yOTcsNyArMjg3LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IElEQk9iamVjdFN0
b3JlTWV0YWRhdGEgbV9vYmplY3RTdG9yZTsKICAgICBjb25zdCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX3ZhbHVlOwpAQCAtMzI4LDE1ICszMTcsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgT3BlbkN1
cnNvck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCog
dHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQ
YXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJh
c2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJU
cmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdl
PiBrZXlSYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVk
REI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0
YXNrVHlwZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwg
YmFja2luZ1N0b3JlLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5n
ZSwgZGlyZWN0aW9uLCBjdXJzb3JUeXBlLCB0YXNrVHlwZSwgY2FsbGJhY2tzKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgT3BlbkN1cnNvck9wZXJhdGlvbih0cmFuc2FjdGlvbiwgZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGRpcmVjdGlvbiwgY3Vy
c29yVHlwZSwgdGFza1R5cGUsIGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBG
SU5BTDsKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9y
ZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWxsYmFja3MpCisgICAgT3BlbkN1cnNvck9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwg
SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJbmRleGVkREI6OkN1cnNvclR5
cGUgY3Vyc29yVHlwZSwgSURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSB0YXNrVHlwZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBtX3RyYW5zYWN0aW9u
KHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tpbmdTdG9yZSkKICAg
ICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBtX29iamVjdFN0b3Jl
SWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2luZGV4SWQoaW5kZXhJZCkKQEAgLTM0OSw3
ICszMzcsNiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmQ+IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUlu
dGVyZmFjZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7
CiAgICAgY29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgaW50NjRfdCBt
X2luZGV4SWQ7CkBAIC0zNjIsMTUgKzM0OSwxNCBAQCBwcml2YXRlOgogCiBjbGFzcyBDb3VudE9w
ZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNh
Y3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVm
UHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxi
YWNrcykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ291bnRPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tp
bmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwga2V5UmFuZ2UsIGNh
bGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvdW50T3BlcmF0aW9uKHRy
YW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBDb3VudE9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJC
YWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFzc1JlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCisgICAg
Q291bnRPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgUGFz
c1JlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCiAgICAgICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKLSAgICAgICAg
LCBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCiAgICAgICAgICwgbV9kYXRhYmFzZUlkKGRh
dGFiYXNlSWQpCiAgICAgICAgICwgbV9vYmplY3RTdG9yZUlkKG9iamVjdFN0b3JlSWQpCiAgICAg
ICAgICwgbV9pbmRleElkKGluZGV4SWQpCkBAIC0zODAsNyArMzY2LDYgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwot
ICAgIGNvbnN0IFJlZlB0cjxJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U+IG1fYmFja2luZ1N0b3Jl
OwogICAgIGNvbnN0IGludDY0X3QgbV9kYXRhYmFzZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9v
YmplY3RTdG9yZUlkOwogICAgIGNvbnN0IGludDY0X3QgbV9pbmRleElkOwpAQCAtMzkwLDE1ICsz
NzUsMTQgQEAgcHJpdmF0ZToKIAogY2xhc3MgRGVsZXRlUmFuZ2VPcGVyYXRpb24gOiBwdWJsaWMg
SURCT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRp
b24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBJREJCYWNraW5n
U3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJhbmdlLCBQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsZXRlUmFuZ2VPcGVyYXRpb24odHJhbnNh
Y3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwga2V5UmFuZ2Us
IGNhbGxiYWNrcykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGV0ZVJhbmdlT3Bl
cmF0aW9uKHRyYW5zYWN0aW9uLCBkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrZXlSYW5nZSwg
Y2FsbGJhY2tzKSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rp
b248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIE9WRVJSSURFIEZJTkFMOwogcHJpdmF0ZToKLSAg
ICBEZWxldGVSYW5nZU9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9u
LCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGJhY2tpbmdTdG9yZSwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGtleVJh
bmdlLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQorICAgIERlbGV0ZVJhbmdl
T3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0
YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBr
ZXlSYW5nZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICAgICAgOiBt
X3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQotICAgICAgICAsIG1fYmFja2luZ1N0b3JlKGJhY2tp
bmdTdG9yZSkKICAgICAgICAgLCBtX2RhdGFiYXNlSWQoZGF0YWJhc2VJZCkKICAgICAgICAgLCBt
X29iamVjdFN0b3JlSWQob2JqZWN0U3RvcmVJZCkKICAgICAgICAgLCBtX2tleVJhbmdlKGtleVJh
bmdlKQpAQCAtNDA3LDcgKzM5MSw2IEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKLSAgICBjb25zdCBSZWZQdHI8SURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlPiBtX2JhY2tpbmdTdG9yZTsKICAgICBjb25zdCBpbnQ2NF90
IG1fZGF0YWJhc2VJZDsKICAgICBjb25zdCBpbnQ2NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBj
b25zdCBSZWZQdHI8SURCS2V5UmFuZ2U+IG1fa2V5UmFuZ2U7CkBAIC00MTYsMTUgKzM5OSwxNCBA
QCBwcml2YXRlOgogCiBjbGFzcyBDbGVhck9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24g
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElE
QlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZSogYmFja2luZ1N0b3JlLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
ZCwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0
aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGJhY2tpbmdTdG9yZSwgZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwgY2FsbGJhY2tzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQ2xlYXJPcGVyYXRpb24odHJhbnNhY3Rpb24sIGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGNhbGxiYWNrcykpOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNrKSBPVkVSUklERSBGSU5BTDsKIHByaXZhdGU6Ci0g
ICAgQ2xlYXJPcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgSURC
QmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUsIGludDY0X3QgZGF0YWJhc2VJZCwg
aW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tz
KQorICAgIENsZWFyT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzKQogICAgICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rp
b24pCi0gICAgICAgICwgbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQogICAgICAgICAsIG1f
ZGF0YWJhc2VJZChkYXRhYmFzZUlkKQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVJZChvYmplY3RT
dG9yZUlkKQogICAgICAgICAsIG1fY2FsbGJhY2tzKGNhbGxiYWNrcykKQEAgLTQzMiw3ICs0MTQs
NiBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+
IG1fdHJhbnNhY3Rpb247Ci0gICAgY29uc3QgUmVmUHRyPElEQkJhY2tpbmdTdG9yZUludGVyZmFj
ZT4gbV9iYWNraW5nU3RvcmU7CiAgICAgY29uc3QgaW50NjRfdCBtX2RhdGFiYXNlSWQ7CiAgICAg
Y29uc3QgaW50NjRfdCBtX29iamVjdFN0b3JlSWQ7CiAgICAgY29uc3QgUmVmUHRyPElEQkNhbGxi
YWNrcz4gbV9jYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKaW5kZXggMTUyMDIzMi4u
MTk4NzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rpb25zIGFzIHRoZXkgc3RhcnQgYW5kIGZp
bmlzaC4KICAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCopOworICAgIHZvaWQgZGlkT3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0
aW9uQmFja2VuZCopOwogICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmQqKTsKICAgICB2b2lkIGRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9u
QmFja2VuZCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5k
ZXggYzU5YmJlYi4uZWMyYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZl
bERCLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmQuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmQuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIklEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTEyMiw3ICsxMjMsOCBAQCB2
b2lkIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBQYXNzUmVmUHRyPElEQgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNr
ZW5kOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCB0aGlzLCB1bmlxdWVJZGVudGlm
aWVyKTsKKyAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbiA9
IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3JlLmdldCgpKTsK
KyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRh
YmFzZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCB1bmlxdWVJZGVudGlmaWVyLCB0aGlzLCAqc2VydmVy
Q29ubmVjdGlvbik7CiAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkgewogICAgICAgICBtX2RhdGFi
YXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgp
KTsKICAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwpA
QCAtMTc2LDcgKzE3OCw4IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgaW50NjRfCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFz
ZUJhY2tlbmQ6OmNyZWF0ZShuYW1lLCBiYWNraW5nU3RvcmUuZ2V0KCksIHRoaXMsIHVuaXF1ZUlk
ZW50aWZpZXIpOworICAgICAgICBSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4gc2VydmVyQ29u
bmVjdGlvbiA9IElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjcmVhdGUoYmFja2luZ1N0b3Jl
LmdldCgpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kOjpj
cmVhdGUobmFtZSwgdW5pcXVlSWRlbnRpZmllciwgdGhpcywgKnNlcnZlckNvbm5lY3Rpb24pOwog
ICAgICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKQogICAgICAgICAgICAgbV9kYXRhYmFzZUJhY2tl
bmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CiAgICAg
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWNlMjY2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJD
b25uZWN0aW9uTGV2ZWxEQi5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIgor
CisjaW5jbHVkZSAiSURCQmFja2luZ1N0b3JlSW50ZXJmYWNlLmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIo
SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlKiBiYWNraW5nU3RvcmUpCisgICAgOiBtX2JhY2tpbmdT
dG9yZShiYWNraW5nU3RvcmUpCisgICAgLCBtX2Nsb3NlZChmYWxzZSkKK3sKK30KKworSURCU2Vy
dmVyQ29ubmVjdGlvbkxldmVsREI6On5JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQigpCit7Cit9
CisKK0lEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6
OmRlcHJlY2F0ZWRCYWNraW5nU3RvcmUoKQoreworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS5n
ZXQoKTsKK30KKworYm9vbCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6aXNDbG9zZWQoKQor
eworICAgIHJldHVybiBtX2Nsb3NlZDsKK30KKwordm9pZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2
ZWxEQjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgR2V0SURCRGF0YWJhc2VNZXRhZGF0YUZ1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIFJlZlB0
cjxJREJTZXJ2ZXJDb25uZWN0aW9uPiBzZWxmKHRoaXMpOworICAgIG1fYmFja2luZ1N0b3JlLT5n
ZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEobmFtZSwgW3NlbGYsIHRoaXMsIGNhbGxi
YWNrXShjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSwgYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgIGNhbGxiYWNrKG1ldGFkYXRhLCBzdWNjZXNzKTsKKyAgICB9KTsKK30KKwordm9p
ZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5n
JiBuYW1lLCBCb29sQ2FsbGJhY2tGdW5jdGlvbiBzdWNjZXNzQ2FsbGJhY2spCit7CisgICAgUmVm
UHRyPElEQlNlcnZlckNvbm5lY3Rpb24+IHNlbGYodGhpcyk7CisgICAgbV9iYWNraW5nU3RvcmUt
PmRlbGV0ZURhdGFiYXNlKG5hbWUsIFtzZWxmLCB0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wg
c3VjY2VzcykgeworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soc3VjY2Vzcyk7CisgICAgfSk7Cit9
CisKK3ZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmNsb3NlKCkKK3sKKyAgICBtX2Jh
Y2tpbmdTdG9yZS5jbGVhcigpOworICAgIG1fY2xvc2VkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExFVkVMREIpCisjZW5kaWYgLy8gRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERC
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxOGJhZQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2Vy
dmVyQ29ubmVjdGlvbkxldmVsREIuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQl9oCisjZGVmaW5lIElEQlNlcnZlckNvbm5l
Y3Rpb25MZXZlbERCX2gKKworI2luY2x1ZGUgIklEQlNlcnZlckNvbm5lY3Rpb24uaCIKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2lmIFVTRShMRVZFTERCKQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTsKKworY2xhc3MgSURC
U2VydmVyQ29ubmVjdGlvbkxldmVsREIgRklOQUwgOiBwdWJsaWMgSURCU2VydmVyQ29ubmVjdGlv
biB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCU2VydmVyQ29ubmVjdGlvbj4g
Y3JlYXRlKElEQkJhY2tpbmdTdG9yZUludGVyZmFjZSogYmFja2luZ1N0b3JlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQihiYWNr
aW5nU3RvcmUpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5JREJTZXJ2ZXJDb25uZWN0aW9uTGV2
ZWxEQigpOworCisgICAgLy8gRklYTUU6IEZvciBub3csIHNlcnZlciBjb25uZWN0aW9uIHByb3Zp
ZGVzIGEgc3luY2hyb25vdXMgYWNjZXNzb3IgdG8gdGhlIGluLXByb2Nlc3MgYmFja2luZyBzdG9y
ZS4KKyAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBiZSByZW1vdmVkIHNvb24uCisg
ICAgdmlydHVhbCBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2UqIGRlcHJlY2F0ZWRCYWNraW5nU3Rv
cmUoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZCgpIE9WRVJSSURFOwor
CisgICAgLy8gRGF0YWJhc2UtbGV2ZWwgb3BlcmF0aW9ucworICAgIHZpcnR1YWwgdm9pZCBnZXRP
ckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBHZXRJREJE
YXRhYmFzZU1ldGFkYXRhRnVuY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIEJvb2xDYWxsYmFja0Z1bmN0aW9uIHN1Y2Nl
c3NDYWxsYmFjaykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgT1ZFUlJJREU7
CisKK3ByaXZhdGU6CisgICAgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIoSURCQmFja2luZ1N0
b3JlSW50ZXJmYWNlKik7CisKKyAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlSW50ZXJmYWNlPiBt
X2JhY2tpbmdTdG9yZTsKKyAgICBib29sIG1fY2xvc2VkOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gVVNFKExFVkVMREIpCisjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDZiMTM4ZDMuLjdiODIzODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NDUsNiArMTY0NSw3IEBACiAJCTUxMDE4NDZBMEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQ
YWdlLmNwcCAqLzsgfTsKIAkJNTEwNTlEREQxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0
aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEwNTlERDkxODIwQjE3NjAwREZGOUIxIC8qIElEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuY3BwICovOyB9OwogCQk1MTA1OURERTE4MjBCMTc2MDBERkY5QjEg
LyogSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNTlEREExODIwQjE3NjAwREZGOUIxIC8qIElE
QlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaCAqLzsgfTsKKwkJNTEwQTMyNkYxODMxODQz
MTAwM0M1MzI2IC8qIElEQlNlcnZlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEEzMjZFMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJT
ZXJ2ZXJDb25uZWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNTEwQjdEQjcxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFj
a2VuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTBCN0RCNTE4MkQ5RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcCAqLzsg
fTsKIAkJNTEwQjdEQjgxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwQjdEQjYx
ODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMEQ0QTMzMTAzMTY1RUUwMDQ5
RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwRDRBMkQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5jcHAgKi87IH07CkBAIC0xNzI5LDYgKzE3MzAsOCBAQAogCQk1MTYw
RjQ5ODBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYg
LyogSGlzdG9yeUl0ZW1NYWMubW0gKi87IH07CiAJCTUxNjJDN0Y0MTFGNzdFRkIwMDYxMkVGRSAv
KiBTY2hlbWVSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTYyQzdGMjExRjc3RUZBMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuY3Bw
ICovOyB9OwogCQk1MTYyQzdGNTExRjc3RUZCMDA2MTJFRkUgLyogU2NoZW1lUmVnaXN0cnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjJDN0YzMTFG
NzdFRkIwMDYxMkVGRSAvKiBTY2hlbWVSZWdpc3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxNjRFRDQzMTgzMjA4QzcwMEVBOEZGMSAvKiBJ
REJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0RUQ0MTE4MzIwOEM3MDBFQThGRjEgLyogSURCU2VydmVy
Q29ubmVjdGlvbkxldmVsREIuY3BwICovOyB9OworCQk1MTY0RUQ0NDE4MzIwOEM3MDBFQThGRjEg
LyogSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjRFRDQyMTgzMjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2
ZXJDb25uZWN0aW9uTGV2ZWxEQi5oICovOyB9OwogCQk1MTY2MEFCNjE4MjhCQjgyMDAwNzRDQUQg
LyogSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY2MEFCMDE4MjhCQjgyMDAwNzRDQUQgLyogSURCQmFja2lu
Z1N0b3JlTGV2ZWxEQi5jcHAgKi87IH07CiAJCTUxNjYwQUI3MTgyOEJCODIwMDA3NENBRCAvKiBJ
REJCYWNraW5nU3RvcmVMZXZlbERCLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTY2MEFCMTE4MjhCQjgyMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQi5oICovOyB9OwogCQk1MTY2MEFCODE4MjhCQjgyMDAwNzRDQUQgLyogSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNjYwQUIyMTgyOEJCODIwMDA3NENBRCAvKiBJREJGYWN0b3J5QmFja2VuZExl
dmVsREIuY3BwICovOyB9OwpAQCAtODMyNiw2ICs4MzI5LDcgQEAKIAkJNTEwMTg0NjgwQjA4NjAy
QTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MDU5REQ5MTgyMEIxNzYwMERGRjlCMSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlRyYW5zYWN0aW9u
QmFja2VuZE9wZXJhdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTA1
OUREQTE4MjBCMTc2MDBERkY5QjEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRP
cGVyYXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMEEzMjZFMTgzMTg0
MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IElEQlNlcnZlckNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEwQjdEQjUxODJEOUY1RDAwOUJGOTU3IC8qIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJUcmFuc2FjdGlv
bkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBCN0RCNjE4MkQ5
RjVEMDA5QkY5NTcgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0
cmVhbUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDExLDYg
Kzg0MTUsOCBAQAogCQk1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIaXN0b3J5SXRlbU1h
Yy5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5SXRlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE2MkM3RjIxMUY3N0VGQTAwNjEyRUZFIC8qIFNjaGVtZVJlZ2lzdHJ5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjaGVtZVJlZ2lzdHJ5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MkM3RjMxMUY3N0VGQjAwNjEyRUZFIC8q
IFNjaGVtZVJlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVt
ZVJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjRFRDQxMTgzMjA4
QzcwMEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNjRFRDQyMTgzMjA4QzcwMEVBOEZGMSAv
KiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTY2MEFCMDE4MjhCQjgyMDAwNzRDQUQgLyogSURCQmFja2luZ1N0b3JlTGV2
ZWxEQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJCYWNraW5n
U3RvcmVMZXZlbERCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2NjBBQjEx
ODI4QkI4MjAwMDc0Q0FEIC8qIElEQkJhY2tpbmdTdG9yZUxldmVsREIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTY2MEFCMjE4MjhCQjgyMDAwNzRDQUQgLyogSURCRmFjdG9y
eUJhY2tlbmRMZXZlbERCLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNTExNyw2ICsxNTEyMyw4IEBACiAJCQkJNTE2NjBBQjMxODI4QkI4MjAwMDc0Q0FEIC8q
IElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5oICovLAogCQkJCTUxNjYwQUI0MTgyOEJCODIwMDA3
NENBRCAvKiBJREJMZXZlbERCQ29kaW5nLmNwcCAqLywKIAkJCQk1MTY2MEFCNTE4MjhCQjgyMDAw
NzRDQUQgLyogSURCTGV2ZWxEQkNvZGluZy5oICovLAorCQkJCTUxNjRFRDQxMTgzMjA4QzcwMEVB
OEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgKi8sCisJCQkJNTE2NEVENDIx
ODMyMDhDNzAwRUE4RkYxIC8qIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGxldmVsZGI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTcw
MDIsNiArMTcwMTAsNyBAQAogCQkJCTUxRDcxOUExMTgxMTA2RTAwMDE2REM1MSAvKiBJREJSZXF1
ZXN0LmNwcCAqLywKIAkJCQk1MUQ3MTlBMjE4MTEwNkUwMDAxNkRDNTEgLyogSURCUmVxdWVzdC5o
ICovLAogCQkJCTUxRDcxOUEzMTgxMTA2RTAwMDE2REM1MSAvKiBJREJSZXF1ZXN0LmlkbCAqLywK
KwkJCQk1MTBBMzI2RTE4MzE4NDMxMDAzQzUzMjYgLyogSURCU2VydmVyQ29ubmVjdGlvbi5oICov
LAogCQkJCTUxRDcxOUE0MTgxMTA2RTAwMDE2REM1MSAvKiBJREJUcmFuc2FjdGlvbi5jcHAgKi8s
CiAJCQkJNTFENzE5QTUxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmggKi8sCiAJ
CQkJNTFENzE5QTYxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmlkbCAqLywKQEAg
LTIxOTU4LDYgKzIxOTY3LDcgQEAKIAkJCQlGRDMxNjA3RjEyQjAyNkY3MDBDMUEzNTkgLyogQXVk
aW9EZXN0aW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRjU0OUUxN0YyNDAyNzAwMTY5
RTA0IC8qIEF1ZGlvRGVzdGluYXRpb25Db25zdW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQz
MTYwQkQxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvRGVzdGluYXRpb25NYWMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxMEEzMjZGMTgzMTg0MzEwMDNDNTMyNiAvKiBJREJTZXJ2ZXJDb25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAwODEyQjAyNjc2MDBDMUEzNTkgLyogQXVkaW9E
ZXN0aW5hdGlvbk5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDgwMTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb0RTUEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q2NDFFQjMxODE4
RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
MzE3NSw2ICsyMzE4NSw3IEBACiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3Bl
Y3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzM0YwNTNFMTIwQjBE
QTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxNjRFRDQ0MTgzMjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0
aW9uTGV2ZWxEQi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUw
IC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRF
Q0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3MDU4NTM0MTdGREU2RDkwMDVGMkJDQiAvKiBKU01lZGlhVHJhY2tDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQyNyw2ICsyNzQzOCw3IEBACiAJCQkJNTEx
RUYyQzQxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCRmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlFMUM2NTcxMjE4MTVGOUREMDAyNTZDREQgLyogSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9u
YXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE0M0JGNTlDMTE0OTI5MjgwMEM2NDNDQSAvKiBS
ZW5kZXJQcm9ncmVzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTY0RUQ0MzE4MzIwOEM3MDBF
QThGRjEgLyogSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUE1NzRGMjQxMzFEQjkzOTAwNDcxQjg4IC8qIFJlbmRlclF1b3RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUI1QjdBMTcwMTdDMTBBQTgwMEU0QUEwQSAvKiBFbGVtZW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlENzBBRDY1NzEzRTEzNDJCMDA1QjUwQjQgLyogUmVuZGVyUmVnaW9u
LmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="239648"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>