<?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>96154</bug_id>
          
          <creation_ts>2012-09-07 16:35:43 -0700</creation_ts>
          <short_desc>[V8] Use a v8::Object rather than a v8::Context to represent the creationContext</short_desc>
          <delta_ts>2012-09-07 18:17:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96147</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715109</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-07 16:35:43 -0700</bug_when>
    <thetext>[V8] Use a v8::Object rather than a v8::Context to represent the creationContext</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715112</commentid>
    <comment_count>1</comment_count>
      <attachid>162902</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-07 16:37:14 -0700</bug_when>
    <thetext>Created attachment 162902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715118</commentid>
    <comment_count>2</comment_count>
      <attachid>162902</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-09-07 16:44:32 -0700</bug_when>
    <thetext>Comment on attachment 162902
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715191</commentid>
    <comment_count>3</comment_count>
      <attachid>162902</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-07 18:17:22 -0700</bug_when>
    <thetext>Comment on attachment 162902
Patch

Clearing flags on attachment: 162902

Committed r127946: &lt;http://trac.webkit.org/changeset/127946&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715192</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-07 18:17:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162902</attachid>
            <date>2012-09-07 16:37:14 -0700</date>
            <delta_ts>2012-09-07 18:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96154-20120907163653.patch</filename>
            <type>text/plain</type>
            <size>190923</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ZmNhM2IzZGI5ZTQ0
ZjMwZDllMzRlOTljNWNmOTZiMmRiZDg1ZS4uODk5YzZhMjAwNGY1ZWEzODVkOGExMWIxODkyNzcw
ZjMzOWI1YTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5NiBAQAorMjAxMi0wOS0wNyAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBVc2UgYSB2ODo6
T2JqZWN0IHJhdGhlciB0aGFuIGEgdjg6OkNvbnRleHQgdG8gcmVwcmVzZW50IHRoZSBjcmVhdGlv
bkNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk2MTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpcyBhIG1lY2hhbmljYWwgc2VhcmNoLWFuZC1yZXBsYWNlLiBVc2luZyBhIHY4
OjpPYmplY3QKKyAgICAgICAgcmF0aGVyIHRoYW4gYSB2ODo6Q29udGV4dCBsZXRzIHVzIGRlbGF5
IHRoZSBjYWxsIHRvIENyZWF0aW9uQ29udGV4dCgpCisgICAgICAgIHVudGlsIHdlIGFjdHVhbGx5
IG5lZWQgdG8gY2FsbCBpdC4gVGhpcyBzaG91bGQgbm90IGFmZmVjdCBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlTmFtZWRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRl
SW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAg
ICAgIChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisgICAgICAgIChOYXRpdmVUb0pTVmFs
dWUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29DYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2
NEFycmF5Ojp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
RmxvYXQ2NEFycmF5Lmg6CisgICAgICAgIChWOEZsb2F0NjRBcnJheSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEZsb2F0NjRBcnJheTo6d3JhcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9N
T2JqZWN0Ojp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoVjhUZXN0QWN0aXZlRE9NT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcCk6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q2FsbGJhY2s6OmNhbGxi
YWNrV2l0aENsYXNzMVBhcmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdENhbGxiYWNrOjpj
YWxsYmFja1dpdGhDbGFzczJQYXJhbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDYWxsYmFj
azo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDYWxs
YmFjazo6Y2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3MpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAo
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXI6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6Cisg
ICAgICAgIChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6Oml0ZW1DYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6d3JhcFNsb3cpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAg
ICAoVjhUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJn
ZXQ6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RFeGNlcHRpb246OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChWOFRlc3RFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBs
ZW1lbnRhbE5vZGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0SW50ZXJmYWNlOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0SW50ZXJmYWNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6d3JhcCk6CisgICAgICAgIChXZWJD
b3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6d3JhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwU2xvdyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuaDoKKyAgICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcCk6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjp3cmFwU2xvdyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVzdE5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6d3JhcCk6CisgICAgICAgIChXZWJDb3JlOjp0
b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRy
QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpY
TUxPYmpBdHRyQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjYWNoZWRB
dHRyaWJ1dGUxQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlT2JqQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmdldFNWR0RvY3VtZW50Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50RnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RnVu
Y3Rpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OndyYXBTbG93KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmg6CisgICAgICAg
IChWOFRlc3RPYmopOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjp3cmFwKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp3cmFwKToKKyAgICAgICAgKFdlYkNvcmU6
OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SURC
Q3Vyc29yV2l0aFZhbHVlOjp2YWx1ZUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhWYWx1ZVRyYWl0czo6YXJyYXlWOFZhbHVl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNv
cmU6OmdldFY4T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5hbWVkUHJvcGVydHlPZkNv
bGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdGlvbk5hbWVkUHJvcGVydHlHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW5kZXhlZFByb3BlcnR5T2ZDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3Rpb25JbmRleGVkUHJvcGVydHlHZXR0ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCk6CisgICAgICAg
IChWOERPTVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VGhyb3dFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKFdlYkNv
cmU6OlY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q1NTUnVsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDU1NWYWx1ZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOE9iamVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpWOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c3Ryb2tl
U3R5bGVBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6ZmlsbFN0eWxlQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhDb25z
b2xlOjptZW1vcnlBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93Ojpv
cGVuQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0
eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOERvY3VtZW50OjpldmFsdWF0ZUNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4RG9jdW1lbnQ6OmdldENTU0NhbnZhc0NvbnRleHRDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmNyZWF0ZVRv
dWNoTGlzdENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVu
dExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmxvY2F0
aW9uQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEV2ZW50OjpkYXRhVHJhbnNmZXJBY2Nlc3NvckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpWOEV2ZW50OjpjbGlwYm9hcmREYXRhQWNjZXNzb3JHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Rmls
ZVJlYWRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEZpbGVSZWFkZXI6OnJlc3Vs
dEFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxs
Q29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxs
Q29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEhU
TUxBbGxDb2xsZWN0aW9uOjppdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
QWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhI
VE1MQWxsQ29sbGVjdGlvbjo6Y2FsbEFzRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpnZXROYW1lZEl0ZW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTENv
bGxlY3Rpb246Om5hbWVkUHJvcGVydHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
Q29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpnZXROYW1lZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjphbGxBY2Nlc3NvckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
RWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTEVsZW1lbnQ6Oml0ZW1WYWx1ZUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhIVE1MRm9ybUVsZW1lbnQ6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcik6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxGcmFtZVNldEVsZW1lbnQ6Om5hbWVkUHJv
cGVydHlHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MTGlua0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MTGlua0Vs
ZW1lbnQ6OnNpemVzQWNjZXNzb3JHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxPdXRwdXRFbGVtZW50OjpodG1sRm9yQWNjZXNzb3JHZXR0ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTFNlbGVjdEVsZW1lbnQ6OmluZGV4ZWRQcm9w
ZXJ0eUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOElEQktleUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25D
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhNZXNzYWdlRXZlbnQ6OmRhdGFBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpWOE1lc3NhZ2VFdmVudDo6cG9ydHNBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9k
ZU1hcEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5hbWVkTm9kZU1hcDo6aW5kZXhl
ZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4TmFtZWROb2RlTWFwOjpuYW1l
ZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTbG93KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5v
ZGVMaXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhO
b3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUhUTUxOb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlTm90aWZpY2F0aW9uQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVyZm9ybWFuY2U6Om1lbW9yeUFjY2Vzc29yR2V0
dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUVudHJ5Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFBvcFN0YXRlRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQ
b3BTdGF0ZUV2ZW50OjpzdGF0ZUFjY2Vzc29yR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWxDYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFN0eWxlU2hlZXRM
aXN0OjpuYW1lZFByb3BlcnR5R2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhUcmFja0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VHJhY2tFdmVudDo6
dHJhY2tBY2Nlc3NvckdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnNDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRl
clBhcmFtZXRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VBY2Nlc3NvckdldHRl
cik6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFdyYXBwZXJG
dW5jdGlvbnMpOgorICAgICAgICAocHJpbnRXcmFwcGVyRmFjdG9yeUNwcEZpbGUpOgorICAgICAg
ICAocHJpbnRXcmFwcGVyRmFjdG9yeUhlYWRlckZpbGUpOgorCiAyMDEyLTA5LTA3ICBTdGVwaGVu
IENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFjIGJ1aWxkIGZp
eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KaW5kZXggNTZiNDYxMTZjYWM1ZWUzOTUwYjZlOWIxNzBhZThhOGU4NzMzMTk4My4uZDVj
MzQzN2FhZTYzYmUzZGVmYTFjZWZiOTg3NDc3MWE4YzA3NWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTM4NCw3ICsz
ODQsNyBAQCBFTkQKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0
aXZlVHlwZX0qPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBw
ZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0g
MCR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KTsKKyAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcCgke25hdGl2ZVR5cGV9Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiA9IDAke2ZvcmNlTmV3T2JqZWN0UGFyYW1ldGVyfSk7CiAgICAgc3RhdGljIHZvaWQgZGVyZWZP
YmplY3Qodm9pZCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3Rv
cmUqLCB2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogICAgIHN0YXRpYyBXcmFw
cGVyVHlwZUluZm8gaW5mbzsKQEAgLTQwMiw3ICs0MDIsNyBAQCBFTkQKICAgICBpZiAoJGltcGxD
bGFzc05hbWUgZXEgIkhUTUxEb2N1bWVudCIpIHsKICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
IDw8RU5EKTsKICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiB3cmFwSW5TaGFkb3dPYmpl
Y3Qodjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdyYXBwZXIsIE5vZGUqIGltcGwpOwotICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkUHJvcGVydHkoSFRNTERvY3VtZW50KiBodG1s
RG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZ2V0TmFtZWRQcm9wZXJ0eShIVE1MRG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiBrZXksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSopOwogRU5ECiAgICAgfQogCkBAIC00NzcsMTMgKzQ3NywxMyBAQCBF
TkQKICAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0
aXZlVHlwZSk7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdygke3dyYXBTbG93QXJndW1l
bnRUeXBlfSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KCR7d3Jh
cFNsb3dBcmd1bWVudFR5cGV9LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKIEVORAogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRp
dmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSR7Zm9yY2VOZXdPYmplY3RJbnB1dH0pCit2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+ICR7Y2xhc3NOYW1lfTo6d3JhcCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUke2Zv
cmNlTmV3T2JqZWN0SW5wdXR9KQogewogRU5ECiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBpZiAoIWZvcmNlTmV3T2JqZWN0KSB7XG4iKSBpZiBJc0RPTU5vZGVUeXBlKCRpbnRlcmZhY2VO
YW1lKTsKQEAgLTUwNSw3ICs1MDUsNyBAQCBFTkQKICAgICB9IGVsc2lmICghKCRkYXRhTm9kZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVRvSlNPYmplY3QifSBvciAkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbVRvSlNPYmplY3QifSkpIHsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRp
b25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwJHtmb3JjZU5ld09iamVjdFBhcmFtZXRlcn0pCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoJHtuYXRpdmVUeXBlfSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gMCR7Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KQogewogICAgIGlmICghaW1wbCkK
ICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAgLTUxNSwxNCArNTE1
LDE0IEBAIEVORAogICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIG5lICdOb2RlJykgewogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogPSAwJHtmb3Jj
ZU5ld09iamVjdFBhcmFtZXRlcn0pOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJHtuYXRp
dmVUeXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwJHtmb3JjZU5ld09iamVjdFBhcmFt
ZXRlcn0pOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
PDxFTkQpOwogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSosIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqLCBib29sKTsKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiwgYm9vbCk7CiAKLWlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
cmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSA9IDAsIGJvb2wgZm9yY2VOZXdPYmplY3QgPSBmYWxzZSkKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwLCBib29sIGZvcmNlTmV3T2JqZWN0ID0gZmFsc2UpCiB7CiAgICAgaWYgKFVOTElL
RUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAg
LTUzNyw3ICs1MzcsNyBAQCBFTkQKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8
PEVORCk7Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgJHtu
YXRpdmVUeXBlfSA+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4
dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCR7
Zm9yY2VOZXdPYmplY3RQYXJhbWV0ZXJ9KQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlwZX0gPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUgPSAwJHtmb3JjZU5ld09iamVjdFBhcmFtZXRlcn0pCiB7CiAgICAgcmV0dXJu
IHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlJHtmb3JjZU5ld09iamVj
dENhbGx9KTsKIH0KQEAgLTEwMDcsNyArMTAwNyw3IEBAIEVORAogICAgICAgICBteSAkZG9tTWFw
RnVuY3Rpb24gPSBHZXREb21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAi
aW5mby5HZXRJc29sYXRlKCkiKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/ICR7ZG9tTWFw
RnVuY3Rpb259LmdldChyZXN1bHQuZ2V0KCkpIDogdjhVbmRlZmluZWQoKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkge1xu
Iik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHdyYXBwZXIgPSB0
b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8u
R2V0SXNvbGF0ZSgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKVxuIik7CiAgICAgICAgIGlmICgkZGF0YU5vZGUtPm5h
bWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFt
ZS5oIik7CkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBFTkQKICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIlY4JGF0dHJUeXBlLmgiKTsKICAgICAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdl
bmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhdHRyVHlwZSk7CiAgICAgICAgICMg
Q29udmVydCBmcm9tIGFic3RyYWN0IFNWR1Byb3BlcnR5IHRvIHJlYWwgdHlwZSwgc28gdGhlIHJp
Z2h0IHRvSlMoKSBtZXRob2QgY2FuIGJlIGludm9rZWQuCi0gICAgICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8JHN2Z05hdGl2ZVR5cGUqPigk
cmVzdWx0KSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0
ZSgpKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0
b1Y4KHN0YXRpY19jYXN0PCRzdmdOYXRpdmVUeXBlKj4oJHJlc3VsdCksIGluZm8uSG9sZGVyKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXR0clR5cGUpIGFuZCBub3QgJGltcGxDbGFzc05hbWUg
PX4gL0xpc3QkLykgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkYXR0clR5cGUuaCIp
OwogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiKTsKQEAg
LTEwNDksMTkgKzEwNDksMTkgQEAgRU5ECiAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPX4g
cy9tYXRyaXgvc3ZnTWF0cml4LzsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCR7
dGVhck9mZlR5cGV9OjpjcmVhdGUod3JhcHBlciwgJHJlc3VsdCwgJHVwZGF0ZU1ldGhvZCkpLCBp
bmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9W
OChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKHdyYXBwZXIsICRyZXN1bHQsICR1
cGRhdGVNZXRob2QpKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJT
VkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIpOwogICAgICAgICAgICAgICAgICR0ZWFyT2ZmVHlw
ZSA9fiBzL1NWR1Byb3BlcnR5VGVhck9mZjwvU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmPCRpbXBs
Q2xhc3NOYW1lLCAvOwogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6Y3JlYXRlKGltcCwg
JHJlc3VsdCwgJHVwZGF0ZU1ldGhvZCkpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQo
KSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigke3RlYXJPZmZUeXBlfTo6
Y3JlYXRlKGltcCwgJHJlc3VsdCwgJHVwZGF0ZU1ldGhvZCkpLCBpbmZvLkhvbGRlcigpLCBpbmZv
LkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJHRl
YXJPZmZUeXBlID1+IC9TVkdTdGF0aWNMaXN0UHJvcGVydHlUZWFyT2ZmLykgewotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cigk
e3RlYXJPZmZUeXBlfTo6Y3JlYXRlKGltcCwgJHJlc3VsdCkpLCBpbmZvLkhvbGRlcigpLT5DcmVh
dGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCR7dGVhck9m
ZlR5cGV9OjpjcmVhdGUoaW1wLCAkcmVzdWx0KSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkdGVhck9mZlR5cGUgPX4gL1NWRyhQb2lu
dHxQYXRoU2VnKUxpc3QvKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCRyZXN1bHQpLCBpbmZvLkhvbGRlcigpLT5DcmVh
dGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKCRyZXN1bHQp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgo
V1RGOjpnZXRQdHIoJHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSgkcmVzdWx0KSksIGluZm8uSG9sZGVy
KCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIo
JHt0ZWFyT2ZmVHlwZX06OmNyZWF0ZSgkcmVzdWx0KSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICB9CiAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlIGVxICJNZXNzYWdlUG9ydEFycmF5IikgewogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiTWVzc2FnZVBvcnQuaCIpOwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgRU5ECiAgICAg
TWVzc2FnZVBvcnRBcnJheSBwb3J0c0NvcHkoKnBvcnRzKTsKICAgICB2ODo6TG9jYWw8djg6OkFy
cmF5PiBwb3J0QXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhwb3J0c0NvcHkuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBvcnRzQ29weS5zaXplKCk7ICsraSkKLSAgICAgICAgcG9y
dEFycmF5LT5TZXQodjhJbnRlZ2VyKGksIGluZm8uR2V0SXNvbGF0ZSgpKSwgdG9WOChwb3J0c0Nv
cHlbaV0uZ2V0KCksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElz
b2xhdGUoKSkpOworICAgICAgICBwb3J0QXJyYXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJ
c29sYXRlKCkpLCB0b1Y4KHBvcnRzQ29weVtpXS5nZXQoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpKTsKICAgICByZXR1cm4gcG9ydEFycmF5OwogRU5ECiAgICAgfSBlbHNlIHsK
QEAgLTIwMzUsNyArMjAzNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2lt
cGxDbGFzc05hbWV9Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAgICAvLyBN
YWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGFkZGVkIHRvIHRoZSBET00gTm9kZSBtYXAuIE90aGVy
d2lzZSwgdGhlICR7aW1wbENsYXNzTmFtZX0gaW5zdGFuY2UKICAgICAvLyBtYXkgZW5kIHVwIGJl
aW5nIHRoZSBvbmx5IG5vZGUgaW4gdGhlIG1hcCBhbmQgZ2V0IGdhcmJhZ2UtY29sbGVjdGVkIHBy
ZW1hdHVyZWx5LgotICAgIHRvVjgoZG9jdW1lbnQsIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29u
dGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgdG9WOChkb2N1bWVudCwgYXJncy5Ib2xk
ZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogCiBFTkQKIApAQCAtMjYyMyw3ICsyNjIzLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVHlwZWRBcnJheSJ9KSB7CiAgICAgICAgIG15ICR2aWV3VHlwZSA9IEdldFR5
cGVOYW1lT2ZFeHRlcm5hbFR5cGVkQXJyYXkoJGRhdGFOb2RlKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCRpbXBsQ2xhc3NO
YW1lKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoJGltcGxDbGFzc05h
bWUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxX
aXRoQ2hlY2soaXNvbGF0ZSk7CkBAIC0zMzQ4LDcgKzMzNDgsNyBAQCBzdWIgR2VuZXJhdGVUb1Y4
Q29udmVydGVycwogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXBTbG93KCR7d3JhcFNsb3dBcmd1bWVudFR5
cGV9IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+ICR7Y2xhc3NOYW1lfTo6d3Jh
cFNsb3coJHt3cmFwU2xvd0FyZ3VtZW50VHlwZX0gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKIEVORApAQCAtMzM5NywxMCArMzM5NywxMCBAQCBFTkQK
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dDsKLSAgICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3Jl
YXRpb25Db250ZXh0ICE9IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpIHsKKyAgICBpZiAoIWNy
ZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRl
eHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7CiAgICAgICAgIC8vIEZvciBwZXJm
b3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgY29udGV4dAogICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29udGV4dCB0aGF0
IHdlIGFyZSBhYm91dCB0byBlbnRlci4KLSAgICAgICAgY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6
Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQpOworICAgICAgICBjb250ZXh0ID0gdjg6Okxv
Y2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkp
OwogICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0eSgpKTsKICAgICAgICAgY29udGV4dC0+
RW50ZXIoKTsKICAgICB9CkBAIC0zNTgxLDcgKzM1ODEsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlv
bkNhbGxTdHJpbmcoKQogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjgkcmV0dXJuVHlwZS5o
Iik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIpOwog
ICAgICAgICBteSAkc3ZnTmF0aXZlVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYoJHJldHVyblR5cGUpOwotICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAi
cmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoJHtzdmdOYXRpdmVUeXBlfTo6Y3JlYXRlKCRyZXR1cm4p
KSwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTtc
biI7CisgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICJyZXR1cm4gdG9WOChXVEY6OmdldFB0
cigke3N2Z05hdGl2ZVR5cGV9OjpjcmVhdGUoJHJldHVybikpLCBhcmdzLkhvbGRlcigpLCBhcmdz
LkdldElzb2xhdGUoKSk7XG4iOwogICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICB9CiAKQEAg
LTQwODUsMTEgKzQwODUsMTEgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogCiAgICAgIyBzcGVjaWFs
IGNhc2UgZm9yIG5vbi1ET00gbm9kZSBpbnRlcmZhY2VzCiAgICAgaWYgKElzRE9NTm9kZVR5cGUo
JHR5cGUpKSB7Ci0gICAgICAgIHJldHVybiAidG9WOCgke3ZhbHVlfSwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4oKSIgLiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJldHVybk5l
d09iamVjdCJ9ID8gIiRnZXRJc29sYXRlQXJnLCB0cnVlKSIgOiAiJGdldElzb2xhdGVBcmcpIik7
CisgICAgICAgIHJldHVybiAidG9WOCgke3ZhbHVlfSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
IiAuICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmV0dXJuTmV3T2JqZWN0In0g
PyAiJGdldElzb2xhdGVBcmcsIHRydWUpIiA6ICIkZ2V0SXNvbGF0ZUFyZykiKTsKICAgICB9CiAK
ICAgICBpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAgICAgICByZXR1cm4gIlY4RE9N
V3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCgkdmFsdWUsIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KCkkZ2V0SXNvbGF0ZUFyZykiOworICAgICAgICByZXR1cm4gIlY4RE9NV3Jh
cHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdCgkdmFsdWUsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSRnZXRJc29sYXRlQXJnKSI7CiAgICAgfQogCiAgICAgaWYgKCR0eXBlIGVxICJF
dmVudExpc3RlbmVyIikgewpAQCAtNDEwNiw3ICs0MTA2LDcgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1
ZQogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJ3dGYvUmVmUHRyLmgiKTsKICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygid3RmL0dldFB0ci5oIik7CiAKLSAgICByZXR1cm4gInRvVjgoJHZhbHVlLCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PigpJGdldElzb2xhdGVBcmcpIjsKKyAgICByZXR1cm4gInRvVjgo
JHZhbHVlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkkZ2V0SXNvbGF0ZUFyZykiOwogfQogCiBz
dWIgUmV0dXJuTmF0aXZlVG9KU1ZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBkM2U1Zjcw
ODQyN2U1NzE2YjczZTVjYWJkYjNiOTNlN2U3Y2ViZWUwLi41Nzk4OTFhMTAzNjI0M2M2MmMzZmVj
NTg2OTAwMjA2ZDZkODM0OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgRmxvYXQ2NEFycmF5KiBpbXAgPSBWOEZsb2F0NjRB
cnJheTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgRVhDRVBUSU9OX0JMT0NLKEZsb2F0
MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBWOEZsb2F0MzJBcnJh
eTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChNQVlCRV9NSVNTSU5HX1BB
UkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpKSkgOiAwKTsKLSAgICByZXR1cm4g
dG9WOChpbXAtPmZvbyhhcnJheSksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChpbXAtPmZvbyhhcnJheSksIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHNldENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC02
Nyw3ICs2Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2V0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAogfSAvLyBuYW1lc3BhY2UgRmxvYXQ2NEFycmF5VjhJ
bnRlcm5hbAogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGws
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNv
bGF0ZSk7CkBAIC0xNDcsMTIgKzE0NywyMyBAQCBib29sIFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB9CiAKIAotdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOEZsb2F0NjRBcnJheTo6d3JhcFNsb3coUGFzc1JlZlB0cjxGbG9hdDY0QXJyYXk+
IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFycmF5Ojp3cmFw
U2xvdyhQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dm9pZCo+KHN0
YXRpY19jYXN0PEFycmF5QnVmZmVyVmlldyo+KGltcGwuZ2V0KCkpKSA9PSBzdGF0aWNfY2FzdDx2
b2lkKj4oaW1wbC5nZXQoKSkpOwogICAgIEZyYW1lKiBmcmFtZSA9IDA7CisKKyAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1w
dHkoKSAmJiBjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0
OjpHZXRDdXJyZW50KCkpIHsKKyAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0
aGUgY29udGV4dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAg
IC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVu
dGVyLgorICAgICAgICBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0
aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQu
SXNFbXB0eSgpKTsKKyAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKKyAgICB9CiAgICAgd3JhcHBl
ciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChmcmFtZSwgJmluZm8sIGltcGwu
Z2V0KCkpOworICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQtPkV4
aXQoKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxl
ID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1wbCwgd3JhcHBlciwg
aXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCmluZGV4IDNmNjYwOTU1ODk5MjFhNjg0MTdlZTllZGQ2
ODA0MDhkZDAwNWIxZDYuLmMwZmU5NzIwODVlYjgxZmUzMzIzMmQ4MjkyYTJjZTk5ZWI0NzFiNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZs
b2F0NjRBcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOEZsb2F0NjRBcnJheS5oCkBAIC00MiwxNyArNDIsMTcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RmxvYXQ2NEFycmF5Kj4ob2JqZWN0LT5HZXRQ
b2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKICAgICB9
Ci0gICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRmxvYXQ2NEFy
cmF5Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgaW5saW5lIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRmxvYXQ2NEFycmF5Kiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJ
c29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBz
dGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPEZsb2F0
NjRBcnJheT4sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNz
UmVmUHRyPEZsb2F0NjRBcnJheT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZsb2F0
NjRBcnJheTo6d3JhcChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4RmxvYXQ2NEFycmF5Ojp3cmFwKEZsb2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewog
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAo
aXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAt
NjAsOCArNjAsOCBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFycmF5Ojp3cmFw
KEZsb2F0NjRBcnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6QwogICAgIHJldHVybiBWOEZsb2F0
NjRBcnJheTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5Kiwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6
Oklzb2xhdGUqID0gMCk7Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1Jl
ZlB0cjwgRmxvYXQ2NEFycmF5ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRp
b25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5Kiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHY4OjpJc29sYXRlKiA9IDApOworaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFBhc3NSZWZQdHI8IEZsb2F0NjRBcnJheSA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSA9IDApCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
YjMwZjFkODBiNjdmMzEyZjMxMDk4ZTU3NWM5YTQ5YTMyZDYxZWExZC4uYzI3MTEyMGU5MDhmZjc4
NmE3NjAxMGY1NTAzMWJkYWRmNzQ2OTlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBib29sIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogfQogCiAKLXY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFwU2xvdyhQYXNzUmVmUHRyPFRl
c3RBY3RpdmVET01PYmplY3Q+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0QWN0aXZlRE9NT2Jq
ZWN0PiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwog
ICAgIEZyYW1lKiBmcmFtZSA9IDA7CkBAIC0xODUsMjAgKzE4NSwxNSBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0
QWN0aXZlRE9NTwogICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPmluaXRp
YWxpemVJZk5lZWRlZCgpOwogICAgIH0KIAotICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4
dCBhbmQgY3JlYXRlIHRoZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KICAgICB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PiBjb250ZXh0OwotICAgIGlmIChmcmFtZSkgewotICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpDb250ZXh0PiB1bmRlcmx5aW5nSGFuZGxlID0gZnJhbWUtPnNjcmlwdCgpLT51bnNh
ZmVIYW5kbGVUb0N1cnJlbnRXb3JsZENvbnRleHQoKTsKLSAgICAgICAgaWYgKHY4OjpDb250ZXh0
OjpHZXRDdXJyZW50KCkgIT0gdW5kZXJseWluZ0hhbmRsZSkgewotICAgICAgICAgICAgLy8gRm9y
IHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkg
cnVubmluZyBjb250ZXh0Ci0gICAgICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29u
dGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KLSAgICAgICAgICAgIGNvbnRleHQgPSB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcodW5kZXJseWluZ0hhbmRsZSk7Ci0gICAgICAgICAg
ICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRleHQtPkVudGVy
KCk7Ci0gICAgICAgIH0KKyAgICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3Jl
YXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpKSB7CisgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQg
b25seSBpZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZm
ZXJlbnQgZnJvbSB0aGUgY29udGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAg
ICAgY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQt
PkNyZWF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7
CisgICAgICAgIGNvbnRleHQtPkVudGVyKCk7CiAgICAgfQogICAgIHdyYXBwZXIgPSBWOERPTVdy
YXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoZnJhbWUsICZpbmZvLCBpbXBsLmdldCgpKTsKLSAg
ICAvLyBFeGl0IHRoZSBub2RlJ3MgY29udGV4dCBpZiBpdCB3YXMgZW50ZXJlZC4KICAgICBpZiAo
IWNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAgaWYgKFVO
TElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApp
bmRleCAxYTYzMDM5MTFkMTUyMzQ4MTI5ZTcxZWM4M2QyNDgwNmVjODU2MTgzLi4yNTgwM2E0NTE5
MjYxOWJmYzg0NzRjNTViMjVhNWExYWFlZDY2Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFRlc3RBY3RpdmVET01PYmplY3QqPihvYmplY3QtPkdldFBvaW50ZXJG
cm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBp
bmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0QWN0aXZlRE9NT2Jq
ZWN0Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgaW5saW5lIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEFjdGl2ZURPTU9iamVjdCosIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
LCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgdm9pZCBkZXJlZk9iamVjdCh2b2lkKik7
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSosIHZvaWQqLCB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBp
bmZvOwpAQCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBuYW1lZFNl
Y3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IGtleSwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGRhdGEpOwogICAg
IHN0YXRpYyBib29sIGluZGV4ZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBo
b3N0LCB1aW50MzJfdCBpbmRleCwgdjg6OkFjY2Vzc1R5cGUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IGRhdGEpOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
U2xvdyhQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01PYmplY3Q+LCB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0QWN0aXZlRE9NT2JqZWN0Piwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9
OwogCi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcChU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXAoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmpl
Y3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQpAQCAtNjAsMTMgKzYwLDEzIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZl
RE9NT2JqZWN0Ojp3cmFwKFRlc3RBY3RpdmVET01PYmplY3QqIGltcGwsIHY4CiAgICAgcmV0dXJu
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3Rp
dmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4
dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkK
K2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0QWN0aXZlRE9NT2JqZWN0KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1w
bCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4g
VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0
ZSk7CiB9Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVz
dEFjdGl2ZURPTU9iamVjdCA+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9u
Q29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0
QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0g
MCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdENhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDYWxsYmFjay5jcHAKaW5kZXggMGQyMDYxN2I0ZmQ0ZDA3YTc1Mzc4M2Fl
NTYxYTEzOTdkMDE1YTBjMS4uYjhiNTEwNzE2MDU2NzI4Nzk0ODVkODc3YThkZTZjOWIwMTI2OGQ5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdENhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Q2FsbGJhY2suY3BwCkBAIC04Niw3ICs4Niw3IEBAIGJvb2wgVjhUZXN0Q2Fs
bGJhY2s6OmNhbGxiYWNrV2l0aENsYXNzMVBhcmFtKENsYXNzMSogY2xhc3MxUGFyYW0pCiAKICAg
ICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKIAotICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjbGFzczFQYXJhbUhhbmRsZSA9IHRvVjgoY2xhc3MxUGFyYW0sIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzczFQYXJh
bUhhbmRsZSA9IHRvVjgoY2xhc3MxUGFyYW0sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSk7CiAg
ICAgaWYgKGNsYXNzMVBhcmFtSGFuZGxlLklzRW1wdHkoKSkgewogICAgICAgICBpZiAoIWlzU2Ny
aXB0Q29udHJvbGxlclRlcm1pbmF0aW5nKCkpCiAgICAgICAgICAgICBDUkFTSCgpOwpAQCAtMTE0
LDcgKzExNCw3IEBAIGJvb2wgVjhUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aENsYXNzMlBhcmFt
KENsYXNzMiogY2xhc3MyUGFyYW0sIGNvbnN0IFN0cmluZyYKIAogICAgIHY4OjpDb250ZXh0OjpT
Y29wZSBzY29wZSh2OENvbnRleHQpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNz
MlBhcmFtSGFuZGxlID0gdG9WOChjbGFzczJQYXJhbSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4o
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzMlBhcmFtSGFuZGxlID0gdG9WOChj
bGFzczJQYXJhbSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKTsKICAgICBpZiAoY2xhc3MyUGFy
YW1IYW5kbGUuSXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghaXNTY3JpcHRDb250cm9sbGVyVGVy
bWluYXRpbmcoKSkKICAgICAgICAgICAgIENSQVNIKCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgYm9v
bCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoU3RyaW5nTGlzdChSZWZQdHI8RE9NU3RyaW5n
TGlzdD4gbGlzdFBhcmFtKQogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4
dCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbGlzdFBhcmFtSGFuZGxlID0gdG9WOChs
aXN0UGFyYW0sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCkpOworICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBsaXN0UGFyYW1IYW5kbGUgPSB0b1Y4KGxpc3RQYXJhbSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpKTsKICAgICBpZiAobGlzdFBhcmFtSGFuZGxlLklzRW1wdHkoKSkgewogICAgICAg
ICBpZiAoIWlzU2NyaXB0Q29udHJvbGxlclRlcm1pbmF0aW5nKCkpCiAgICAgICAgICAgICBDUkFT
SCgpOwpAQCAtMjA3LDEzICsyMDcsMTMgQEAgYm9vbCBWOFRlc3RDYWxsYmFjazo6Y2FsbGJhY2tS
ZXF1aXJlc1RoaXNUb1Bhc3MoQ2xhc3M4KiBjbGFzczhQYXJhbSwgVGhpc0NsYXNzKgogCiAgICAg
djg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY2xhc3M4UGFyYW1IYW5kbGUgPSB0b1Y4KGNsYXNzOFBhcmFtLCB2ODo6SGFuZGxl
PHY4OjpDb250ZXh0PigpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3M4UGFyYW1I
YW5kbGUgPSB0b1Y4KGNsYXNzOFBhcmFtLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpOwogICAg
IGlmIChjbGFzczhQYXJhbUhhbmRsZS5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFpc1Njcmlw
dENvbnRyb2xsZXJUZXJtaW5hdGluZygpKQogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aGlzQ2xhc3NQ
YXJhbUhhbmRsZSA9IHRvVjgodGhpc0NsYXNzUGFyYW0sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0aGlzQ2xhc3NQYXJhbUhhbmRsZSA9IHRv
VjgodGhpc0NsYXNzUGFyYW0sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSk7CiAgICAgaWYgKHRo
aXNDbGFzc1BhcmFtSGFuZGxlLklzRW1wdHkoKSkgewogICAgICAgICBpZiAoIWlzU2NyaXB0Q29u
dHJvbGxlclRlcm1pbmF0aW5nKCkpCiAgICAgICAgICAgICBDUkFTSCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggMDEzNzZlNmZjMzBhODg5YmIwOGI2MzY1ZmEy
N2RiYjU0MzQ1ZTUxMS4uMWZkNmUyN2UxNDJkNTM3Nzc4MTkxMjI2ZGJkZDk4ZmRlM2Q0NTQ2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xMTAsMTEgKzExMCwy
MiBAQCBib29sIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUpCiB9CiAKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RD
dXN0b21OYW1lZEdldHRlcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4gaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKICAgICBGcmFtZSog
ZnJhbWUgPSAwOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKKyAgICBp
ZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25Db250ZXh0LT5DcmVhdGlv
bkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7CisgICAgICAgIC8vIEZv
ciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3VycmVudGx5
IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29udGV4
dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAgICAgY29udGV4dCA9IHY4OjpMb2Nh
bDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpKTsK
KyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIGNvbnRleHQtPkVu
dGVyKCk7CisgICAgfQogICAgIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhP
YmplY3QoZnJhbWUsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQuSXNFbXB0
eSgpKQorICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIu
SXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuaAppbmRleCA3Y2E1NjllOTdmZWNiNzYxN2NjNDYzMDM5MTI2Mzc5YWYyNjUwZGMz
Li40NzM4NThmMmVmZmMxMGE4N2VhNzAyYzM1Mzc0ZTgwOTFlZWQxOWE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNDEsMTcgKzQxLDE3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RDdXN0b21OYW1lZEdldHRlcio+
KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdElu
ZGV4KSk7CiAgICAgfQotICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwKFRlc3RDdXN0b21OYW1lZEdldHRlciosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiA9IDAp
OworICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RDdXN0
b21OYW1lZEdldHRlciosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMg
dm9pZCBkZXJlZk9iamVjdCh2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRET01XcmFwcGVy
KERPTURhdGFTdG9yZSosIHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAgICAg
c3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4sIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RD
dXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
U2xvdyhQYXNzUmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6d3JhcChUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEN1c3RvbU5h
bWVkR2V0dGVyOjp3cmFwKFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNv
bGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNTks
MTMgKzU5LDEzIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXI6OndyYXAoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsCiAgICAgcmV0dXJuIFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUp
OwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1wbCkK
ICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4gVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRl
KTsKIH0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlv
bkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVz
dEN1c3RvbU5hbWVkR2V0dGVyID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGY1Mzkx
MTUwZDJmYTFjMjRjMTE2ZWU1OGU1NzFiNjRiZDI4MGVjOTMuLmIyMGYxNWFkNzRlZTNlMzYzODRl
ZDI3NTdiNDZkZTg4MjUyMDdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTE0NywxMSArMTQ3LDIyIEBAIGJvb2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogfQogCiAKLXY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0RXZlbnRDb25z
dHJ1Y3Rvcj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
cjsKICAgICBGcmFtZSogZnJhbWUgPSAwOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4g
Y29udGV4dDsKKyAgICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25D
b250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7
CisgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBp
ZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZmZXJlbnQg
ZnJvbSB0aGUgY29udGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAgICAgY29u
dGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQtPkNyZWF0
aW9uQ29udGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAg
ICAgIGNvbnRleHQtPkVudGVyKCk7CisgICAgfQogICAgIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6
Omluc3RhbnRpYXRlVjhPYmplY3QoZnJhbWUsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpZiAo
IWNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAgaWYgKFVO
TElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6
c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggN2M1M2Y4OGZiOWM1ZTYxNmRhM2YzMTAxNTEz
NDBmMjYyY2QyNDM2YS4uNjkyNmNlYmQ0YmQ5OTNjNjcyYjdiZDU2MWFjYWI0NWUxMzlkYWVjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC00MiwxNyArNDIsMTcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEV2ZW50Q29u
c3RydWN0b3IqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBw
ZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcChUZXN0RXZlbnRDb25zdHJ1Y3RvciosIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29s
YXRlKiA9IDApOworICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
KFRlc3RFdmVudENvbnN0cnVjdG9yKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAg
IHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdERP
TVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsK
ICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBw
ZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RFdmVudENvbnN0cnVjdG9yPiwg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwor
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVz
dEV2ZW50Q29uc3RydWN0b3I+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4
dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6d3JhcChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcChUZXN0RXZl
bnRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNjAsMTMgKzYwLDEzIEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcChUZXN0RXZlbnRDb25zdHJ1
Y3RvciogaW1wbCwKICAgICByZXR1cm4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3co
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSA9IDApCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENo
ZWNrKGlzb2xhdGUpOwogICAgIHJldHVybiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29uc3RydWN0b3IgPiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29uc3RydWN0b3IgPiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIHJldHVybiB0b1Y4KGltcGwu
Z2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0
LmNwcAppbmRleCAxZTBjMmIwNjIwMzIyNTYxZmI3MjZjMmZiMDg5MzAzOWQxZDQ5ZDI2Li44ZGUw
OGJhODdiZDhmNzM1YzVlNDcwY2UwYTE0N2RmYjU3Yjk0MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRh
cmdldC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBp
dGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICByZXR1cm4gdG9WOChp
bXAtPml0ZW0oaW5kZXgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT5pdGVtKGluZGV4KSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogICAgIGZhaWw6CiAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTcxLDExICsx
NzEsMjIgQEAgYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHZhbHVlKQogfQogCiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZl
bnRUYXJnZXQ6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0PiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVudFRhcmdldDo6d3JhcFNsb3coUGFz
c1JlZlB0cjxUZXN0RXZlbnRUYXJnZXQ+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAgRnJhbWUqIGZyYW1lID0gMDsKKworICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNvbnRleHQ7CisgICAgaWYgKCFjcmVhdGlvbkNvbnRleHQuSXNFbXB0
eSgpICYmIGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkgIT0gdjg6OkNvbnRleHQ6
OkdldEN1cnJlbnQoKSkgeworICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRo
ZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKKyAgICAgICAg
Ly8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50
ZXIuCisgICAgICAgIGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY3JlYXRp
b25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSk7CisgICAgICAgIEFTU0VSVCghY29udGV4dC5J
c0VtcHR5KCkpOworICAgICAgICBjb250ZXh0LT5FbnRlcigpOworICAgIH0KICAgICB3cmFwcGVy
ID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGZyYW1lLCAmaW5mbywgaW1wbC5n
ZXQoKSk7CisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+RXhp
dCgpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBp
c29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggNjI2YjAxYmNmNGFjZTJiMDM4NmFi
OWY2NTJmMmYzODg2ZTFjOTVlZS4uNjE4MmIyNzU4ZWQwZDg0NzI3OTEwMTkxMWZmN2VlZDIwYjQ0
YTkzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEV2ZW50VGFyZ2V0Kj4o
b2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5k
ZXgpKTsKICAgICB9Ci0gICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXAoVGVzdEV2ZW50VGFyZ2V0Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAg
aW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdEV2ZW50VGFyZ2V0
Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2Jq
ZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3Jl
Kiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBl
clR5cGVJbmZvIGluZm87CkBAIC01MCwxMCArNTAsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBpbnQgZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXggPSB2OERlZmF1bHRXcmFwcGVySW50ZXJu
YWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAxOwogcHJpdmF0ZToKLSAg
ICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RF
dmVudFRhcmdldD4sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQ
YXNzUmVmUHRyPFRlc3RFdmVudFRhcmdldD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogfTsKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBW
OFRlc3RFdmVudFRhcmdldDo6d3JhcChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50VGFyZ2V0Ojp3cmFwKFRlc3RFdmVudFRhcmdl
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQpAQCAtNjEsMTMgKzYxLDEzIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0RXZlbnRUYXJnZXQ6OndyYXAoVGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxl
CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50VGFyZ2V0Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
VGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV2ZW50VGFyZ2V0KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1w
bCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4g
VjhUZXN0RXZlbnRUYXJnZXQ6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
IH0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0RXZl
bnRUYXJnZXQgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQg
PSB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV2ZW50VGFy
Z2V0ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBy
ZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4
Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmNwcAppbmRleCBkYzEzYTMwZjViNjU4NDUzMmQyNjkzMTRjYjYzZGZkZGMy
ZGU0M2JhLi4zNTRiY2VhOGE2ZDhmNDQ0N2UyZjEyYWVjZTg3ZTliMjFkNGFlMGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmNwcApAQCAtMTAxLDExICsxMDEsMjIgQEAgYm9vbCBWOFRlc3RFeGNlcHRp
b246Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIH0KIAogCi12ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3coUGFzc1JlZlB0cjxU
ZXN0RXhjZXB0aW9uPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RF
eGNlcHRpb246OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4gaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKICAgICBGcmFtZSogZnJhbWUg
PSAwOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKKyAgICBpZiAoIWNy
ZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRl
eHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKSB7CisgICAgICAgIC8vIEZvciBwZXJm
b3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3VycmVudGx5IHJ1bm5p
bmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgY29udGV4dCB0aGF0
IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAgICAgY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6
Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIGNvbnRleHQtPkVudGVyKCk7
CisgICAgfQogICAgIHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3Qo
ZnJhbWUsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQor
ICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAgaWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0
eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2Jq
ZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDY1ZTZk
MDFhMTllOGMzNDVjYjJkZTE5ZjY1ZDEyOWVmZTE1NzA5YzQuLjZmMjAxMGRhY2U0ZTc4NTdiNmZl
MWEyYzkzZjFhYjIyN2ZjYzFlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTQxLDE2ICs0MSwx
NiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0
RXhjZXB0aW9uKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKICAgICB9Ci0gICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiA9
IDApOworICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RF
eGNlcHRpb24qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CiAgICAgc3RhdGljIHZvaWQg
ZGVyZWZPYmplY3Qodm9pZCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01E
YXRhU3RvcmUqLCB2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogICAgIHN0YXRp
YyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmll
bGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0
ZToKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRy
PFRlc3RFeGNlcHRpb24+LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNs
b3coUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiB9OwogCi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IFY4VGVzdEV4Y2VwdGlvbjo6d3JhcChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFeGNlcHRpb246OndyYXAoVGVzdEV4Y2VwdGlvbiogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRE
T01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQpAQCAtNTgsMTMgKzU4LDEzIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0
RXhjZXB0aW9uOjp3cmFwKFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6CiAgICAg
cmV0dXJuIFY4VGVzdEV4Y2VwdGlvbjo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RFeGNl
cHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGlu
ZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAg
cmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4gVjhUZXN0RXhjZXB0
aW9uOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9Ci1pbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV4Y2VwdGlvbiA+IGltcGws
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0RXhjZXB0aW9uID4gaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdl
dCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApp
bmRleCAyMTA4YmQ4MWZhOGRiYWE4NGU3MjBhZjMzNWQ5NTU4YTk4ZDNhMDkyLi4wNTA2YjkzMzFl
MjhiNDY5MTNmZTk4MzZiYjk1YWE0MDk1OGVhZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApA
QCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVu
dGFsTm9kZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiB7CiAgICAgSU5DX1NU
QVRTKCJET00uVGVzdEludGVyZmFjZS5zdXBwbGVtZW50YWxOb2RlLl9nZXQiKTsKICAgICBUZXN0
SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwotICAgIHJldHVybiB0b1Y4KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1w
KSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0b1Y4KFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoaW1wKSwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKICNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKQEAgLTE2OCw3ICsxNjgs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQg
PSBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QyKHNjcmlwdENvbnRleHQsIGlt
cCwgc3RyQXJnLCBvYmpBcmcsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBn
b3RvIGZhaWw7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KHJlc3Vs
dC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIH0KICAgICBmYWlsOgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKQEAgLTM0NCwxMSArMzQ0LDIyIEBAIEFjdGl2ZURPTU9iamVjdCogVjhU
ZXN0SW50ZXJmYWNlOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjCiAgICAgcmV0dXJuIHRvTmF0aXZlKG9iamVjdCk7CiB9ICAgICAgCiAKLXY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RJbnRl
cmZhY2U+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFj
ZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwogICAgIEZyYW1lKiBmcmFtZSA9IDA7CisK
KyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0OworICAgIGlmICghY3JlYXRpb25D
b250ZXh0LklzRW1wdHkoKSAmJiBjcmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpICE9
IHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpIHsKKyAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNl
LCB3ZSBlbnRlciB0aGUgY29udGV4dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb250
ZXh0CisgICAgICAgIC8vIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2UgYXJl
IGFib3V0IHRvIGVudGVyLgorICAgICAgICBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0
Pjo6TmV3KGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkpOworICAgICAgICBBU1NF
UlQoIWNvbnRleHQuSXNFbXB0eSgpKTsKKyAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKKyAgICB9
CiAgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChmcmFtZSwg
JmluZm8sIGltcGwuZ2V0KCkpOworICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAg
IGNvbnRleHQtPkV4aXQoKTsKICAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmpl
Y3QoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggMTQ3NmY4
ZTVkMDc4ZTI1NTk4OTAzZmM3Zjc0NmQxOWM1ZTIzYWEyNy4uYTcyMTE4MjIzOTBmMDhiNTMwMzc5
YjhmZjExMDRhMjE2OGFmOTAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtNDMsNyArNDMsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0SW50
ZXJmYWNlKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVy
T2JqZWN0SW5kZXgpKTsKICAgICB9Ci0gICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiA9IDAp
OworICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RJbnRl
cmZhY2UqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVy
ZWZPYmplY3Qodm9pZCopOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRh
U3RvcmUqLCB2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogICAgIHN0YXRpYyBX
cmFwcGVyVHlwZUluZm8gaW5mbzsKQEAgLTUyLDEwICs1MiwxMCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0ZToKLSAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+LCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0SW50
ZXJmYWNlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKik7CiB9OwogCi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6d3Jh
cChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRl
c3RJbnRlcmZhY2U6OndyYXAoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoaXNv
bGF0ZSkuZ2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNjMs
MTMgKzYzLDEzIEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjp3cmFw
KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6CiAgICAgcmV0dXJuIFY4VGVzdElu
dGVyZmFjZTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAot
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNlOjp3cmFwKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEludGVyZmFjZSA+IGltcGwsIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4
OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCmluZGV4IGNhMzNmZTVlZDY4MTc3ODViZjMyYTMyZGY0MmQ4ZTEwMDNjYmU0YWUu
LjYwYjk2ODRiOGIxMDYwODQxZDllNWI3YmUyN2Q0MTFmYTcyY2MxMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTExMCwxMSArMTEwLDIyIEBA
IGJvb2wgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhbHVlKQogfQogCiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250
ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlcjsKICAgICBGcmFtZSogZnJhbWUgPSAwOworCisgICAgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY29udGV4dDsKKyAgICBpZiAoIWNyZWF0aW9uQ29udGV4dC5Jc0VtcHR5KCkgJiYgY3Jl
YXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSAhPSB2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpKSB7CisgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQg
b25seSBpZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgY29udGV4dAorICAgICAgICAvLyBpcyBkaWZm
ZXJlbnQgZnJvbSB0aGUgY29udGV4dCB0aGF0IHdlIGFyZSBhYm91dCB0byBlbnRlci4KKyAgICAg
ICAgY29udGV4dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjcmVhdGlvbkNvbnRleHQt
PkNyZWF0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250ZXh0LklzRW1wdHkoKSk7
CisgICAgICAgIGNvbnRleHQtPkVudGVyKCk7CisgICAgfQogICAgIHdyYXBwZXIgPSBWOERPTVdy
YXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QoZnJhbWUsICZpbmZvLCBpbXBsLmdldCgpKTsKKyAg
ICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LT5FeGl0KCk7CiAgICAg
aWYgKFVOTElLRUxZKHdyYXBwZXIuSXNFbXB0eSgpKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggYTdiODgxYzhl
MGEyYzE5MTJmM2Q1ODJkZGRkNjBiMDNhZTY3ODhmYy4uYWRmMzQ1ZWQ4NTQzMDBjMmY4YWNhM2Q5
N2Y3YzI5ODlmZjU4MzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5oCkBAIC00MSwxNiArNDEsMTYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihvYmplY3QtPkdl
dFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwogICAg
IH0KLSAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciosIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiA9IDApOworICAg
IGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2
b2lkIGRlcmVmT2JqZWN0KHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIo
RE9NRGF0YVN0b3JlKiwgdm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBz
dGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5h
bEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1Jl
ZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Piwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7
CiB9OwogCi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OndyYXAoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXAoVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdldChpbXBsKTsK
ICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKQEAgLTU4LDEzICs1OCwxMyBAQCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXAoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdAogICAgIHJldHVybiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoIWltcGwpCiAg
ICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CiAgICAgcmV0dXJuIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXAoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKIH0KLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVm
UHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cAppbmRleCAwMjJhN2Y4OGQ4NGRmYjhiN2MyYzEyZDdmMmIwYWIxYjgzZDlhZjYwLi42ZTQ0ZDg5
MmY5MDYxYTkxMjFkNTQyYTBmMDVlNzNlYTBiYWI0YWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGFkZGVkIHRvIHRoZSBET00gTm9k
ZSBtYXAuIE90aGVyd2lzZSwgdGhlIFRlc3ROYW1lZENvbnN0cnVjdG9yIGluc3RhbmNlCiAgICAg
Ly8gbWF5IGVuZCB1cCBiZWluZyB0aGUgb25seSBub2RlIGluIHRoZSBtYXAgYW5kIGdldCBnYXJi
YWdlLWNvbGxlY3RlZCBwcmVtYXR1cmVseS4KLSAgICB0b1Y4KGRvY3VtZW50LCBhcmdzLkhvbGRl
cigpLT5DcmVhdGlvbkNvbnRleHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHRvVjgoZG9j
dW1lbnQsIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTU0LDExICsxNTQsMjIgQEAgQWN0aXZlRE9NT2Jq
ZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxl
PHY4OjpPYmplY3QKICAgICByZXR1cm4gdG9OYXRpdmUob2JqZWN0KTsKIH0gICAgICAKIAotdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwU2xvdyhQYXNz
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RO
YW1lZENvbnN0cnVjdG9yPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyOwogICAgIEZyYW1lKiBmcmFtZSA9IDA7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0OworICAgIGlmICghY3JlYXRpb25Db250ZXh0LklzRW1wdHkoKSAmJiBj
cmVhdGlvbkNvbnRleHQtPkNyZWF0aW9uQ29udGV4dCgpICE9IHY4OjpDb250ZXh0OjpHZXRDdXJy
ZW50KCkpIHsKKyAgICAgICAgLy8gRm9yIHBlcmZvcm1hbmNlLCB3ZSBlbnRlciB0aGUgY29udGV4
dCBvbmx5IGlmIHRoZSBjdXJyZW50bHkgcnVubmluZyBjb250ZXh0CisgICAgICAgIC8vIGlzIGRp
ZmZlcmVudCBmcm9tIHRoZSBjb250ZXh0IHRoYXQgd2UgYXJlIGFib3V0IHRvIGVudGVyLgorICAg
ICAgICBjb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KGNyZWF0aW9uQ29udGV4
dC0+Q3JlYXRpb25Db250ZXh0KCkpOworICAgICAgICBBU1NFUlQoIWNvbnRleHQuSXNFbXB0eSgp
KTsKKyAgICAgICAgY29udGV4dC0+RW50ZXIoKTsKKyAgICB9CiAgICAgd3JhcHBlciA9IFY4RE9N
V3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChmcmFtZSwgJmluZm8sIGltcGwuZ2V0KCkpOwor
ICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQtPkV4aXQoKTsKICAg
ICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5KCkpKQogICAgICAgICByZXR1cm4gd3JhcHBl
cjsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JBY3RpdmVET01PYmplY3QoaW1wbCwgd3JhcHBlciwgaXNv
bGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCAyMTE3NjM1OWRlMmZh
ZTRlODFkZmJkMzcyMGI1YmMxMzBiOTMwNWRiLi5lMTZlMjExMDQzMDMxZjZiYWFhMDI2MWNiNzUw
ZWVmMGE3Y2I3MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTQ3LDE3
ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CiAgICAgfQotICAgIGlubGluZSBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROYW1lZENvbnN0cnVjdG9yKiwgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoVGVzdE5hbWVkQ29uc3RydWN0b3IqLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xh
dGUqID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3Qodm9pZCopOwogICAgIHN0YXRp
YyB2b2lkIHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqLCB2b2lkKiwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4pOwogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBz
dGF0aWMgQWN0aXZlRE9NT2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVm
YXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogcHJpdmF0ZToKLSAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROYW1lZENvbnN0
cnVjdG9yPiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSopOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NS
ZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0b3I+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKIH07CiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3Jh
cChUZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRBY3RpdmVET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0
KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNjUsMTMgKzY1LDEz
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcChU
ZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwKICAgICByZXR1cm4gVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1
cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwogICAgIHJldHVybiBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yOjp3cmFwKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9Ci1pbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE5hbWVkQ29uc3RydWN0
b3IgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE5hbWVkQ29uc3RydWN0
b3IgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIHJl
dHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAKaW5kZXggNDU4MzQyODYwNTU0OWYxOWQ4NjQxM2IxZjRkNDVhMmFkM2NkYzU2Yi4uMGJm
ZTEzMzdlZjBlN2E4OGNiNDMyNTYxMzMwZDUzZDliNTNiZmQzYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAt
MTA5LDI2ICsxMDksMjEgQEAgYm9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUpCiB9CiAKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RO
b2RlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROb2RlPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3ROb2RlPiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwogICAgIEFT
U0VSVChzdGF0aWNfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Tm9kZSo+KGltcGwuZ2V0KCkpKSA9
PSBzdGF0aWNfY2FzdDx2b2lkKj4oaW1wbC5nZXQoKSkpOwogICAgIEZyYW1lKiBmcmFtZSA9IGlt
cGwtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKLSAgICAvLyBFbnRlciB0aGUgbm9kZSdzIGNvbnRl
eHQgYW5kIGNyZWF0ZSB0aGUgd3JhcHBlciBpbiB0aGF0IGNvbnRleHQuCiAgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY29udGV4dDsKLSAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gdW5kZXJseWluZ0hhbmRsZSA9IGZyYW1lLT5zY3JpcHQoKS0+dW5z
YWZlSGFuZGxlVG9DdXJyZW50V29ybGRDb250ZXh0KCk7Ci0gICAgICAgIGlmICh2ODo6Q29udGV4
dDo6R2V0Q3VycmVudCgpICE9IHVuZGVybHlpbmdIYW5kbGUpIHsKLSAgICAgICAgICAgIC8vIEZv
ciBwZXJmb3JtYW5jZSwgd2UgZW50ZXIgdGhlIGNvbnRleHQgb25seSBpZiB0aGUgY3VycmVudGx5
IHJ1bm5pbmcgY29udGV4dAotICAgICAgICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNv
bnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCi0gICAgICAgICAgICBjb250ZXh0ID0g
djg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KHVuZGVybHlpbmdIYW5kbGUpOwotICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5FbnRl
cigpOwotICAgICAgICB9CisgICAgaWYgKCFjcmVhdGlvbkNvbnRleHQuSXNFbXB0eSgpICYmIGNy
ZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkgIT0gdjg6OkNvbnRleHQ6OkdldEN1cnJl
bnQoKSkgeworICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0
IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKKyAgICAgICAgLy8gaXMgZGlm
ZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCisgICAg
ICAgIGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY3JlYXRpb25Db250ZXh0
LT5DcmVhdGlvbkNvbnRleHQoKSk7CisgICAgICAgIEFTU0VSVCghY29udGV4dC5Jc0VtcHR5KCkp
OworICAgICAgICBjb250ZXh0LT5FbnRlcigpOwogICAgIH0KICAgICB3cmFwcGVyID0gVjhET01X
cmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGZyYW1lLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0g
ICAgLy8gRXhpdCB0aGUgbm9kZSdzIGNvbnRleHQgaWYgaXQgd2FzIGVudGVyZWQuCiAgICAgaWYg
KCFjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgY29udGV4dC0+RXhpdCgpOwogICAgIGlmIChV
TkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCA1ZDRiOWM1M2YyYjU0YmVi
NjZjN2Y4OTZiZTAxODc3MDYxM2ZlNGVlLi40MmE1YzU0ZTg1MWE1MmQxMTU3YjQ1NmNjYmRjZDFk
OGNlNzg2ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0Tm9kZSo+KG9iamVjdC0+R2V0UG9p
bnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CiAgICAgfQot
ICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROb2RlKiwg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAgaW5saW5lIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE5vZGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqID0g
MCk7CiAgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3Qodm9pZCopOwogICAgIHN0YXRpYyB2b2lk
IHZpc2l0RE9NV3JhcHBlcihET01EYXRhU3RvcmUqLCB2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4pOwogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZh
dWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiBwcml2YXRlOgotICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE5vZGU+LCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9k
ZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwogfTsKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjp3cmFwKFRlc3ROb2Rl
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjp3cmFwKFRl
c3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IFY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcihpbXBsKTsKICAgICAgICAgaWYg
KCF3cmFwcGVyLklzRW1wdHkoKSkKQEAgLTU5LDEzICs1OSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IFY4VGVzdE5vZGU6OndyYXAoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+CiAgICAgcmV0dXJuIFY4VGVzdE5vZGU6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChU
ZXN0Tm9kZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3ROb2RlKiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKICAgICByZXR1cm4gVjhUZXN0Tm9kZTo6d3Jh
cChpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQotaW5saW5lIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3ROb2RlID4gaW1wbCwgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFBhc3NSZWZQdHI8IFRlc3ROb2RlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBp
c29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAxOGRiMjcyZjFiNDc5ZGY0YmY4YzY4ZGU4
NWE3OGQ2YzUzYTc4ZDM4Li43ZWZlZDVjNTVhNTMzYWNhNDM1Y2Y4NGM0ZGY0NmQ2MmJlODUwODM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+cmVhZE9ubHlUZXN0T2JqQXR0cigp
OwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gZ2V0
RE9NT2JqZWN0TWFwKGluZm8uR2V0SXNvbGF0ZSgpKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4VW5k
ZWZpbmVkKCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0eSgpKSB7Ci0gICAgICAgIHdyYXBwZXIg
PSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgd3JhcHBlciA9IHRvVjgocmVzdWx0LmdldCgpLCBp
bmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCiAgICAgICAgICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJl
bmNlKGluZm8uSG9sZGVyKCksICJyZWFkT25seVRlc3RPYmpBdHRyIiwgd3JhcHBlcik7CiAgICAg
fQpAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdGVzdE9i
akF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uVGVzdE9iai50ZXN0T2JqQXR0ci5fZ2V0Iik7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOChp
bXAtPnRlc3RPYmpBdHRyKCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChpbXAtPnRlc3RPYmpBdHRyKCksIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0
T2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtMjQ1LDcg
KzI0NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0ckF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
VGVzdE9iai5YTUxPYmpBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB0b1Y4KGltcC0+eG1sT2JqQXR0
cigpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAg
cmV0dXJuIHRvVjgoaW1wLT54bWxPYmpBdHRyKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC00MjEsNyArNDIxLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnR5cGVkQXJy
YXlBdHRyLl9nZXQiKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOwotICAgIHJldHVybiB0b1Y4KGltcC0+dHlwZWRBcnJheUF0dHIoKSwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0
b1Y4KGltcC0+dHlwZWRBcnJheUF0dHIoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBpbmZv
LkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZUF0dHJHZXR0ZXIodjg6OkwKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4
dCkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0KSwgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4
KGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCks
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0
aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNTc2LDcgKzU3Niw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
cih2ODo6TG9jYWw8CiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0
SXNvbGF0ZSgpKTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAg
cmV0dXJuIHRvVjgodi5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOCh2LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQpAQCAtNjA3LDcgKzYwNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiAgICAg
UmVmUHRyPFRlc3RPYmo+IHYgPSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKHNjcmlwdENvbnRleHQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAg
ICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAg
cmV0dXJuIHRvVjgodi5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOCh2LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCkBAIC02MzUsNyArNjM1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlQXQKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCBzY3JpcHRDb250ZXh0
KSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShzdGF0ZSwgc2NyaXB0Q29udGV4dCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCkBAIC02NzEsNyArNjcxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmEK
ICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRlKCkpOwog
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
c3RhdGUuZXhjZXB0aW9uKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICByZXR1cm4gdG9WOCh2
LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgaW5mby5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiB0b1Y4KHYucmVsZWFzZSgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNzA0LDcgKzcwNCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwotICAgIHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoc3RhdGUsIHNj
cmlwdENvbnRleHQpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShzdGF0ZSwgc2NyaXB0Q29udGV4dCksIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpAQCAtNzMxLDcgKzcz
MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXIoCiAgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrKGNyZWF0ZVNjcmlwdENhbGxTdGFja0Zvckluc3BlY3RvcigpKTsKICAgICBp
ZiAoIWNhbGxTdGFjaykKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJu
IHRvVjgoaW1wLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKGNhbGxT
dGFjayksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gdG9WOChpbXAtPndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUoY2FsbFN0YWNrKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRy
aWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6
OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTgyNSw3ICs4
MjUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0ZTFBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogICAgIFJlZlB0cjxhbnk+IHJlc3VsdCA9
IGltcC0+Y2FjaGVkQXR0cmlidXRlMSgpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFw
cGVyID0gcmVzdWx0LmdldCgpID8gZ2V0RE9NT2JqZWN0TWFwKGluZm8uR2V0SXNvbGF0ZSgpKS5n
ZXQocmVzdWx0LmdldCgpKSA6IHY4VW5kZWZpbmVkKCk7CiAgICAgaWYgKHdyYXBwZXIuSXNFbXB0
eSgpKSB7Ci0gICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5Ib2xkZXIo
KS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgd3JhcHBl
ciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7
CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICBWOERPTVdyYXBw
ZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKGluZm8uSG9sZGVyKCksICJjYWNoZWRBdHRyaWJ1
dGUxIiwgd3JhcHBlcik7CiAgICAgfQpAQCAtODM5LDcgKzgzOSw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hCiAgICAgUmVmUHRyPGFueT4gcmVzdWx0ID0gaW1wLT5jYWNoZWRBdHRyaWJ1dGUy
KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0KCkgPyBn
ZXRET01PYmplY3RNYXAoaW5mby5HZXRJc29sYXRlKCkpLmdldChyZXN1bHQuZ2V0KCkpIDogdjhV
bmRlZmluZWQoKTsKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpIHsKLSAgICAgICAgd3JhcHBl
ciA9IHRvVjgocmVzdWx0LmdldCgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwg
aW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICB3cmFwcGVyID0gdG9WOChyZXN1bHQuZ2V0KCks
IGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgaWYgKCF3cmFwcGVy
LklzRW1wdHkoKSkKICAgICAgICAgICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5SZWZl
cmVuY2UoaW5mby5Ib2xkZXIoKSwgImNhY2hlZEF0dHJpYnV0ZTIiLCB3cmFwcGVyKTsKICAgICB9
CkBAIC05NDksMTQgKzk0OSwxNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnRl
bnREb2N1bWVudEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIGlmICgh
QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvTm9kZShCaW5kaW5nU3RhdGU6Omlu
c3RhbmNlKCksIGltcC0+Y29udGVudERvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gdjg6Okhh
bmRsZTx2ODo6VmFsdWU+KHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAKLSAgICByZXR1
cm4gdG9WOChpbXAtPmNvbnRlbnREb2N1bWVudCgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pigp
LCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT5jb250ZW50RG9jdW1l
bnQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAK
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50QXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm11dGFibGVQb2ludC5fZ2V0Iik7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1
cm4gdG9WOChXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9iaiwgRmxv
YXRQb2ludD46OmNyZWF0ZShpbXAsIGltcC0+bXV0YWJsZVBvaW50KCksICZUZXN0T2JqOjp1cGRh
dGVNdXRhYmxlUG9pbnQpKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9w
ZXJ0eVRlYXJPZmY8VGVzdE9iaiwgRmxvYXRQb2ludD46OmNyZWF0ZShpbXAsIGltcC0+bXV0YWJs
ZVBvaW50KCksICZUZXN0T2JqOjp1cGRhdGVNdXRhYmxlUG9pbnQpKSwgaW5mby5Ib2xkZXIoKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBtdXRhYmxlUG9pbnRBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTk3Miw3ICs5NzIsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50QXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouaW1tdXRh
YmxlUG9pbnQuX2dldCIpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlU
ZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLT5pbW11dGFibGVQb2ludCgpKSksIGluZm8u
SG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0
dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVh
dGUoaW1wLT5pbW11dGFibGVQb2ludCgpKSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAgLTExMTEsNyArMTExMSw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm9iak1ldGhvZCIpOwogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJu
IHRvVjgoaW1wLT5vYmpNZXRob2QoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KGltcC0+b2JqTWV0aG9kKCksIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKQEAgLTExMjMsNyArMTEyMyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
CiAgICAgRVhDRVBUSU9OX0JMT0NLKGxvbmcgbG9uZywgQXJnLCB0b0ludDY0KE1BWUJFX01JU1NJ
TkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkpKTsKICAgICBTVFJJTkdf
VE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHN0ckFyZywgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CiAgICAg
RVhDRVBUSU9OX0JMT0NLKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2Uo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzVW5kZWZpbmVkKSkgPyBW
OFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZQkVfTUlT
U0lOR19QQVJBTUVURVIoYXJncywgMiwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7Ci0gICAg
cmV0dXJuIHRvVjgoaW1wLT5vYmpNZXRob2RXaXRoQXJncyhBcmcsIHN0ckFyZywgb2JqQXJnKSwg
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVy
biB0b1Y4KGltcC0+b2JqTWV0aG9kV2l0aEFyZ3MoQXJnLCBzdHJBcmcsIG9iakFyZyksIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0xMTYwLDcgKzExNjAsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxsYmFjayhj
b25zdCB2OAogICAgIFJlZlB0cjxUZXN0T2JqPiByZXN1bHQgPSBpbXAtPm1ldGhvZFRoYXRSZXF1
aXJlc0FsbEFyZ3NBbmRUaHJvd3Moc3RyQXJnLCBvYmpBcmcsIGVjKTsKICAgICBpZiAoVU5MSUtF
TFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVh
c2UoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAg
IHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KICAgICBmYWlsOgogICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEyNjcsNyArMTI2Nyw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2JqQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+
d2l0aFNjcmlwdFN0YXRlT2JqKCZzdGF0ZSk7CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwotICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1
bHQucmVsZWFzZSgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIH0KIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVWb2lk
RXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTEzMDAsNyAr
MTMwMCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2Jq
RXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtCiAgICAgICAgIGdvdG8gZmFpbDsKICAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0
YXRlLmV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHRvVjgocmVz
dWx0LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KICAgICBmYWlsOgogICAgIHJldHVy
biBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEzNDYsNyArMTM0
Niw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvCiAgICAgICAgIGdvdG8gZmFpbDsKICAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRl
LmV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0
LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkp
OworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KICAgICBmYWlsOgogICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEzNjMsNyArMTM2Myw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNDCiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9
IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMo
JnN0YXRlLCBzY3JpcHRDb250ZXh0KTsKICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpLCBhcmdzLkdldElzb2xh
dGUoKSk7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5y
ZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOwog
fQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTgzMyw3ICsx
ODMzLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRTVkdEb2N1bWVudENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgUmVmUHRyPFNWR0RvY3VtZW50PiBy
ZXN1bHQgPSBpbXAtPmdldFNWR0RvY3VtZW50KGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQog
ICAgICAgICBnb3RvIGZhaWw7Ci0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0
b1Y4KHJlc3VsdC5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIH0KICAgICBmYWlsOgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24o
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE4ODcsMTQgKzE4ODcsMTQgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGEKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLm11dGFibGVQb2lu
dEZ1bmN0aW9uIik7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJP
ZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSwgYXJn
cy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBy
ZXR1cm4gdG9WOChXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD46OmNy
ZWF0ZShpbXAtPm11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJs
ZVBvaW50RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgcmV0
dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVh
dGUoaW1wLT5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRp
b25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChXVEY6Omdl
dFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPmltbXV0YWJs
ZVBvaW50RnVuY3Rpb24oKSkpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9
CiAKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3JhbmdlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKQEAgLTE5MTksNyArMTkxOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogICAgIFJlZlB0cjxib29sPiByZXN1bHQgPSBpbXAtPnN0cmljdEZ1bmN0aW9uKHN0ciwg
YSwgYiwgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8gZmFpbDsKLSAg
ICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pigp
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgfQogICAg
IGZhaWw6CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtMjMyMSwxMSArMjMyMSwyMiBAQCB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRl
eHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2UsIFRlcwogICAgIH0K
IH0KIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPYmo6OndyYXBTbG93KFBhc3NSZWZQ
dHI8VGVzdE9iaj4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T2Jq
Ojp3cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAgRnJhbWUqIGZyYW1lID0gMDsKKworICAgIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQ7CisgICAgaWYgKCFjcmVhdGlvbkNvbnRleHQu
SXNFbXB0eSgpICYmIGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCkgIT0gdjg6OkNv
bnRleHQ6OkdldEN1cnJlbnQoKSkgeworICAgICAgICAvLyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVu
dGVyIHRoZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQKKyAg
ICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQg
dG8gZW50ZXIuCisgICAgICAgIGNvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXco
Y3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQoKSk7CisgICAgICAgIEFTU0VSVCghY29u
dGV4dC5Jc0VtcHR5KCkpOworICAgICAgICBjb250ZXh0LT5FbnRlcigpOworICAgIH0KICAgICB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KGZyYW1lLCAmaW5mbywg
aW1wbC5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgY29udGV4
dC0+RXhpdCgpOwogICAgIGlmIChVTkxJS0VMWSh3cmFwcGVyLklzRW1wdHkoKSkpCiAgICAgICAg
IHJldHVybiB3cmFwcGVyOwogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVy
LCBpbXBsLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCA2NmQwNGEyNzk3NmVlZjllNDVlNzM0MTkzMzIwODc3
MTgwM2I0OWYxLi40ZDQwNzIwMjQzMWUyYzI2ODQ5MzJiN2I3MGIxMjQ5NDUwNjNmMDUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFRlc3RPYmoqPihvYmplY3QtPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVs
ZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwogICAgIH0KLSAgICBpbmxpbmUgc3RhdGljIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T2JqKiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xh
dGUqID0gMCk7CisgICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdE9iaiosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgdm9pZCBk
ZXJlZk9iamVjdCh2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRET01XcmFwcGVyKERPTURh
dGFTdG9yZSosIHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAgICAgc3RhdGlj
IFdyYXBwZXJUeXBlSW5mbyBpbmZvOwpAQCAtNTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0T2JqKik7CiBwcml2YXRlOgotICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE9i
aj4sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
KTsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNzUmVmUHRy
PFRlc3RPYmo+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKIH07CiAKLXY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T2JqOjp3cmFwKFRl
c3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE9iajo6d3Jh
cChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CiAgICAgICAgIGlm
ICghd3JhcHBlci5Jc0VtcHR5KCkpCkBAIC02NSwxMyArNjUsMTMgQEAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBWOFRlc3RPYmo6OndyYXAoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY3IKICAgICByZXR1cm4gVjhUZXN0T2JqOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNv
bnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
VGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1
cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwogICAgIHJldHVybiBWOFRlc3RPYmo6OndyYXAo
aW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KLWlubGluZSB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KFBhc3NSZWZQdHI8IFRlc3RPYmogPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUgPSAwKQogewogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGZkYzczNDQwMmEwYzY0MGE2MTU2MTZjZTkxMmU1MDE4
N2FlZTgzM2YuLmU0MjRmNjUxMWEwYThiNjAyZTRiMjVmOWRmY2EzZWViZjFiNDhkN2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3J0
c0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHYKICAgICBNZXNz
YWdlUG9ydEFycmF5IHBvcnRzQ29weSgqcG9ydHMpOwogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+
IHBvcnRBcnJheSA9IHY4OjpBcnJheTo6TmV3KHBvcnRzQ29weS5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcG9ydHNDb3B5LnNpemUoKTsgKytpKQotICAgICAgICBwb3J0QXJy
YXktPlNldCh2OEludGVnZXIoaSwgaW5mby5HZXRJc29sYXRlKCkpLCB0b1Y4KHBvcnRzQ29weVtp
XS5nZXQoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0
ZSgpKSk7CisgICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50ZWdlcihpLCBpbmZvLkdldElzb2xh
dGUoKSksIHRvVjgocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElz
b2xhdGUoKSkpOwogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKQEAgLTI5MywxMSArMjkzLDIy
IEBAIGJvb2wgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsCiB9CiAKIAotdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXBTbG93KFBhc3NSZWZQ
dHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4gaW1wbCwgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp3
cmFwU2xvdyhQYXNzUmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IGlt
cGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAgRnJh
bWUqIGZyYW1lID0gMDsKKworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQ7Cisg
ICAgaWYgKCFjcmVhdGlvbkNvbnRleHQuSXNFbXB0eSgpICYmIGNyZWF0aW9uQ29udGV4dC0+Q3Jl
YXRpb25Db250ZXh0KCkgIT0gdjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSkgeworICAgICAgICAv
LyBGb3IgcGVyZm9ybWFuY2UsIHdlIGVudGVyIHRoZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJl
bnRseSBydW5uaW5nIGNvbnRleHQKKyAgICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNv
bnRleHQgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gZW50ZXIuCisgICAgICAgIGNvbnRleHQgPSB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY3JlYXRpb25Db250ZXh0LT5DcmVhdGlvbkNvbnRleHQo
KSk7CisgICAgICAgIEFTU0VSVCghY29udGV4dC5Jc0VtcHR5KCkpOworICAgICAgICBjb250ZXh0
LT5FbnRlcigpOworICAgIH0KICAgICB3cmFwcGVyID0gVjhET01XcmFwcGVyOjppbnN0YW50aWF0
ZVY4T2JqZWN0KGZyYW1lLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgaWYgKCFjb250ZXh0Lklz
RW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+RXhpdCgpOwogICAgIGlmIChVTkxJS0VMWSh3cmFw
cGVyLklzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBl
ckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCAyYjg5ZTEwNTQ5
NjBjZjFhNGY2ZjEwOWU2NDJiMjUyZjc4NDU4NGE2Li5iOGMzY2RiMTlhMjQ4ODk4YzNjY2E5MWY1
YzA4ZDE1ZTJkOGIyNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC00MywxNyArNDMsMTcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSo+KG9iamVjdC0+R2V0UG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3Jh
cHBlck9iamVjdEluZGV4KSk7CiAgICAgfQotICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqLCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBpbmxpbmUgc3RhdGljIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+KCksIHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KHZv
aWQqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiwgdm9p
ZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgV3JhcHBlclR5cGVJ
bmZvIGluZm87CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVy
bmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwog
cHJpdmF0ZToKLSAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xvdyhQYXNz
UmVmUHRyPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+LCB2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiB9OwogCi12ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6d3JhcChUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXAoVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOwogICAgICAg
ICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQpAQCAtNjEsMTMgKzYxLDEzIEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp3cmFwKFRl
c3RTZXJpYWxpemVkCiAgICAgcmV0dXJuIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5s
aW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lu
bGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewog
ICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
ICAgICByZXR1cm4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp3cmFwKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZSA+IGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0g
MCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJhbnNh
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NVHJhbnNhY3Rpb24uY3Bw
CmluZGV4IDQ0Mzc4Y2ZlZGUwNTRiZTAzNTBkZjU2NDQwODk0NTgxYjg0NDUwMjEuLjIyNWU1YWJi
NmYxNzg4ZTNiYWUzNmZlYzZlMTE2NmIxM2NhNzdlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01UcmFuc2FjdGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIERP
TVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQogICAg
IGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh0
b1Y4KG1fdW5kb01hbmFnZXIsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCkpKTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHJlY2VpdmVyID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh0b1Y4KG1fdW5kb01hbmFnZXIpKTsKICAgICBpZiAocmVjZWl2ZXIuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmFtZXRlcnNbMF0gPSB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0b21CaW5k
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJDdXN0b21CaW5kaW5ncy5j
cHAKaW5kZXggZGU0MGYxOGE0ZjkwYmE0MzYzMzc4MzE5NDUwNmRmYTExMjE5Zjk0Ny4uOTY4Y2Mw
YzY0ZjM0MzUyZTYxNzJhMjczYWViNTRjZmI2YjM5YzcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSURCQ3VzdG9tQmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0lEQkN1c3RvbUJpbmRpbmdzLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJREJDdXJzb3JXaXRoVmFsdWU6OnZhbHVlQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdAogICAgIH0KIAogICAgIFJlZlB0cjxJREJBbnk+IHJlc3Vs
dCA9IGltcC0+dmFsdWUoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHRv
VjgocmVzdWx0LmdldCgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gdG9WOChy
ZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBpbmZv
LkhvbGRlcigpLT5TZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUsIHdyYXBwZXIpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggM2JhMjBkYjZhNDZiYWQyMWRkYzkxZGVlMjA2
MjZiYWRmZTdjNTQyMS4uNDNjZWZmNGViNjVmYjA0MjYzZjY2N2U2MGRhZWY5ZWJlNzYyZmZlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC02MzgsMTEgKzYzOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVCgh
dHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpOwogICAgICAgICBpZiAobWVzc2FnZVBvcnRzKSB7CiAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VQb3J0cy0+c2l6ZSgpOyBpKysp
Ci0gICAgICAgICAgICAgICAgbV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy5zZXQoVjhNZXNzYWdl
UG9ydDo6d3JhcChtZXNzYWdlUG9ydHMtPmF0KGkpLmdldCgpLCB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PigpLCBtX3dyaXRlci5nZXRJc29sYXRlKCkpLCBpKTsKKyAgICAgICAgICAgICAgICBtX3Ry
YW5zZmVycmVkTWVzc2FnZVBvcnRzLnNldChWOE1lc3NhZ2VQb3J0Ojp3cmFwKG1lc3NhZ2VQb3J0
cy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV93cml0ZXIuZ2V0SXNv
bGF0ZSgpKSwgaSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGFycmF5QnVmZmVycykgewogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheUJ1ZmZlcnMtPnNpemUoKTsgaSsr
KSAgewotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhBcnJheUJ1ZmZl
ciA9IFY4QXJyYXlCdWZmZXI6OndyYXAoYXJyYXlCdWZmZXJzLT5hdChpKS5nZXQoKSwgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4oKSwgbV93cml0ZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4QXJyYXlCdWZmZXIgPSBWOEFycmF5QnVmZmVy
Ojp3cmFwKGFycmF5QnVmZmVycy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgbV93cml0ZXIuZ2V0SXNvbGF0ZSgpKTsKICAgICAgICAgICAgICAgICAvLyBDb2FsZXNjZSBt
dWx0aXBsZSBvY2N1cmVuY2VzIG9mIHRoZSBzYW1lIGJ1ZmZlciB0byB0aGUgZmlyc3QgaW5kZXgu
CiAgICAgICAgICAgICAgICAgaWYgKCFtX3RyYW5zZmVycmVkQXJyYXlCdWZmZXJzLmNvbnRhaW5z
KHY4QXJyYXlCdWZmZXIpKQogICAgICAgICAgICAgICAgICAgICBtX3RyYW5zZmVycmVkQXJyYXlC
dWZmZXJzLnNldCh2OEFycmF5QnVmZmVyLCBpKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXct
PmJ1ZmZlcigpKQogICAgICAgICAgICAgcmV0dXJuIGhhbmRsZUVycm9yKERhdGFDbG9uZUVycm9y
LCBuZXh0KTsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuZGVybHlpbmdCdWZmZXIg
PSB0b1Y4KGFycmF5QnVmZmVyVmlldy0+YnVmZmVyKCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
KCksIG1fd3JpdGVyLmdldElzb2xhdGUoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB1bmRlcmx5aW5nQnVmZmVyID0gdG9WOChhcnJheUJ1ZmZlclZpZXctPmJ1ZmZlcigpLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIG1fd3JpdGVyLmdldElzb2xhdGUoKSk7CiAgICAgICAgIGlm
ICh1bmRlcmx5aW5nQnVmZmVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVF
cnJvcihEYXRhQ2xvbmVFcnJvciwgbmV4dCk7CiAgICAgICAgIFN0YXRlQmFzZSogc3RhdGVPdXQg
PSBkb1NlcmlhbGl6ZSh1bmRlcmx5aW5nQnVmZmVyLCAwKTsKQEAgLTE2MzQsNyArMTYzNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIEFTU0VSVChwaXhlbEFycmF5LT5sZW5ndGgoKSA+PSBwaXhlbERh
dGFMZW5ndGgpOwogICAgICAgICBtZW1jcHkocGl4ZWxBcnJheS0+ZGF0YSgpLCBtX2J1ZmZlciAr
IG1fcG9zaXRpb24sIHBpeGVsRGF0YUxlbmd0aCk7CiAgICAgICAgIG1fcG9zaXRpb24gKz0gcGl4
ZWxEYXRhTGVuZ3RoOwotICAgICAgICAqdmFsdWUgPSB0b1Y4KGltYWdlRGF0YS5yZWxlYXNlKCks
IHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIG1faXNvbGF0ZSk7CisgICAgICAgICp2YWx1ZSA9
IHRvVjgoaW1hZ2VEYXRhLnJlbGVhc2UoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX2lz
b2xhdGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTE2NTYsNyArMTY1Niw3
IEBAIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYXJyYXlCdWZmZXIgPSBk
b1JlYWRBcnJheUJ1ZmZlcigpOwogICAgICAgICBpZiAoIWFycmF5QnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAqdmFsdWUgPSB0b1Y4KGFycmF5QnVmZmVyLnJlbGVh
c2UoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgbV9pc29sYXRlKTsKKyAgICAgICAgKnZh
bHVlID0gdG9WOChhcnJheUJ1ZmZlci5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4o
KSwgbV9pc29sYXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xNjgyLDU4
ICsxNjgyLDU4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IHN3aXRjaCAoc3ViVGFnKSB7CiAgICAgICAgIGNhc2UgQnl0ZUFycmF5VGFnOgotICAgICAgICAg
ICAgKnZhbHVlID0gdG9WOChJbnQ4QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCks
IGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lz
b2xhdGUpOworICAgICAgICAgICAgKnZhbHVlID0gdG9WOChJbnQ4QXJyYXk6OmNyZWF0ZShhcnJh
eUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIG1faXNvbGF0ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBVbnNpZ25lZEJ5dGVBcnJheVRhZzoKLSAgICAgICAgICAgICp2YWx1ZSA9IHRvVjgoVWludDhB
cnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0
aCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksICBtX2lzb2xhdGUpOworICAgICAgICAgICAg
KnZhbHVlID0gdG9WOChVaW50OEFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZSgpLCBi
eXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCAgbV9pc29s
YXRlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVuc2lnbmVkQnl0ZUNsYW1w
ZWRBcnJheVRhZzoKLSAgICAgICAgICAgICp2YWx1ZSA9IHRvVjgoVWludDhDbGFtcGVkQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpLCB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lzb2xhdGUpOworICAgICAgICAgICAgKnZhbHVl
ID0gdG9WOChVaW50OENsYW1wZWRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSwg
Ynl0ZU9mZnNldCwgYnl0ZUxlbmd0aCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9pc29s
YXRlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNob3J0QXJyYXlUYWc6IHsK
ICAgICAgICAgICAgIHVpbnQzMl90IHNob3J0TGVuZ3RoID0gYnl0ZUxlbmd0aCAvIHNpemVvZihp
bnQxNl90KTsKICAgICAgICAgICAgIGlmIChzaG9ydExlbmd0aCAqIHNpemVvZihpbnQxNl90KSAh
PSBieXRlTGVuZ3RoKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICp2YWx1ZSA9IHRvVjgoSW50MTZBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSwg
Ynl0ZU9mZnNldCwgc2hvcnRMZW5ndGgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lz
b2xhdGUpOworICAgICAgICAgICAgKnZhbHVlID0gdG9WOChJbnQxNkFycmF5OjpjcmVhdGUoYXJy
YXlCdWZmZXIucmVsZWFzZSgpLCBieXRlT2Zmc2V0LCBzaG9ydExlbmd0aCksIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4oKSwgbV9pc29sYXRlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgVW5zaWduZWRTaG9ydEFycmF5VGFnOiB7CiAgICAgICAgICAgICB1aW50
MzJfdCBzaG9ydExlbmd0aCA9IGJ5dGVMZW5ndGggLyBzaXplb2YodWludDE2X3QpOwogICAgICAg
ICAgICAgaWYgKHNob3J0TGVuZ3RoICogc2l6ZW9mKHVpbnQxNl90KSAhPSBieXRlTGVuZ3RoKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICp2YWx1ZSA9IHRvVjgo
VWludDE2QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIHNo
b3J0TGVuZ3RoKSwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgbV9pc29sYXRlKTsKKyAgICAg
ICAgICAgICp2YWx1ZSA9IHRvVjgoVWludDE2QXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxl
YXNlKCksIGJ5dGVPZmZzZXQsIHNob3J0TGVuZ3RoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pigp
LCBtX2lzb2xhdGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBJbnRBcnJheVRhZzogewogICAgICAgICAgICAgdWludDMyX3QgaW50TGVuZ3RoID0gYnl0ZUxl
bmd0aCAvIHNpemVvZihpbnQzMl90KTsKICAgICAgICAgICAgIGlmIChpbnRMZW5ndGggKiBzaXpl
b2YoaW50MzJfdCkgIT0gYnl0ZUxlbmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICAqdmFsdWUgPSB0b1Y4KEludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZl
ci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGludExlbmd0aCksIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+KCksIG1faXNvbGF0ZSk7CisgICAgICAgICAgICAqdmFsdWUgPSB0b1Y4KEludDMyQXJyYXk6
OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGludExlbmd0aCksIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9pc29sYXRlKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgVW5zaWduZWRJbnRBcnJheVRhZzogewogICAgICAgICAg
ICAgdWludDMyX3QgaW50TGVuZ3RoID0gYnl0ZUxlbmd0aCAvIHNpemVvZih1aW50MzJfdCk7CiAg
ICAgICAgICAgICBpZiAoaW50TGVuZ3RoICogc2l6ZW9mKHVpbnQzMl90KSAhPSBieXRlTGVuZ3Ro
KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICp2YWx1ZSA9IHRv
VjgoVWludDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQs
IGludExlbmd0aCksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KCksIG1faXNvbGF0ZSk7CisgICAg
ICAgICAgICAqdmFsdWUgPSB0b1Y4KFVpbnQzMkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVs
ZWFzZSgpLCBieXRlT2Zmc2V0LCBpbnRMZW5ndGgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCks
IG1faXNvbGF0ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEZsb2F0QXJyYXlUYWc6IHsKICAgICAgICAgICAgIHVpbnQzMl90IGZsb2F0TGVuZ3RoID0gYnl0
ZUxlbmd0aCAvIHNpemVvZihmbG9hdCk7CiAgICAgICAgICAgICBpZiAoZmxvYXRMZW5ndGggKiBz
aXplb2YoZmxvYXQpICE9IGJ5dGVMZW5ndGgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgKnZhbHVlID0gdG9WOChGbG9hdDMyQXJyYXk6OmNyZWF0ZShhcnJheUJ1
ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGZsb2F0TGVuZ3RoKSwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4oKSwgbV9pc29sYXRlKTsKKyAgICAgICAgICAgICp2YWx1ZSA9IHRvVjgoRmxvYXQz
MkFycmF5OjpjcmVhdGUoYXJyYXlCdWZmZXIucmVsZWFzZSgpLCBieXRlT2Zmc2V0LCBmbG9hdExl
bmd0aCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9pc29sYXRlKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRG91YmxlQXJyYXlUYWc6IHsKICAgICAg
ICAgICAgIHVpbnQzMl90IGZsb2F0TGVuZ3RoID0gYnl0ZUxlbmd0aCAvIHNpemVvZihkb3VibGUp
OwogICAgICAgICAgICAgaWYgKGZsb2F0TGVuZ3RoICogc2l6ZW9mKGRvdWJsZSkgIT0gYnl0ZUxl
bmd0aCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAqdmFsdWUg
PSB0b1Y4KEZsb2F0NjRBcnJheTo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9m
ZnNldCwgZmxvYXRMZW5ndGgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lzb2xhdGUp
OworICAgICAgICAgICAgKnZhbHVlID0gdG9WOChGbG9hdDY0QXJyYXk6OmNyZWF0ZShhcnJheUJ1
ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGZsb2F0TGVuZ3RoKSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCBtX2lzb2xhdGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEYXRhVmlld1RhZzoKLSAgICAgICAgICAgICp2YWx1ZSA9IHRvVjgoRGF0YVZp
ZXc6OmNyZWF0ZShhcnJheUJ1ZmZlci5yZWxlYXNlKCksIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgp
LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lzb2xhdGUpOworICAgICAgICAgICAgKnZh
bHVlID0gdG9WOChEYXRhVmlldzo6Y3JlYXRlKGFycmF5QnVmZmVyLnJlbGVhc2UoKSwgYnl0ZU9m
ZnNldCwgYnl0ZUxlbmd0aCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9pc29sYXRlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTc2OCw3ICsxNzY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFkb1Jl
YWRVaW50NjQoJnNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBQYXNz
UmVmUHRyPEJsb2I+IGJsb2IgPSBCbG9iOjpjcmVhdGUoS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVy
bCksIHR5cGUsIHNpemUpOwotICAgICAgICAqdmFsdWUgPSB0b1Y4KGJsb2IsIHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+KCksIG1faXNvbGF0ZSk7CisgICAgICAgICp2YWx1ZSA9IHRvVjgoYmxvYiwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX2lzb2xhdGUpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAKQEAgLTE3ODUsNyArMTc4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICgh
cmVhZFdlYkNvcmVTdHJpbmcoJnVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIFJlZlB0cjxET01GaWxlU3lzdGVtPiBmcyA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShnZXRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG5hbWUsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGVT
eXN0ZW1UeXBlPih0eXBlKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIEFzeW5jRmlsZVN5
c3RlbTo6Y3JlYXRlKCkpOwotICAgICAgICAqdmFsdWUgPSB0b1Y4KGZzLnJlbGVhc2UoKSwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgbV9pc29sYXRlKTsKKyAgICAgICAgKnZhbHVlID0gdG9W
OChmcy5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9pc29sYXRlKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCkBAIC0xODAyLDcgKzE4MDIsNyBAQCBw
cml2YXRlOgogICAgICAgICBpZiAoIXJlYWRXZWJDb3JlU3RyaW5nKCZ0eXBlKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgUGFzc1JlZlB0cjxGaWxlPiBmaWxlID0gRmlsZTo6
Y3JlYXRlKHBhdGgsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCB0eXBlKTsKLSAgICAgICAg
KnZhbHVlID0gdG9WOChmaWxlLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PigpLCBtX2lzb2xhdGUp
OworICAgICAgICAqdmFsdWUgPSB0b1Y4KGZpbGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwg
bV9pc29sYXRlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0xODI0LDcgKzE4
MjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGZpbGVMaXN0LT5hcHBlbmQoRmlsZTo6Y3JlYXRlKHBhdGgsIEtVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmxTdHJpbmcpLCB0eXBlKSk7CiAgICAgICAgIH0KLSAgICAgICAgKnZhbHVlID0gdG9W
OChmaWxlTGlzdCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgbV9pc29sYXRlKTsKKyAgICAg
ICAgKnZhbHVlID0gdG9WOChmaWxlTGlzdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBtX2lz
b2xhdGUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIwMjIsNyArMjAyMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGluZGV4
ID49IG1fdHJhbnNmZXJyZWRNZXNzYWdlUG9ydHMtPnNpemUoKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgKm9iamVjdCA9IFY4TWVzc2FnZVBvcnQ6OndyYXAobV90cmFuc2Zl
cnJlZE1lc3NhZ2VQb3J0cy0+YXQoaW5kZXgpLmdldCgpLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PigpLCBtX3JlYWRlci5nZXRJc29sYXRlKCkpOworICAgICAgICAqb2JqZWN0ID0gVjhNZXNzYWdl
UG9ydDo6d3JhcChtX3RyYW5zZmVycmVkTWVzc2FnZVBvcnRzLT5hdChpbmRleCkuZ2V0KCksIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0yMDM0LDcgKzIwMzQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcmVz
dWx0ID0gbV9hcnJheUJ1ZmZlcnMuYXQoaW5kZXgpOwogICAgICAgICBpZiAocmVzdWx0LklzRW1w
dHkoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gVjhBcnJheUJ1ZmZlcjo6d3JhcChBcnJheUJ1
ZmZlcjo6Y3JlYXRlKG1fYXJyYXlCdWZmZXJDb250ZW50cy0+YXQoaW5kZXgpKS5nZXQoKSwgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IFY4QXJyYXlCdWZmZXI6OndyYXAoQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2Fy
cmF5QnVmZmVyQ29udGVudHMtPmF0KGluZGV4KSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgbV9yZWFkZXIuZ2V0SXNvbGF0ZSgpKTsKICAgICAgICAgICAgIG1fYXJyYXlCdWZmZXJz
W2luZGV4XSA9IHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAqb2JqZWN0ID0gcmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAzOGQ1Y2FiMTA3YTc4MWQ2
ODVkMmM5MWQ4ZTMzZDkwOTM2OGU0ZGMxLi5mNjFjZmJlNGM4ZmQ3NjZmYWQ3OGI4OGQwZDQ5MjAy
Zjc2ZTk0M2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMTI4
LDcgKzEyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBzdHJ1Y3QgVjhWYWx1ZVRyYWl0
cyB7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFycmF5VjhW
YWx1ZShjb25zdCBUJiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiB0b1Y4KFdURjo6Z2V0UHRyKHZhbHVlKSwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4oKSwgaXNvbGF0ZSk7CisgICAgICAgICAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0
cih2YWx1ZSksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgaXNvbGF0ZSk7CiAgICAgICAgIH0K
ICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCmluZGV4
IDdlNDNkOWFlM2JhZGEzYzhlMzE3MmQwMmJjMTkzYmY1OGVkNmMwYjkuLmZjODBhNWE3ZTE0YTVm
MmI3ZDQxYTcwY2Q3NmRiYTZlYTExZWEwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4Q29sbGVjdGlvbi5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8v
IEZJWE1FOiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIG5hbWVkIHVzaW5nIHRvKiBzaW5jZSB0
aGV5IHJldHVybiB0aGUgaXRlbSAoZ2V0KiBpcyB1c2VkIGZvciBtZXRob2QgdGhhdCB0YWtlIGEg
cmVmIHBhcmFtKS4KIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjQ2NjQuCiAKLXRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZ2V0VjhPYmplY3QoVCogaW1wbGVtZW50YXRpb24sIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit0ZW1wbGF0ZTxjbGFzcyBU
PiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldFY4T2JqZWN0KFQqIGltcGxlbWVudGF0
aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsZW1lbnRhdGlvbikKICAgICAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CkBAIC01MywxMyArNTMsMTMgQEAgdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlv
bj4gc3RhdGljIENvbGxlY3Rpb24qIHRvTmF0aXZlQ29sbGVjdGlvbih2ODo6TG9jYWw8djg6Ok8K
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDb2xsZWN0aW9uKj4ob2JqZWN0LT5HZXRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKIH0KIAotdGVt
cGxhdGU8Y2xhc3MgVD4gc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRWOE9iamVjdChQ
YXNzUmVmUHRyPFQ+IGltcGxlbWVudGF0aW9uLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordGVtcGxhdGU8Y2xhc3MgVD4gc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRWOE9iamVjdChQYXNzUmVmUHRyPFQ+IGltcGxl
bWVudGF0aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgcmV0dXJuIGdldFY4T2JqZWN0KGltcGxlbWVudGF0aW9u
LmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCiAvLyBSZXR1cm5zIG5hbWVk
IHByb3BlcnR5IG9mIGEgY29sbGVjdGlvbi4KLXRlbXBsYXRlPGNsYXNzIENvbGxlY3Rpb24sIGNs
YXNzIEl0ZW1UeXBlPiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkUHJvcGVy
dHlPZkNvbGxlY3Rpb24odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBvYmplY3QsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCit0ZW1wbGF0ZTxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJ
dGVtVHlwZT4gc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZFByb3BlcnR5T2ZD
b2xsZWN0aW9uKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6Ok9iamVj
dD4gb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgLy8gRklYTUU6IGFzc2VydCBvYmplY3QgaXMgYSBjb2xs
ZWN0aW9uIHR5cGUKICAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIob2Jq
ZWN0KSk7CkBAIC03NywxMSArNzcsMTEgQEAgdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbiwgY2xh
c3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29sbGVjdGkKICAgICBp
ZiAoaW5mby5Ib2xkZXIoKS0+SGFzUmVhbE5hbWVkQ2FsbGJhY2tQcm9wZXJ0eShuYW1lKSkKICAg
ICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4gZ2V0TmFtZWRQcm9wZXJ0
eU9mQ29sbGVjdGlvbjxDb2xsZWN0aW9uLCBJdGVtVHlwZT4obmFtZSwgaW5mby5Ib2xkZXIoKSwg
aW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gZ2V0TmFtZWRQcm9wZXJ0eU9mQ29sbGVjdGlvbjxDb2xsZWN0aW9uLCBJdGVtVHlw
ZT4obmFtZSwgaW5mby5Ib2xkZXIoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkp
OwogfQogCiAvLyBSZXR1cm5zIHRoZSBwcm9wZXJ0eSBhdCB0aGUgaW5kZXggb2YgYSBjb2xsZWN0
aW9uLgotdGVtcGxhdGU8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0SW5kZXhlZFByb3BlcnR5T2ZDb2xsZWN0aW9uKHVpbnQz
Ml90IGluZGV4LCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordGVtcGxhdGU8
Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gZ2V0SW5kZXhlZFByb3BlcnR5T2ZDb2xsZWN0aW9uKHVpbnQzMl90IGluZGV4LCB2ODo6
TG9jYWw8djg6Ok9iamVjdD4gb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgLy8gRklYTUU6IEFzc2VydCB0
aGF0IG9iamVjdCBtdXN0IGJlIGEgY29sbGVjdGlvbiB0eXBlLgogICAgIEFTU0VSVChWOERPTVdy
YXBwZXI6Om1heWJlRE9NV3JhcHBlcihvYmplY3QpKTsKQEAgLTkzLDcgKzkzLDcgQEAgdGVtcGxh
dGU8Y2xhc3MgQ29sbGVjdGlvbiwgY2xhc3MgSXRlbVR5cGU+IHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZ2V0SW5kZXgKIC8vIEEgdGVtcGxhdGUgb2YgaW5kZXggaW50ZXJjZXB0b3Igb2Yg
Y29sbGVjdGlvbnMuCiB0ZW1wbGF0ZTxjbGFzcyBDb2xsZWN0aW9uLCBjbGFzcyBJdGVtVHlwZT4g
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb2xsZWN0aW9uSW5kZXhlZFByb3BlcnR5R2V0
dGVyKHVpbnQzMl90IGluZGV4LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewotICAg
IHJldHVybiBnZXRJbmRleGVkUHJvcGVydHlPZkNvbGxlY3Rpb248Q29sbGVjdGlvbiwgSXRlbVR5
cGU+KGluZGV4LCBpbmZvLkhvbGRlcigpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQo
KSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiBnZXRJbmRleGVkUHJvcGVydHlPZkNv
bGxlY3Rpb248Q29sbGVjdGlvbiwgSXRlbVR5cGU+KGluZGV4LCBpbmZvLkhvbGRlcigpLCBpbmZv
LkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIC8vIEdldCBhbiBhcnJheSBjb250
YWluaW5nIHRoZSBuYW1lcyBvZiBpbmRleGVkIHByb3BlcnRpZXMgb2YgSFRNTFNlbGVjdEVsZW1l
bnQgYW5kIEhUTUxGb3JtRWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMTFlNDJjNTRkYzJmOWYyZTVhZDBiNzUyNDg1ODlj
MjJiOWEwZTBhYi4uN2U2ZTRjYTA4N2VhOWQ1MTVmNjU5MjQ2MmM1MjM0NGJkOTRjNDMxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAg
LTQ4OCw3ICs0ODgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gcHJvcGVydHksIGNvbnN0IHY4OjpBYwogICAgIEF0b21pY1N0cmlu
ZyBuYW1lID0gdG9XZWJDb3JlQXRvbWljU3RyaW5nKHByb3BlcnR5KTsKICAgICBIVE1MRG9jdW1l
bnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKICAgICBBU1NFUlQoaHRtbERvY3VtZW50KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVzdWx0ID0gVjhIVE1MRG9jdW1lbnQ6OmdldE5hbWVkUHJvcGVydHkoaHRtbERvY3VtZW50LCBu
YW1lLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkp
OworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBWOEhUTUxEb2N1bWVudDo6Z2V0
TmFtZWRQcm9wZXJ0eShodG1sRG9jdW1lbnQsIG5hbWUsIGluZm8uSG9sZGVyKCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKICAgICBpZiAoIXJlc3VsdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHByb3RvdHlwZSA9IGluZm8uSG9sZGVy
KCktPkdldFByb3RvdHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3Jh
cHBlci5jcHAKaW5kZXggOTZlMGE1NjMxYzE3NWU3ZDU0NTI0NDg3YzU2YWUyOTE2NWY2MDAwZS4u
ZWIyNWM1YjNjNDY0MDgyODhiMDAyOGI2ZmU4OTBiMTFlOGZlNDA3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAgYm9v
bCBWOERPTVdyYXBwZXI6OmlzV3JhcHBlck9mVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIFdyYXBwZXJUeXBlSW5mbyoKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8aW50
ZXJmYWNlTmFtZSo+KHRhcmdldCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiAKIC8vIEEg
SlMgb2JqZWN0IG9mIHR5cGUgRXZlbnRUYXJnZXQgaXMgbGltaXRlZCB0byBhIHNtYWxsIG51bWJl
ciBvZiBwb3NzaWJsZSBjbGFzc2VzLgotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBl
cjo6Y29udmVydEV2ZW50VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGFyZ2V0LCB2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50VGFyZ2V0
VG9WOE9iamVjdChFdmVudFRhcmdldCogdGFyZ2V0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgaWYgKCF0YXJnZXQp
CiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IDNiYjUxZTM1YTVmOTM4OWQzNDdlYWMz
MDA3YjU1NzkwN2YwZmUzYWUuLjM2MmEzNDE3NWVlMTU1NTQ2N2M3YjEyZDc1NDNjYjQxYTFkMDI4
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC04MSwx
MiArODEsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBXcmFwcGVy
VHlwZUluZm8qIGRvbVdyYXBwZXJUeXBlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogCi0gICAg
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9i
amVjdChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBldmVudFRhcmdldCwgdjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQorICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4g
ZXZlbnRUYXJnZXQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4T2JqZWN0KGV2ZW50
VGFyZ2V0LmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogICAgICAgICB9CiAKLSAg
ICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0RXZlbnRUYXJnZXRUb1Y4
T2JqZWN0KEV2ZW50VGFyZ2V0Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250
ZXh0ID0gdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4oKSwgdjg6Oklzb2xhdGUqID0gMCk7CisgICAg
ICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydEV2ZW50VGFyZ2V0VG9WOE9i
amVjdChFdmVudFRhcmdldCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBnZXRFdmVudExpc3RlbmVyKHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBib29sIGlzQXR0cmlidXRlLCBMaXN0ZW5lckxvb2t1cFR5
cGUgbG9va3VwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhU
aHJvd0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhj
ZXB0aW9uLmNwcAppbmRleCBhZTMyNTFjMTBmYTI3YWFkZjE0ZDI2NzY5NDg1N2NlMTYyMmVmZjc3
Li5mMGFkYzAxMmY2NGVjMzc2NDY5ZWRlMzRhZWQ5ZmY4OTliYmIxZjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFRocm93RXhjZXB0aW9uLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBzdGF0aWMgdm9pZCBkb21FeGNlcHRpb25TdGFja1NldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYQogCiAjZGVmaW5lIFRSWV9UT19DUkVBVEVfRVhD
RVBUSU9OKGludGVyZmFjZU5hbWUpIFwKICAgICBjYXNlIGludGVyZmFjZU5hbWUjI1R5cGU6IFwK
LSAgICAgICAgZXhjZXB0aW9uID0gdG9WOChpbnRlcmZhY2VOYW1lOjpjcmVhdGUoZGVzY3JpcHRp
b24pLCB2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpLCBpc29sYXRlKTsgXAorICAgICAgICBleGNl
cHRpb24gPSB0b1Y4KGludGVyZmFjZU5hbWU6OmNyZWF0ZShkZXNjcmlwdGlvbiksIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4oKSwgaXNvbGF0ZSk7IFwKICAgICAgICAgYnJlYWs7CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFRocm93RXhjZXB0aW9uOjpzZXRET01FeGNlcHRpb24oaW50IGVjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggYTkwODQ3NTA0YWY5NmQ5MTQ5NzI4ZTM5ZWU0
ZGFiOTE3ZThhYTgwNC4uZWEyYTNhMWRhY2U2OWVlNzZkNzU1ZWZlMWNhOGFjMmFjOTQ2ZWQ5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChCbG9iKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoQmxvYiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAgLTcxLDcgKzcxLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogCiAgICAgaWYgKCFhcmdzLkxlbmd0aCgpKSB7CiAgICAgICAgIFJlZlB0cjxC
bG9iPiBibG9iID0gQmxvYjo6Y3JlYXRlKCk7Ci0gICAgICAgIHJldHVybiB0b1Y4KGJsb2IuZ2V0
KCksIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgICAgIHJldHVybiB0b1Y4KGJsb2IuZ2V0KCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKICAgICB9CiAKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBmaXJzdEFyZyA9
IGFyZ3NbMF07CkBAIC0xMzgsNyArMTM4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Qmxv
Yjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIH0K
IAogICAgIFJlZlB0cjxCbG9iPiBibG9iID0gYmxvYkJ1aWxkZXItPmdldEJsb2IodHlwZSwgQmxv
YkNvbnN0cnVjdGVkQnlDb25zdHJ1Y3Rvcik7Ci0gICAgcmV0dXJuIHRvVjgoYmxvYi5nZXQoKSwg
YXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gdG9WOChibG9iLmdldCgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1J1bGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTUnVsZUN1c3RvbS5jcHAKaW5kZXggOWZhZDJkNTRl
YzcxNzM1NzBiN2QwZGY5YjhlNmFjNGZjYzFiNWU3ZS4uOGIxMGFkNWNiMDY4NzE0NTUyZTg4M2U3
MjI4YTgxZTUzZjhiNzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q1NTUnVsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q1NTUnVsZUN1c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChDU1NSdWxlKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoQ1NTUnVsZSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1Zh
bHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENTU1Zh
bHVlQ3VzdG9tLmNwcAppbmRleCA1MjMwYmYzMmRjN2I0M2I0YTYxYjQ1NDg4ZDc4MzE1YzJhNjE3
Nzg2Li4yNjJkOGUxZWIzZTk4NDczYzQyODgxNDZiZDE2MWVhMjI5NjYzNTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDU1NWYWx1ZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q1NTVmFsdWVDdXN0b20u
Y3BwCkBAIC00Niw3ICs0Niw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoQ1NTVmFsdWUqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOChDU1NWYWx1ZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAg
ICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRDdXN0b20uY3BwCmluZGV4IDNiOGU0OWQ5OTVkM2ZiYjc5YjZmYWUxMWM3Y2Vh
NjQxMzBlOGU2M2EuLjQ2ZDMzMjQ4M2NjMGJjMDVkYjIzODc0Mzg4OTU2N2YyYTRhZmYwMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyREN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOE9iamVjdChDYW52YXNTdHlsZSogc3R5bGUsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoQ2FudmFzU3R5bGUqIHN0eWxlLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAg
aWYgKHN0eWxlLT5jYW52YXNHcmFkaWVudCgpKQogICAgICAgICByZXR1cm4gdG9WOChzdHlsZS0+
Y2FudmFzR3JhZGllbnQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKQEAgLTczLDcgKzcz
LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHRvQ2FudmFzU3R5bGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzdHJva2VTdHlsZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCogaW1wbCA9IFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOE9iamVjdChpbXBsLT5zdHJv
a2VTdHlsZSgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0b1Y4T2JqZWN0KGltcGwtPnN0cm9rZVN0eWxlKCksIGluZm8u
SG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogdm9pZCBWOENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c3Ryb2tlU3R5bGVBY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnN0cm9rZVN0eWxlQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmZpbGxTdHlsZUFj
Y2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNz
b3JJbmZvJiBpbmZvKQogewogICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCogaW1wbCA9IFY4
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBy
ZXR1cm4gdG9WOE9iamVjdChpbXBsLT5maWxsU3R5bGUoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRp
b25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChp
bXBsLT5maWxsU3R5bGUoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQog
CiB2b2lkIFY4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpmaWxsU3R5bGVBY2Nlc3NvclNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCmluZGV4IDZkYjMzYzVlNDM2
ZWZjOTQwZTc3MWQ0MmU1NGRiZWJmOGMyNmFhNmMuLmQyOWMxYWUwOWZiMzc2ZGJjYzA2ZGRlOTg2
M2YyZWU1YmE5ODlkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENvbnNvbGVDdXN0b20uY3BwCkBAIC05Miw3ICs5Miw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOENvbnNvbGU6Om1lbW9yeUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lCiB7CiAgICAgSU5DX1NUQVRTKCJET00uQ29uc29sZS5tZW1vcnlBY2Nlc3Nv
ckdldHRlciIpOwogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT5tZW1vcnkoKSwgaW5mby5Ib2xkZXIoKS0+
Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChp
bXAtPm1lbW9yeSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IDliNmFjYzQ4MDFhMjkxODZj
NWI2MWE5Y2Q3OGVhNjIzZmEwYzE1N2IuLmU1N2M2ZDFiNDNkNmUxMTgwYzFmOGExN2VjNTE4Njg2
NTgxZTgxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDY1LDcgKzQ2NSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAgICAgaWYgKCFvcGVuZWRXaW5kb3cpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiAKLSAgICByZXR1cm4gdG9WOChvcGVuZWRXaW5kb3cucmVsZWFzZSgpLCBhcmdzLkhv
bGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVy
biB0b1Y4KG9wZW5lZFdpbmRvdy5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjppbmRleGVk
UHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCkBAIC00ODIsNyArNDgyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93
OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHYKIAogICAgIEZy
YW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KTsKICAgICBpZiAo
Y2hpbGQpCi0gICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
KyAgICAgICAgcmV0dXJuIHRvVjgoY2hpbGQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBpbmZv
LkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KQEAgLTUwNCw3ICs1MDQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5k
b3c6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIEF0
b21pY1N0cmluZyBwcm9wTmFtZSA9IHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKTsKICAgICBG
cmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9wTmFtZSk7CiAgICAg
aWYgKGNoaWxkKQotICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUo
KSk7CisgICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogCiAgICAgLy8gU2VhcmNoIElETCBm
dW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgcHJvdG90eXBlCiAgICAgaWYgKCFpbmZvLkhvbGRlcigp
LT5HZXRSZWFsTmFtZWRQcm9wZXJ0eShuYW1lKS5Jc0VtcHR5KCkpCkBAIC01MTgsOCArNTE4LDgg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KICAgICAgICAgICAgIFJlZlB0cjxIVE1MQ29sbGVj
dGlvbj4gaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwogICAgICAgICAg
ICAgaWYgKCFpdGVtcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5o
YXNFeGFjdGx5T25lSXRlbSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVt
cy0+aXRlbSgwKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy5yZWxlYXNlKCksIGlu
Zm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLT5pdGVtKDApLCBpbmZvLkhvbGRlcigp
LCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRvVjgoaXRlbXMu
cmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC01OTksNyArNTk5LDcgQEAgYm9vbCBWOERPTVdpbmRv
dzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHVpbnQz
Ml90IGluZGUKICAgICByZXR1cm4gQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1Rv
RnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCB0YXJnZXQsIERvTm90UmVwb3J0U2VjdXJp
dHlFcnJvcik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERPTVdpbmRvdyogd2lu
ZG93LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRE9NV2luZG93KiB3aW5kb3cs
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKICAgICAvLyBOb3RpY2UgdGhhdCB3ZSBleHBsaWNpdGx5IGlnbm9yZSBjcmVhdGlv
bkNvbnRleHQgYmVjYXVzZSB0aGUgRE9NV2luZG93IGlzIGl0cyBvd24gY3JlYXRpb25Db250ZXh0
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRh
Vmlld0N1c3RvbS5jcHAKaW5kZXggZWRkNmRmNmYyOTc1MDI2MDU0MzFiOTE1YzU5N2Y5MjIyNWI4
MWE5MS4uNmRlOWNlOGUyZGMzNWM1MTY5YTNkZWNiOGZjZWMxNjg0NzI3OTU3OSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9t
LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVy
biBjb25zdHJ1Y3RXZWJHTEFycmF5V2l0aEFycmF5QnVmZmVyQXJndW1lbnQ8RGF0YVZpZXcsIGNo
YXI+KGFyZ3MsICZpbmZvLCB2ODo6a0V4dGVybmFsQnl0ZUFycmF5LCBmYWxzZSk7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KERhdGFWaWV3KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoRGF0YVZpZXcqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwp
CiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKaW5k
ZXggMTNkYmU0OTM4NGNlNzljM2NkZTEzZTk1YTNlN2U0NWFjMzJmMWU4NS4uNTkxMTQ0ZjhiNjU2
ODhkNjM2ODM1YzUxYzJmNDQ5NDhlYTI0YWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcApAQCAtOTIsNyArOTIs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVudDo6ZXZhbHVhdGVDYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNl
dERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCi0gICAgcmV0dXJuIHRvVjgo
cmVzdWx0LnJlbGVhc2UoKSwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkhv
bGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERvY3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKQEAgLTEwOCwxNiArMTA4LDE2IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERv
Y3VtZW50OjpnZXRDU1NDYW52YXNDb250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAg
ICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgaWYg
KHJlc3VsdC0+aXMyZCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQqPihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRl
eHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2Fz
dDxDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQqPihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLCBhcmdz
LkdldElzb2xhdGUoKSk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIGVsc2UgaWYgKHJlc3VsdC0+
aXMzZCgpKQotICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqPihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChzdGF0aWNfY2FzdDxXZWJHTFJlbmRl
cmluZ0NvbnRleHQqPihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
KERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2JqZWN0KQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgYm9vbCBmb3JjZU5ld09iamVjdCkK
IHsKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0
ZSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6
OmNyZWF0ZVRvdWNoTGlzdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAg
dG91Y2hMaXN0LT5hcHBlbmQodG91Y2gpOwogICAgIH0KIAotICAgIHJldHVybiB0b1Y4KHRvdWNo
TGlzdC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjgodG91Y2hMaXN0LnJlbGVhc2UoKSwgYXJncy5I
b2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50TG9jYXRpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlv
bkN1c3RvbS5jcHAKaW5kZXggMTA4YzE5MWM3MzEyODY1MWMxZjgwZWEzODQ4ZmNmZTZmM2VmYzkw
ZC4uODNiY2ViNzNkYzg5YzIzNjc0ZWI2NzYwNWVmMzFmNzU4ZDI4NmMyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRMb2NhdGlvbkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRM
b2NhdGlvbkN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RG9jdW1lbnQ6OmxvY2F0aW9uQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG4KICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKGluZm8uR2V0SXNvbGF0ZSgpKTsKIAogICAgIERP
TVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRvbVdpbmRvdygpOwotICAgIHJldHVybiB0b1Y4
KHdpbmRvdy0+bG9jYXRpb24oKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOCh3aW5kb3ctPmxvY2F0aW9uKCksIGlu
Zm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogdm9pZCBWOERvY3VtZW50Ojps
b2NhdGlvbkFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5Q3VzdG9tLmNwcApp
bmRleCBjNGEzODlhOGY3NDg5ZTc4ODhmYmM2NDBjMTdmNGU1MjFjMGIxMTY3Li5iMzVlMTMzMmE0
ZmI1ZmNjZjUzODBhZGRkY2UzNTVhOTgwZmE1ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhFbnRyeUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRW50
cnkqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChFbnRyeSogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhp
c29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEVudHJ5U3luY0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhFbnRyeVN5bmNDdXN0b20uY3BwCmluZGV4IGE4OTZlOGQzZWU2NmZjMzAwZGMyZjJjYTM5ODQy
MWMzZDZmNjFmMTUuLjU0NWRkMWZjODU5N2IwYTk4NTg4YjYxMTVlMzg0NTU5NDI3ZTQ4MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEVudHJ5U3luY0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RW50cnlT
eW5jQ3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEVudHJ5U3luYyogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiB0b1Y4KEVudHJ5U3luYyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICgh
aW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEV2ZW50Q3VzdG9tLmNwcAppbmRl
eCBlZjU1ZTFiYTZiOGIzMDA3ZDljN2Q2Y2UzNDczOGM4NjQxNWFmNTU1Li43NWU2YmJjYmViMThj
NDJkN2EyMmIxZDY2ZDQ3Y2NkNzhiZjg1NTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhFdmVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RXZlbnRDdXN0b20uY3BwCkBAIC01Myw3ICs1Myw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEV2ZW50OjpkYXRhVHJhbnNmZXJBY2Nlc3NvckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBFdmVudCogZXZlbnQgPSBWOEV2ZW50Ojp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKIAogICAgIGlmIChldmVudC0+aXNEcmFnRXZlbnQoKSkKLSAgICAg
ICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50KS0+Y2xpcGJvYXJk
KCksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmNs
aXBib2FyZCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQpAQCAtNjMsNyArNjMsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFdmVudDo6Y2xpcGJvYXJkRGF0YUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPgogICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwogCiAgICAgaWYgKGV2ZW50LT5pc0NsaXBib2FyZEV2ZW50KCkpCi0gICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PENsaXBib2FyZEV2ZW50Kj4oZXZlbnQpLT5jbGlwYm9hcmQoKSwg
aW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkRXZlbnQqPihldmVudCktPmNs
aXBib2FyZCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQpAQCAtNzIsNyArNzIsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhFdmVudDo6Y2xpcGJvYXJkRGF0YUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPgogICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1l
ID09IGRlc2lyZWRJbnRlcmZhY2UpIFwKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
aW50ZXJmYWNlTmFtZSo+KGV2ZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRXZlbnQqIGV2ZW50LCB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlICppc29sYXRlKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHRvVjgoRXZlbnQqIGV2ZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUgKmlzb2xhdGUpCiB7CiAgICAgaWYgKCFldmVudCkKICAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEZpbGVSZWFkZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKaW5k
ZXggMjNiZGNmYjgyOGZhM2Q5NWE4NDRkMzMyODk4MjVjNTMxNjQyMTQ3Zi4uYjQ5YTE1M2U3ZTFj
NTNkYWYxOGQyNjQwOWIzNGQ2NTM5MGJiN2Q5YSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RmlsZVJlYWRlckN1c3RvbS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RmlsZVJlYWRlcjo6cmVzdWx0QWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgRmlsZVJlYWRlciogaW1wID0gVjhGaWxl
UmVhZGVyOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmIChpbXAtPnJlYWRUeXBlKCkgPT0gRmls
ZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIpCi0gICAgICAgIHJldHVybiB0b1Y4KGlt
cC0+YXJyYXlCdWZmZXJSZXN1bHQoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRvVjgoaW1wLT5hcnJheUJ1ZmZl
clJlc3VsdCgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJu
IHY4U3RyaW5nT3JOdWxsKGltcC0+c3RyaW5nUmVzdWx0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDYzMTU1MzM4MmNjOGRlMWMz
NjQzZDRjMzE0ODRhZjU2YzgwODg1ZjEuLjYyNzA1OGMxODgzZTYwZGJiZjM5YTM3ZGZiZDM1ZDgy
Mjk5NWNlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGdldE5hbWVkSXRlbXMoSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxlY3Rpb24sIEF0b21pY1N0cmlu
ZyBuYW1lLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROYW1lZEl0ZW1z
KEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHJpbmcgbmFtZSwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQog
ewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwogICAgIGNvbGxlY3Rpb24t
Pm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0TmFtZWRJdGVtcyhIVE1MQWxsQ29sbGVjdGlvbiogY29s
bGVjdGlvbiwgQXRvbWljCiAgICAgcmV0dXJuIHRvVjgoVjhOYW1lZE5vZGVzQ29sbGVjdGlvbjo6
Y3JlYXRlKG5hbWVkSXRlbXMpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1zdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldEl0ZW0oSFRNTEFsbENvbGxlY3Rpb24qIGNvbGxl
Y3Rpb24sIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd1bWVudCwgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0SXRlbShIVE1MQWxsQ29sbGVjdGlvbiogY29sbGVjdGlvbiwg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3VtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgdjg6OkxvY2FsPHY4
OjpVaW50MzI+IGluZGV4ID0gYXJndW1lbnQtPlRvQXJyYXlJbmRleCgpOwogICAgIGlmIChpbmRl
eC5Jc0VtcHR5KCkpIHsKQEAgLTgwLDIxICs4MCwyMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0
cgogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIAogICAgIEhUTUxBbGxDb2xsZWN0aW9u
KiBpbXAgPSBWOEhUTUxBbGxDb2xsZWN0aW9uOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAg
ICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwg
aW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gZ2V0TmFtZWRJdGVtcyhpbXAsIHRvV2ViQ29yZUF0b21pY1N0cmluZyhuYW1lKSwg
aW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6aXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24uaXRlbSgp
Iik7CiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGltcCA9IFY4SFRNTEFsbENvbGxlY3Rpb246OnRv
TmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIHJldHVybiBnZXRJdGVtKGltcCwgYXJnc1swXSwg
YXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246
Om5hbWVkSXRlbUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5D
X1NUQVRTKCJET00uSFRNTEFsbENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQWxs
Q29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMo
aW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29u
dGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJl
c3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3Mu
SG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIGlmIChyZXN1bHQuSXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAtMTExLDcgKzExMSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGltcCA9IFY4SFRN
TEFsbENvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdzWzBdLCBhcmdz
LkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAg
ICByZXR1cm4gZ2V0SXRlbShpbXAsIGFyZ3NbMF0sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIGEgc2Vjb25kIGFyZ3VtZW50IGl0IGlzIHRo
ZSBpbmRleCBvZiB0aGUgaXRlbSB3ZSB3YW50LgogICAgIFN0cmluZyBuYW1lID0gdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMF0pOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxBbGxDb2xsZWN0aW9uOjpjYWxsQXNGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1CiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAKICAgICBpZiAoTm9kZSogbm9k
ZSA9IGltcC0+bmFtZWRJdGVtV2l0aEluZGV4KG5hbWUsIGluZGV4LT5VaW50MzJWYWx1ZSgpKSkK
LSAgICAgICAgcmV0dXJuIHRvVjgobm9kZSwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0
KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRvVjgobm9kZSwgYXJncy5I
b2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA3Mzc5MDVlNGNlMGM4NjU3
NWNkMWU4MDlkOWY5NGQzNjBiZDE2MmQ4Li5hYjZjNzVhYjk1YjVjNDYxY2UyNDc0NDAwZjE2MWM1
NzM2MGM4OTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50CiAgICAgICAgIHJldHVybiB2ODo6TnVsbChhcmdz
LkdldElzb2xhdGUoKSk7CiAKICAgICBpZiAocmVzdWx0LT5pczJkKCkpCi0gICAgICAgIHJldHVy
biB0b1Y4KHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KHJlc3VsdCksIGFy
Z3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIHJldHVybiB0b1Y4KHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KHJl
c3VsdCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICNpZiBFTkFCTEUoV0VC
R0wpCiAgICAgZWxzZSBpZiAocmVzdWx0LT5pczNkKCkpIHsKICAgICAgICAgLy8gM0QgY2FudmFz
IGNvbnRleHRzIGNhbiBob2xkIG9uIHRvIGxvdHMgb2YgR1BVIHJlc291cmNlcywgYW5kIHdlIHdh
bnQgdG8gdGFrZSBhbgpAQCAtOTYsNyArOTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudAog
ICAgICAgICBWOFBlcklzb2xhdGVEYXRhKiBwZXJJc29sYXRlRGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmN1cnJlbnQoYXJncy5HZXRJc29sYXRlKCkpOwogICAgICAgICBwZXJJc29sYXRlRGF0YS0+
c2V0U2hvdWxkQ29sbGVjdEdhcmJhZ2VTb29uKCk7CiAKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4UmVzdWx0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQq
PihyZXN1bHQpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgYXJncy5HZXRJc29s
YXRlKCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjhSZXN1bHQgPSB0b1Y4KHN0
YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlc3VsdCksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0
ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwog
ICAgICAgICAgICAgU2NyaXB0T2JqZWN0IGdsQ29udGV4dChzY3JpcHRTdGF0ZSwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OFJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmlu
ZGV4IGNjYmY2MzhiMGM1NjliZTI2Zjc4MmQxOGVjYzljMzZmNDViNDAxZTcuLmRiZmYyOTI0NjE5
M2RjNTI0ZWIyNjkzYTkwNzQ4MmRhNjE4NmY3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGdldE5hbWVkSXRlbXMoSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24s
IEF0b21pY1N0cmluZyBuYW1lLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBn
ZXROYW1lZEl0ZW1zKEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBBdG9taWNTdHJpbmcgbmFt
ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBuYW1lZEl0ZW1zOwogICAgIGNv
bGxlY3Rpb24tPm5hbWVkSXRlbXMobmFtZSwgbmFtZWRJdGVtcyk7CkBAIC02OSwxNCArNjksMTQg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkUHJvcGVydHlH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiAKICAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7Ci0gICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVB
dG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVB
dG9taWNTdHJpbmcobmFtZSksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0K
IAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbUNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uSFRN
TENvbGxlY3Rpb24ubmFtZWRJdGVtKCkiKTsKICAgICBIVE1MQ29sbGVjdGlvbiogaW1wID0gVjhI
VE1MQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJn
c1swXSksIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1w
LCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKIAogICAgIGlmIChyZXN1bHQuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwpAQCAtODQsNyArODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1M
Q29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEhUTUxDb2xs
ZWN0aW9uKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTENvbGxl
Y3Rpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoaW1wbC0+dHlwZSgpID09IERvY0FsbCkKICAg
ICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8SFRNTEFsbENvbGxlY3Rpb24qPihpbXBsKSwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDNiMjQ3
MGUwMjNkZjdmMGVhMDk3Y2UwMWRlYmYwNWE3YWZkM2UxYmMuLmNhMzk3NTQ3ZGIwNDEzMjJhYmY1
ZmUxZjdhNzNkZTAyN2VkMTg5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtODAsNyArODAs
NyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhIVE1MRG9jdW1lbnQ6OndyYXBJblNoYWRvd09i
amVjdCh2ODo6TG9jYWw8djg6Ok9iamVjdD4gdwogICAgIHJldHVybiBzaGFkb3c7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6Z2V0TmFtZWRQcm9wZXJ0eShIVE1M
RG9jdW1lbnQqIGh0bWxEb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OmdldE5hbWVkUHJvcGVydHkoSFRN
TERvY3VtZW50KiBodG1sRG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
CiAgICAgaWYgKCFodG1sRG9jdW1lbnQtPmhhc05hbWVkSXRlbShrZXkuaW1wbCgpKSAmJiAhaHRt
bERvY3VtZW50LT5oYXNFeHRyYU5hbWVkSXRlbShrZXkuaW1wbCgpKSkKICAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CkBAIC0xNzEsNyArMTcxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTERvY3VtZW50OjphbGxBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmEKICAgICBJTkNfU1RBVFMoIkRPTS5IVE1MRG9jdW1lbnQuYWxsLl9nZXQiKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CiAgICAgSFRNTERvY3Vt
ZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoaG9sZGVyKTsKLSAg
ICByZXR1cm4gdG9WOChodG1sRG9jdW1lbnQtPmFsbCgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlv
bkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KGh0bWxEb2N1
bWVudC0+YWxsKCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogdm9p
ZCBWOEhUTUxEb2N1bWVudDo6YWxsQWNjZXNzb3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgVjhIVE1MRG9jdW1lbnQ6OmFsbEFjY2Vz
c29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6CiAgICAg
aW5mby5UaGlzKCktPkZvcmNlU2V0KG5hbWUsIHZhbHVlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2JqZWN0
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSFRNTERvY3VtZW50KiBpbXBsLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJv
b2wgZm9yY2VOZXdPYmplY3QpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDlmZTQ4NGU2N2Ni
MWQxNjY2OWVkZWUxMzYxY2Q4MmRmNGEzZjVkNDAuLjI1MWY3NjIyYzhjYmQ2ODk5MGY4OWQyZmM2
OTIwYWFlMDEwZGFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRWxlbWVudEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRWxl
bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgYm9vbCBmb3JjZU5ld09iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KEhUTUxFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiB7
CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUp
OwpAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRWxlbWVu
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Dbwogdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SFRNTEVsZW1lbnQ6Oml0ZW1WYWx1ZUFjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IEhUTUxFbGVtZW50KiBpbXBsID0gVjhIVE1MRWxlbWVudDo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wbC0+aXRlbVZhbHVlKCkuZ2V0KCksIGluZm8uSG9sZGVy
KCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRv
VjgoaW1wbC0+aXRlbVZhbHVlKCkuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogdm9pZCBWOEhUTUxFbGVtZW50OjppdGVtVmFsdWVBY2Nlc3NvclNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRl
eCA3OTJiM2QwYTExNmExMmQwYTljMjM5YzgxMTU2ZWRjMzU5MmQ4ODYyLi5hYzliOWFmZTI4ZDBh
MGZmZDFlODIwY2RkODk1ZmI0ZTczNjFmNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50
OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGMKICAgICBSZWZQdHI8Tm9k
ZT4gZm9ybUVsZW1lbnQgPSBmb3JtLT5lbGVtZW50cygpLT5pdGVtKGluZGV4KTsKICAgICBpZiAo
IWZvcm1FbGVtZW50KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICByZXR1cm4g
dG9WOChmb3JtRWxlbWVudC5yZWxlYXNlKCksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4
dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjgoZm9ybUVsZW1lbnQucmVs
ZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtRWxlbWVudDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKQEAg
LTc0LDkgKzc0LDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEZvcm1FbGVtZW50Ojpu
YW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAgICBBU1NFUlQoIWVsZW1l
bnRzLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoZWxlbWVudHMuc2l6ZSgpID09IDEpCi0gICAgICAg
IHJldHVybiB0b1Y4KGVsZW1lbnRzLmF0KDApLnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKS0+Q3Jl
YXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIHRvVjgo
ZWxlbWVudHMuYXQoMCkucmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUo
KSk7CiAKLSAgICByZXR1cm4gdG9WOChWOE5hbWVkTm9kZXNDb2xsZWN0aW9uOjpjcmVhdGUoZWxl
bWVudHMpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRl
KCkpOworICAgIHJldHVybiB0b1Y4KFY4TmFtZWROb2Rlc0NvbGxlY3Rpb246OmNyZWF0ZShlbGVt
ZW50cyksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEZyYW1lU2V0RWxlbWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAwMGNk
YzNkMWNiYWZhNmI0MmEyYzhlMjM0OWM2NTE0M2YwYjViYWI2Li5mOGJmMzU1OGYzMzE5MTdiMmU1
MmVjM2VjYmY3OWQ3NzY3YzMzN2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRnJhbWVTZXRFbGVtZW50Q3VzdG9tLmNw
cApAQCAtNTgsNyArNTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRnJhbWVTZXRF
bGVtZW50OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6UwogICAgICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKLSAgICByZXR1cm4gdG9WOChkb2N1bWVudC0+ZG9tV2luZG93
KCksIGluZm8uSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuIHRvVjgoZG9jdW1lbnQtPmRvbVdpbmRvdygpLCBpbmZvLkhvbGRlcigpLCBp
bmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDFhOTY3ODJhODYxNDNkMDZhYTkzMmNj
MjdkZTVhNzdmNjE0ZjBhOGEuLjllOGRmZTgzMDM5NzMzYTc5YTgzOWQzZWU5YjA4ZWQyY2UxMzkz
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNjksNyArNjks
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZwogICAgIC8vIEZJWE1FOiBUaGUgY29ycmVjdCB3
YXkgdG8gZG8gdGhpcyB3b3VsZCBiZSB0byBtYWtlIEhUTUxJbWFnZUVsZW1lbnQgZGVyaXZlIGZy
b20KICAgICAvLyBBY3RpdmVET01PYmplY3QgYW5kIHVzZSBpdHMgaW50ZXJmYWNlIHRvIGtlZXAg
aXRzIHdyYXBwZXIgYWxpdmUuIFRoZW4gd2Ugd291bGQKICAgICAvLyByZW1vdmUgdGhpcyBjb2Rl
IGFuZCB0aGUgc3BlY2lhbCBjYXNlIGluIGlzT2JzZXJ2YWJsZVRocm91Z2hET00uCi0gICAgdG9W
OChkb2N1bWVudCwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICB0b1Y4KGRvY3VtZW50LCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xh
dGUoKSk7CiAKICAgICBpbnQgd2lkdGg7CiAgICAgaW50IGhlaWdodDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTGlua0VsZW1lbnRD
dXN0b20uY3BwCmluZGV4IDIwOGY1ZTQ2N2I0ODYyYmUzMmQzODcyNzNjZmI3NjQ4NmI2YjY2NWYu
LjY5OWY4NzUyYzcyYjQ0ODE3ZmU4NzcyOTE5NDkzYWQ3NmQwNjJhYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxMaW5rRWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTExpbmtFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtNDEsNyArNDEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MTGlua0VsZW1lbnQ6OnNpemVzQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbgog
ewogICAgIElOQ19TVEFUUygiRE9NLkhUTUxMaW5rRWxlbWVudC5zaXplcy5fZ2V0Iik7CiAgICAg
SFRNTExpbmtFbGVtZW50KiBpbXAgPSBWOEhUTUxMaW5rRWxlbWVudDo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7Ci0gICAgcmV0dXJuIHRvVjgoaW1wLT5zaXplcygpLCBpbmZvLkhvbGRlcigpLT5D
cmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KGlt
cC0+c2l6ZXMoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2b2lk
IFY4SFRNTExpbmtFbGVtZW50OjpzaXplc0FjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDFl
NjlhNGJhN2MzNGYwNmY3N2FmMTE1Y2FiMWY5ZTU1NGI4ZTg2YWMuLjQzN2Q3ZDQ4NjMwYjQ0MmY0
NTVhOTc0NmJlNWY1NThlMWMyMzgxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3Vz
dG9tLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxP
cHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGluCiAgICAg
aWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJu
IHRvVjgocmVzdWx0LnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBp
bmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKHVpbnQz
Ml90IGluZGV4LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxPdXRwdXRFbGVtZW50Q3VzdG9tLmNwcAppbmRleCA2OTRiZjA0YThi
ZjI4Y2M0ZGZkYzczMzYxNTEwMGEyNDBmY2E4YTY4Li5iYTUxYTFkMTcyMWMzNGNmYjU0ODhiZmU1
OGIyMjU5OTYwNjI4ZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MT3V0cHV0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE91dHB1dEVsZW1lbnRDdXN0b20uY3BwCkBAIC00MSw3
ICs0MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPdXRwdXRFbGVtZW50OjpodG1s
Rm9yQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTCiB7CiAgICAgSU5DX1NUQVRTKCJET00u
SFRNTE91dHB1dEVsZW1lbnQuaHRtbEZvci5fZ2V0Iik7CiAgICAgSFRNTE91dHB1dEVsZW1lbnQq
IGltcCA9IFY4SFRNTE91dHB1dEVsZW1lbnQ6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAg
IHJldHVybiB0b1Y4KGltcC0+aHRtbEZvcigpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRl
eHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KGltcC0+aHRtbEZvcigp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKIHZvaWQgVjhIVE1MT3V0
cHV0RWxlbWVudDo6aHRtbEZvckFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBmMjdhYWZiMWE0NjgxYjZh
MjVkMDBjYTJmODUwMDFjY2I4OTc4MmJlLi45MTljOTEzNTA2MDUwODg2YjMxYWNkMTkxNDdiMDZk
MGI5YjI0NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjppbmRleGVkUHJv
cGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogCi0gICAgcmV0dXJuIHRvVjgocmVzdWx0LnJlbGVhc2UoKSwg
aW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAg
ICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElz
b2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50
OjppbmRleGVkUHJvcGVydHlTZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKaW5kZXggMTE2
NTAxYjM4NTNkZGM2OGQ3MjMwNmUxMThhODZkMWZhNGUyNTY1ZC4uZTYyNTdlZWMzN2Y2YTExMmMw
NjUzODRhMjAxZDlmYWE3ZTgzNjdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURC
S2V5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQktl
eUN1c3RvbS5jcHAKaW5kZXggYzBiOTc5YmFjYmIxZGU4NzE1M2YyNjRhMDMwYjI4NGRjZjcwZjYy
Mi4uMjM0MDAzMTQ3MGZlNDU4YWU2MmU3YTkwM2YxMTU3Y2FlYmY5ZjI4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCS2V5Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJLZXlDdXN0b20uY3BwCkBA
IC0zOCw3ICszOCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoSURCS2V5KiBrZXksIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChJREJLZXkqIGtleSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEltYWdlRGF0YUN1c3RvbS5jcHAKaW5kZXggMWI5NDY5YzgzYWIxZGM2
NDU0NWFiMTQzYmRjMjE0MDMxYTRmYjdjNi4uODkwZTQxMjZhYjE5ZjE4NjNlNGEwOGE2ZTA1ZTll
YzEzNTM4NzhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW1hZ2VEYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbWFnZURhdGFDdXN0b20uY3BwCkBAIC0zNSw3ICszNSw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VEYXRhKiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSW1hZ2VEYXRhKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9j
YXRpb25DdXN0b20uY3BwCmluZGV4IDUzMmUwM2FlZmFmMTY5ZjUyMzkxNWIwOGE2MTljMTk2MjNl
NzZjNmUuLjQ1ZmRjZTc5YjI0Y2RjMGVmN2MyNmRiODI5YTZhNjBhMDVmYTY4NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHAKQEAgLTI3MCw3ICsyNzAsNyBAQCBib29sIFY4TG9jYXRpb246Om5hbWVkU2VjdXJpdHlD
aGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYQogICAgIHJl
dHVybiBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTG9jYXRpb24qIGltcGwsIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChMb2NhdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlm
ICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVs
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVz
c2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODBmNTNmNWFlOWUxMDAzY2EyYTE5ZjY4
MzVjNmMyZmMwYjEyYzI5OS4uNzhjZjRmMzE5ZjZmNjhhMmJkMjM0YWE3ZmFjNmE2YWY1YjA0YTk5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHAKQEAgLTY5LDggKzY5LDggQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAvLyBDcmVhdGUgcmVmZXJlbmNlcyBmcm9tIHRo
ZSBNZXNzYWdlQ2hhbm5lbCB3cmFwcGVyIHRvIHRoZSB0d28KICAgICAvLyBNZXNzYWdlUG9ydCB3
cmFwcGVycyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgTWVzc2FnZVBvcnQgd3JhcHBlcnMKICAgICAv
LyBzdGF5IGFsaXZlIGFzIGxvbmcgYXMgdGhlIE1lc3NhZ2VDaGFubmVsIHdyYXBwZXIgaXMgYXJv
dW5kLgotICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2UobWVzc2FnZUNo
YW5uZWwsICJwb3J0MSIsIHRvVjgob2JqLT5wb3J0MSgpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlv
bkNvbnRleHQoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldE5h
bWVkSGlkZGVuUmVmZXJlbmNlKG1lc3NhZ2VDaGFubmVsLCAicG9ydDIiLCB0b1Y4KG9iai0+cG9y
dDIoKSwgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgp
KSk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZShtZXNzYWdlQ2hh
bm5lbCwgInBvcnQxIiwgdG9WOChvYmotPnBvcnQxKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0
SXNvbGF0ZSgpKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJlZmVyZW5jZSht
ZXNzYWdlQ2hhbm5lbCwgInBvcnQyIiwgdG9WOChvYmotPnBvcnQyKCksIGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAKICAgICAvLyBTZXR1cCB0aGUgc3RhbmRhcmQgd3JhcHBl
ciBvYmplY3QgaW50ZXJuYWwgZmllbGRzLgogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBl
cihtZXNzYWdlQ2hhbm5lbCwgJmluZm8sIG9iai5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcApp
bmRleCAzMTFjNjFlMWQ4ZjZiMWQ2ZjQ1ZTgwZmNlNWEzMmJkYWJkMWM1YjNmLi42ZTViYzU2N2My
ZmI3ODY4ZDdhYTY4YjVlZmIyZDBiZGU0MmQ3ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlRXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAg
LTcyLDExICs3MiwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OmRh
dGFBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIH0KIAogICAgIGNh
c2UgTWVzc2FnZUV2ZW50OjpEYXRhVHlwZUJsb2I6Ci0gICAgICAgIHJlc3VsdCA9IHRvVjgoZXZl
bnQtPmRhdGFBc0Jsb2IoKSwgaW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8u
R2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgcmVzdWx0ID0gdG9WOChldmVudC0+ZGF0YUFzQmxvYigp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBNZXNzYWdlRXZlbnQ6OkRhdGFUeXBlQXJyYXlCdWZmZXI6Ci0gICAgICAgIHJlc3Vs
dCA9IHRvVjgoZXZlbnQtPmRhdGFBc0FycmF5QnVmZmVyKCksIGluZm8uSG9sZGVyKCktPkNyZWF0
aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgIHJlc3VsdCA9IHRvVjgo
ZXZlbnQtPmRhdGFBc0FycmF5QnVmZmVyKCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0xMDAsNyArMTAwLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUV2ZW50Ojpwb3J0c0FjY2Vzc29yR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPgogCiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gcG9ydEFycmF5ID0g
djg6OkFycmF5OjpOZXcocG9ydHNDb3B5LnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwb3J0c0NvcHkuc2l6ZSgpOyArK2kpCi0gICAgICAgIHBvcnRBcnJheS0+U2V0KHY4SW50
ZWdlcihpLCBpbmZvLkdldElzb2xhdGUoKSksIHRvVjgocG9ydHNDb3B5W2ldLmdldCgpLCBpbmZv
LkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpKTsKKyAgICAg
ICAgcG9ydEFycmF5LT5TZXQodjhJbnRlZ2VyKGksIGluZm8uR2V0SXNvbGF0ZSgpKSwgdG9WOChw
b3J0c0NvcHlbaV0uZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKSk7CiAK
ICAgICByZXR1cm4gcG9ydEFycmF5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1pY3JvRGF0YUl0ZW1WYWx1ZUN1c3RvbS5jcHAK
aW5kZXggYzkzZmNlOTU5Zjc1ODY2ZDM5MjFiYjg1YTgzYTYyNDhkNTA2ODdiNS4uNmMyODQ0NzQ4
NTc3Y2I1MzJkNTBhZGIzZDEzMzQ0MDAzYWM4YTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWljcm9EYXRhSXRlbVZhbHVlQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNaWNyb0RhdGFJdGVtVmFsdWVD
dXN0b20uY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTWljcm9EYXRhSXRlbVZhbHVlKiBpdGVtVmFsdWUsIHY4
OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChNaWNyb0RhdGFJdGVtVmFsdWUqIGl0ZW1W
YWx1ZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogewogICAgIGlmICghaXRlbVZhbHVlKQogICAgICAgICByZXR1cm4gdjg6Ok51
bGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5h
bWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhOYW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4IGE1NjMxMTk0ZWVmNmM5YmY4ZGRkNzZmMWNi
Yjc1NjhlZDlkOTI2YTAuLmE1YjlmMjRiYjg5OTY3YjM5NmI0YWM1NmJlM2MyNjZmN2YzZGFmMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5hbWVkTm9k
ZU1hcEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TmFtZWROb2RlTWFwQ3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhOYW1lZE5vZGVNYXA6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRl
eCwgY29ucwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IAotICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8uSG9sZGVyKCktPkNyZWF0
aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjgocmVzdWx0
LnJlbGVhc2UoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOYW1lZE5vZGVNYXA6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCkBA
IC02Nyw3ICs2Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5hbWVkTm9kZU1hcDo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KICAgICBpZiAoIXJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4gdG9WOChyZXN1bHQu
cmVsZWFzZSgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8uSG9sZGVyKCks
IGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRl
eCAyNGIwMTIwN2EyODZjY2MzYmFlOWJhYTEwYzlhNGVjMjIwYjgxOTQxLi42ZWY0NmRhZjc4Njcz
YzdkYjgxNDNmNGQwNzI3Nzc3ZjRhOTg1M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjg6Ok51bGwoYXJncy5HZXRJc29sYXRlKCkp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSogaW1wbCwgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
Ym9vbCBmb3JjZU5ld09iamVjdCkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2Rl
KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCiB7CiAgICAgaWYgKCFpbXBsKQogICAg
ICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IDA1
MmE0OWRlOWVjYWUyOTFjMWI4NTY5ZTU5YTkxNjljMTJlNWU5MjUuLjRlOGNiNTU3OTQ1ODM2MmE5
N2Q5MzU1MDQwNzE3ZDA2OWFlMDI5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZUxpc3Q6Om5hbWVkUHJvcGVydHlHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJu
IHY4VW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBpbmZv
LkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgIHJl
dHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0
ZSgpKTsKIH0KIAogdm9pZCBWOE5vZGVMaXN0Ojp2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0b3Jl
KiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZp
Y2F0aW9uQ2VudGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKaW5kZXggZWZhNTU2NzdiMmFlMmZmYWZk
MTg2NWI2ZTViYTJjMjQ5MjRhZDBkMS4uMDk5MWZiMTg4YmM0NjkwYTY5NDI5NThhMTJiOTVmOTg2
ZmQ4MTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCkBAIC01OSw3ICs1OSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlSFRN
TE5vdGlmaWNhdGlvbkNhbGxiYWNrKGNvbnN0CiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRp
b24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIG5vdGlmaWNhdGlvbi0+cmVmKCk7Ci0g
ICAgcmV0dXJuIHRvVjgobm90aWZpY2F0aW9uLmdldCgpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlv
bkNvbnRleHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KG5vdGlmaWNh
dGlvbi5nZXQoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZU5vdGlmaWNhdGlv
bkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC03NCw3ICs3NCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlTm90aWZpY2F0
aW9uQ2FsbGJhY2soY29uc3Qgdjg6CiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIG5vdGlmaWNhdGlvbi0+cmVmKCk7Ci0gICAgcmV0
dXJuIHRvVjgobm90aWZpY2F0aW9uLmdldCgpLCBhcmdzLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRl
eHQoKSwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB0b1Y4KG5vdGlmaWNhdGlvbi5n
ZXQoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBlcmZvcm1hbmNlQ3VzdG9tLmNwcAppbmRleCBhY2Ew
ODExNTIyZWRkZTlhYzc1N2JiZGNlMGJiNTE2NmU4NjlmNTc2Li43Y2ZlM2QzNWZmNmI0ZGUxOGM0
ZTMyN2Y4NzAzNzI3Yzk2MTFmN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFBlcmZvcm1hbmNlOjptZW1vcnlBY2Nlc3Nvckdl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4KIHsKICAgICBJTkNfU1RBVFMoIkRPTS5QZXJmb3Jt
YW5jZS5tZW1vcnlBY2Nlc3NvckdldHRlciIpOwogICAgIFBlcmZvcm1hbmNlKiBpbXAgPSBWOFBl
cmZvcm1hbmNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICByZXR1cm4gdG9WOChpbXAt
Pm1lbW9yeSgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0b1Y4KGltcC0+bWVtb3J5KCksIGluZm8uSG9sZGVyKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UGVyZm9ybWFuY2VFbnRyeUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5j
ZUVudHJ5Q3VzdG9tLmNwcAppbmRleCA5ZDY3MDI5YmYzNzUyMmJmNDU0MmMzNTRkMTFmYzY4NGUw
N2RiMDk5Li4zOTdlM2Y5YWU1YzA0M2M2MGUyZjBiNzI4YjdjMTFmMDk1MmJkMjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5jZUVudHJ5
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhQZXJm
b3JtYW5jZUVudHJ5Q3VzdG9tLmNwcApAQCAtNDMsNyArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBlcmZvcm1hbmNlRW50cnkqIGlt
cGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQZXJmb3JtYW5jZUVudHJ5KiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFBvcFN0YXRl
RXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAKaW5kZXggM2FhY2Q0YTlhODFkMjAyODFjMzJjNDkzNzYzODUy
YThkYTA3NmM5Yy4uMzcwOWEwY2U5MTQ4OTc4NTNiYjZhZWIzODJjMWE3NWQ5ZThlYjc4MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9wU3RhdGVFdmVu
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4UG9w
U3RhdGVFdmVudEN1c3RvbS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4UG9wU3RhdGVFdmVudDo6c3RhdGVBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4KICAgICBib29sIGlzU2FtZVN0YXRlID0gaGlzdG9yeS0+aXNTYW1lQXNDdXJyZW50U3Rh
dGUoZXZlbnQtPnNlcmlhbGl6ZWRTdGF0ZSgpKTsKIAogICAgIGlmIChpc1NhbWVTdGF0ZSkgewot
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4SGlzdG9yeSA9IHRvVjgoaGlzdG9yeSwg
aW5mby5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGluZm8uR2V0SXNvbGF0ZSgpKS5Bczx2
ODo6T2JqZWN0PigpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4SGlzdG9yeSA9
IHRvVjgoaGlzdG9yeSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpLkFzPHY4OjpP
YmplY3Q+KCk7CiAgICAgICAgIGlmICghaGlzdG9yeS0+c3RhdGVDaGFuZ2VkKCkpIHsKICAgICAg
ICAgICAgIHJlc3VsdCA9IHY4SGlzdG9yeS0+R2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0
eU5hbWU6OnN0YXRlKCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuSXNFbXB0eSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rp
b25TeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNR
TFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKaW5kZXggMWFlYzUyMzczZjg1MTc5NjBmNGY0Mzdj
NDNmNjc2ODI3ZjNjNzczNC4uMWFiNjYyNjc4ZmVjYjQ1ZDNiOWI2MTIxNGQ1ODRhOWIwNzRjYWYz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgU1FMVHJhbnNhY3Rpb25TeW5jKiB0cmFuc2FjdGlv
biA9IFY4U1FMVHJhbnNhY3Rpb25TeW5jOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQg
PSB0b1Y4KHRyYW5zYWN0aW9uLT5leGVjdXRlU1FMKHN0YXRlbWVudCwgc3FsVmFsdWVzLCBlYyks
IGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlc3VsdCA9IHRvVjgodHJhbnNhY3Rpb24tPmV4ZWN1
dGVTUUwoc3RhdGVtZW50LCBzcWxWYWx1ZXMsIGVjKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBmZmZlYzRiZDk1ZDIz
ODI4M2E1NGQ4MmM0ZmE5NGNjZWRiYWJlZDlkLi5hNmY0MWI2ZGI1MjY1YWEwZDZiYWEyZmZjOGM2
ODcyYzQ0OTNhY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRG9jdW1l
bnQqIGltcGwsIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VOZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2JqZWN0KQogewog
ICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0VsZW1l
bnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxl
bWVudEN1c3RvbS5jcHAKaW5kZXggNTJmNDg1MWU4ZTE4OWUzOGYzZGM1YWMyODNkNzFiODNmNzJm
ZmY1ZS4uODg2MjExODgwYTQxZWYwMjZjMTFlMjQ3OTU5OTczZDViNTZkYzU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRWxlbWVudEN1
c3RvbS5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdFbGVtZW50KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGZvcmNl
TmV3T2JqZWN0KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHRWxlbWVudCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBib29sIGZvcmNlTmV3T2JqZWN0KQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0
dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR1BhdGhTZWdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHAKaW5kZXggYzAxYjIw
MzEwNTU3MmNjNTg1MWFiMzI0NWYxNzQxZDQwNThkZGE4Ny4uZDQ1Y2JlMjRiZjczNWIyNGI3MTgx
NTI1OWI4OGZjN2NlMzQxZWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHUGF0aFNlZ0N1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTVkdQ
YXRoU2VnKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU1ZHUGF0aFNl
ZyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKaW5kZXggNjYwYmRjMTU0YzZk
NmI5Y2JkMDc0NTQ0Y2E3NDQ2ODZiN2ViY2E3MS4uZjJmYTcyN2NmOGM4M2JjN2Y2MDA1NTA3NzY2
NzMzODE4M2QxNDA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZUN1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChTY3Jp
cHRQcm9maWxlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoU2NyaXB0
UHJvZmlsZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIHY4
TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcAppbmRl
eCBkMTBmMzEyMGY5MGJjNjY4ZjhmMzVmNWFmMTU2MzBmYzMyMjIyM2I0Li5jYjAzMzJjOGRjYWQ3
MTQ5MGExYTRjYzYzYzIyNzE5OGQyZGEzMjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U2NyaXB0UHJvZmlsZU5vZGVDdXN0b20u
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNjcmlwdFByb2Zp
bGVOb2RlOjpjYWxsVUlEQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTCiAgICAgcmV0dXJu
IHY4OjpOdW1iZXI6Ok5ldyhpbXAtPmNhbGxVSUQoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KFNjcmlwdFByb2ZpbGVOb2RlKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoU2NyaXB0UHJvZmlsZU5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWlt
cGwpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20u
Y3BwCmluZGV4IGRjYmUxNjEzNjE5NmEzY2FkMGNkNTU2NDE5ZGUzNmI2ODU0NzlmN2UuLmVkMDVm
YTJiZDAzYTlmZmNkZTg4MTczMjcyOWZlNTM4ZDI0NDRmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRDdXN0b20uY3BwCkBA
IC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHRvVjgoU3R5bGVTaGVldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFN0eWxlU2hlZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIWltcGwpCiAgICAgICAg
IHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAK
aW5kZXggYWFjNjIwMTRhMGRjMmE2Y2E3ZTc4ZDBmMDAwOTA2MjQxZDY2OWMxZC4uMWRkMjMwNzQ3
NjQ3ODRjNjFiMTgxYjI2YjJjNzg1OWJiZjVkYjQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVTaGVldExpc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxlU2hlZXRMaXN0Q3VzdG9tLmNw
cApAQCAtNTEsNyArNTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTdHlsZVNoZWV0TGlz
dDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZwogICAgIGlmICghaXRl
bSkKICAgICAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAKLSAgICByZXR1cm4gdG9WOChpdGVt
LT5zaGVldCgpLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHJldHVybiB0b1Y4KGl0ZW0tPnNoZWV0KCksIGluZm8uSG9sZGVyKCksIGlu
Zm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VHJhY2tFdmVudEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9t
LmNwcAppbmRleCBhOTYyYTgwZDJhN2RkOWJlYmJmOWE5NGE0ZjlmOGM1ZDQzMTRhNWM3Li44ZDE5
ZWViNGJiMWRlYWMwZjY1NTExMGU1YTQ0MDM3NGJmOTEwYmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhUcmFja0V2ZW50Q3VzdG9tLmNwcApA
QCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUcmFja0V2ZW50Ojp0cmFj
a0FjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogICAgICAgICBicmVhazsK
ICAgICAgICAgCiAgICAgY2FzZSBUcmFja0Jhc2U6OlRleHRUcmFjazoKLSAgICAgICAgcmV0dXJu
IHRvVjgoc3RhdGljX2Nhc3Q8VGV4dFRyYWNrKj4odHJhY2spLCBpbmZvLkhvbGRlcigpLT5DcmVh
dGlvbkNvbnRleHQoKSwgaW5mby5HZXRJc29sYXRlKCkpOworICAgICAgICByZXR1cm4gdG9WOChz
dGF0aWNfY2FzdDxUZXh0VHJhY2sqPih0cmFjayksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRyYWNrQmFzZTo6QXVkaW9UcmFj
azoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IDgyYzM2YTJkZWY3
NGNhOGM1MWI0ODlmMDEzNWNjYjRlY2IxOGVmNjcuLjA2MzU0OTY5ZDQ0ZDNjNDZhNTkzZGRhNTU0
YTM1ZDJmMTA4Njk2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcApA
QCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyBpbnQqIGpzQXJyYXlUb0ludEFycmF5KHY4OjpIYW5k
bGU8djg6OkFycmF5PiBhcnJheSwgdWludDMyX3QgbGVuKQogICAgIHJldHVybiBkYXRhOwogfQog
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhPYmplY3QoY29uc3QgV2ViR0xHZXRJ
bmZvJiBpbmZvLCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0
KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbywgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHN3aXRjaCAoaW5mby5nZXRU
eXBlKCkpIHsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVCb29sOgpAQCAtMTcyLDM5ICsx
NzIsMzkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4T2JqZWN0KFdlYkdMRXh0
ZW5zaW9uKiBleHRlbnNpb24sIHY4OjpIYW5kbGU8djgKICAgICBjb25zdCBjaGFyKiByZWZlcmVu
Y2VOYW1lID0gMDsKICAgICBzd2l0Y2ggKGV4dGVuc2lvbi0+Z2V0TmFtZSgpKSB7CiAgICAgY2Fz
ZSBXZWJHTEV4dGVuc2lvbjo6V2ViS2l0V2ViR0xMb3NlQ29udGV4dE5hbWU6Ci0gICAgICAgIGV4
dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xMb3NlQ29udGV4dCo+KGV4dGVu
c2lvbiksIGNvbnRleHRPYmplY3QtPkNyZWF0aW9uQ29udGV4dCgpLCBpc29sYXRlKTsKKyAgICAg
ICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTExvc2VDb250ZXh0Kj4o
ZXh0ZW5zaW9uKSwgY29udGV4dE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5h
bWUgPSAid2ViS2l0V2ViR0xMb3NlQ29udGV4dE5hbWUiOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWNOYW1lOgotICAg
ICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0YXRpY19jYXN0PEVYVFRleHR1cmVGaWx0ZXJB
bmlzb3Ryb3BpYyo+KGV4dGVuc2lvbiksIGNvbnRleHRPYmplY3QtPkNyZWF0aW9uQ29udGV4dCgp
LCBpc29sYXRlKTsKKyAgICAgICAgZXh0ZW5zaW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMqPihleHRlbnNpb24pLCBjb250ZXh0T2JqZWN0LCBp
c29sYXRlKTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJleHRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWNOYW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VT
U3RhbmRhcmREZXJpdmF0aXZlc05hbWU6Ci0gICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8T0VTU3RhbmRhcmREZXJpdmF0aXZlcyo+KGV4dGVuc2lvbiksIGNvbnRleHRP
YmplY3QtPkNyZWF0aW9uQ29udGV4dCgpLCBpc29sYXRlKTsKKyAgICAgICAgZXh0ZW5zaW9uT2Jq
ZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxPRVNTdGFuZGFyZERlcml2YXRpdmVzKj4oZXh0ZW5zaW9u
KSwgY29udGV4dE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAib2Vz
U3RhbmRhcmREZXJpdmF0aXZlc05hbWUiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkdM
RXh0ZW5zaW9uOjpPRVNUZXh0dXJlRmxvYXROYW1lOgotICAgICAgICBleHRlbnNpb25PYmplY3Qg
PSB0b1Y4KHN0YXRpY19jYXN0PE9FU1RleHR1cmVGbG9hdCo+KGV4dGVuc2lvbiksIGNvbnRleHRP
YmplY3QtPkNyZWF0aW9uQ29udGV4dCgpLCBpc29sYXRlKTsKKyAgICAgICAgZXh0ZW5zaW9uT2Jq
ZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxPRVNUZXh0dXJlRmxvYXQqPihleHRlbnNpb24pLCBjb250
ZXh0T2JqZWN0LCBpc29sYXRlKTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJvZXNUZXh0dXJl
RmxvYXROYW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6T0VT
VmVydGV4QXJyYXlPYmplY3ROYW1lOgotICAgICAgICBleHRlbnNpb25PYmplY3QgPSB0b1Y4KHN0
YXRpY19jYXN0PE9FU1ZlcnRleEFycmF5T2JqZWN0Kj4oZXh0ZW5zaW9uKSwgY29udGV4dE9iamVj
dC0+Q3JlYXRpb25Db250ZXh0KCksIGlzb2xhdGUpOworICAgICAgICBleHRlbnNpb25PYmplY3Qg
PSB0b1Y4KHN0YXRpY19jYXN0PE9FU1ZlcnRleEFycmF5T2JqZWN0Kj4oZXh0ZW5zaW9uKSwgY29u
dGV4dE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUgPSAib2VzVmVydGV4
QXJyYXlPYmplY3ROYW1lIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lv
bjo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWU6Ci0gICAgICAgIGV4dGVuc2lvbk9iamVjdCA9
IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyo+KGV4dGVuc2lvbiksIGNv
bnRleHRPYmplY3QtPkNyZWF0aW9uQ29udGV4dCgpLCBpc29sYXRlKTsKKyAgICAgICAgZXh0ZW5z
aW9uT2JqZWN0ID0gdG9WOChzdGF0aWNfY2FzdDxXZWJHTERlYnVnUmVuZGVyZXJJbmZvKj4oZXh0
ZW5zaW9uKSwgY29udGV4dE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIHJlZmVyZW5jZU5hbWUg
PSAid2ViR0xEZWJ1Z1JlbmRlcmVySW5mb05hbWUiOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFdlYkdMRXh0ZW5zaW9uOjpXZWJHTERlYnVnU2hhZGVyc05hbWU6Ci0gICAgICAgIGV4dGVuc2lv
bk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRlbnNpb24p
LCBjb250ZXh0T2JqZWN0LT5DcmVhdGlvbkNvbnRleHQoKSwgaXNvbGF0ZSk7CisgICAgICAgIGV4
dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xEZWJ1Z1NoYWRlcnMqPihleHRl
bnNpb24pLCBjb250ZXh0T2JqZWN0LCBpc29sYXRlKTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9
ICJ3ZWJHTERlYnVnU2hhZGVyc05hbWUiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkdM
RXh0ZW5zaW9uOjpXZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05hbWU6Ci0gICAgICAg
IGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMqPihleHRlbnNpb24pLCBjb250ZXh0T2JqZWN0LT5DcmVhdGlvbkNvbnRleHQoKSwgaXNv
bGF0ZSk7CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMqPihleHRlbnNpb24pLCBjb250ZXh0T2JqZWN0LCBpc29sYXRl
KTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJ3ZWJLaXRXZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQ05hbWUiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJL
aXRXZWJHTERlcHRoVGV4dHVyZU5hbWU6Ci0gICAgICAgIGV4dGVuc2lvbk9iamVjdCA9IHRvVjgo
c3RhdGljX2Nhc3Q8V2ViR0xEZXB0aFRleHR1cmUqPihleHRlbnNpb24pLCBjb250ZXh0T2JqZWN0
LT5DcmVhdGlvbkNvbnRleHQoKSwgaXNvbGF0ZSk7CisgICAgICAgIGV4dGVuc2lvbk9iamVjdCA9
IHRvVjgoc3RhdGljX2Nhc3Q8V2ViR0xEZXB0aFRleHR1cmUqPihleHRlbnNpb24pLCBjb250ZXh0
T2JqZWN0LCBpc29sYXRlKTsKICAgICAgICAgcmVmZXJlbmNlTmFtZSA9ICJ3ZWJLaXRXZWJHTERl
cHRoVGV4dHVyZU5hbWUiOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yNDcsNyArMjQ3LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRPYmplY3RQYXJhbWV0ZXIoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncywgT2JqZWMKICAgICB9CiAgICAgaWYgKGVjKQogICAgICAgICBy
ZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJu
IHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBhcmdzLkhvbGRlcigp
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHN0YXRpYyBXZWJHTFVuaWZvcm1Mb2NhdGlvbiog
dG9XZWJHTFVuaWZvcm1Mb2NhdGlvbih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIGJvb2wm
IG9rKQpAQCAtMjg3LDcgKzI4Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzQ2FsbGJhY2soY29uc3QKICAgICAgICAg
cmV0dXJuIHY4OjpOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICB2ODo6TG9jYWw8djg6OkFy
cmF5PiBhcnJheSA9IHY4OjpBcnJheTo6TmV3KHNoYWRlcnMuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpaSA9IDA7IGlpIDwgc2hhZGVycy5zaXplKCk7ICsraWkpCi0gICAgICAgIGFycmF5LT5T
ZXQodjhJbnRlZ2VyKGlpLCBhcmdzLkdldElzb2xhdGUoKSksIHRvVjgoc2hhZGVyc1tpaV0uZ2V0
KCksIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSkp
OworICAgICAgICBhcnJheS0+U2V0KHY4SW50ZWdlcihpaSwgYXJncy5HZXRJc29sYXRlKCkpLCB0
b1Y4KHNoYWRlcnNbaWldLmdldCgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkp
OwogICAgIHJldHVybiBhcnJheTsKIH0KIApAQCAtMzIzLDcgKzMyMyw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyCiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgZWMpOwog
ICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwotICAgIHJldHVybiB0b1Y4T2JqZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCktPkNy
ZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhPYmpl
Y3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0zMzksNyArMzM5LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJDYWxs
YmFjayhjb25zdCB2ODo6QXIKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFBh
cmFtZXRlcihwbmFtZSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4
Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIHJldHVybiB0b1Y4T2JqZWN0KGlu
Zm8sIGFyZ3MuSG9sZGVyKCktPkNyZWF0aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7
CisgICAgcmV0dXJuIHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29s
YXRlKCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQpAQCAtMzU4LDcgKzM1OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlckNhbGxiYWNrKGNvbnN0CiAgICAgV2ViR0xH
ZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1l
LCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0dXJuIHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xk
ZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4g
dG9WOE9iamVjdChpbmZvLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAK
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKQEAgLTM4
Myw3ICszODMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFNoYWRlclBhcmFtZXRlckNhbGxiYWNrKGNvbnN0CiAgICAgV2ViR0xHZXRJbmZvIGlu
Zm8gPSBjb250ZXh0LT5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOwogICAg
IGlmIChlYykKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29s
YXRlKCkpOwotICAgIHJldHVybiB0b1Y4T2JqZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCktPkNyZWF0
aW9uQ29udGV4dCgpLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgcmV0dXJuIHRvVjhPYmplY3Qo
aW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lv
bnNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtNDI3LDcgKzQyNyw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9y
bUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0
LT5nZXRVbmlmb3JtKHByb2dyYW0sIGxvY2F0aW9uLCBlYyk7CiAgICAgaWYgKGVjKQogICAgICAg
ICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgcmV0
dXJuIHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKS0+Q3JlYXRpb25Db250ZXh0KCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOThiMDFkZjhhNzJiNmZm
ODFkZDcyYTNmODhlN2YzOTdiYTQxMjY0OC4uODllY2RjOTg2NzllODM1YjZjMmZmNzZjNWM1MzBl
MDYyYWU2M2I5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjpzZXRJbnRlcnZhbENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgcmV0dXJuIFNldFRpbWVvdXRPckludGVydmFsKGFy
Z3MsIGZhbHNlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoV29ya2VyQ29udGV4
dCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFdvcmtlckNvbnRleHQq
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKIHsKICAgICAvLyBOb3RpY2UgdGhhdCB3ZSBleHBsaWNpdGx5IGlnbm9yZSBj
cmVhdGlvbkNvbnRleHQgYmVjYXVzZSB0aGUgV29ya2VyQ29udGV4dCBpcyBpdHMgb3duIGNyZWF0
aW9uQ29udGV4dC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDgwOTk5NjM3MzZiZmU4
NDUxZDE3N2QxOTE2NjQ0NDcxM2UwYWZiOGUuLjE1NGQ2NzA1NDJiYjYxNjg3OTYyN2QwYjU5Yjlk
ZTBiNDczMDJlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQWNjZXNzb3JH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHhtbEh0dHBSZXF1ZXN0LT5yZXNwb25zZVhNTChlYyk7CiAgICAgICAgICAgICBpZiAoZWMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgaW5mby5HZXRJc29sYXRl
KCkpOwotICAgICAgICAgICAgcmV0dXJuIHRvVjgoZG9jdW1lbnQsIGluZm8uSG9sZGVyKCktPkNy
ZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
dG9WOChkb2N1bWVudCwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgICAg
ICB9CiAKICAgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OjpSZXNwb25zZVR5cGVCbG9iOgpAQCAtODUs
NyArODUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVzcG9u
c2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgICAgICAgICAgQmxvYiogYmxv
YiA9IHhtbEh0dHBSZXF1ZXN0LT5yZXNwb25zZUJsb2IoZWMpOwogICAgICAgICAgICAgaWYgKGVj
KQogICAgICAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGluZm8uR2V0SXNv
bGF0ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0b1Y4KGJsb2IsIGluZm8uSG9sZGVyKCktPkNy
ZWF0aW9uQ29udGV4dCgpLCBpbmZvLkdldElzb2xhdGUoKSk7CisgICAgICAgICAgICByZXR1cm4g
dG9WOChibG9iLCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgIH0K
IAogICAgIGNhc2UgWE1MSHR0cFJlcXVlc3Q6OlJlc3BvbnNlVHlwZUFycmF5QnVmZmVyOgpAQCAt
OTQsNyArOTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6cmVz
cG9uc2VBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgICAgICAgICAgQXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyID0geG1sSHR0cFJlcXVlc3QtPnJlc3BvbnNlQXJyYXlCdWZmZXIo
ZWMpOwogICAgICAgICAgICAgaWYgKGVjKQogICAgICAgICAgICAgICAgIHJldHVybiBzZXRET01F
eGNlcHRpb24oZWMsIGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiB0b1Y4
KGFycmF5QnVmZmVyLCBpbmZvLkhvbGRlcigpLT5DcmVhdGlvbkNvbnRleHQoKSwgaW5mby5HZXRJ
c29sYXRlKCkpOworICAgICAgICAgICAgcmV0dXJuIHRvVjgoYXJyYXlCdWZmZXIsIGluZm8uSG9s
ZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9uYW1lcy5wbAppbmRleCBjODUzMTY0ZTZiY2IxMDU2MzQ0MzljODQ2OGQ5YzAwNGM4ZmI2
NTM2Li44ODdjMWE5ZGJmZjBhYmNmYzExNDViODE3YmZmMTdhYWVmNTUyMGYwIDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWFrZV9uYW1lcy5wbApAQCAtMTA0MSw3ICsxMDQxLDcgQEAgRU5ECiAgICAgICAgIH0gZWxz
aWYgKCR3cmFwcGVyRmFjdG9yeVR5cGUgZXEgIlY4IikgewogICAgICAgICAgICAgaWYgKCRlbmFi
bGVkVGFnc3skdGFnTmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7CiAgICAg
ICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBj
cmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVt
ZW50KiBlbGVtZW50LCB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGUk
e0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50KiBl
bGVtZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7CiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+c2V0dGluZ3MoKTsKICAgICBpZiAoIU1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpIHx8
IChzZXR0aW5ncyAmJiAhc2V0dGluZ3MtPmlzTWVkaWFFbmFibGVkKCkpKQpAQCAtMTA1NCw3ICsx
MDU0LDcgQEAgRU5ECiAgICAgICAgICAgICB9IGVsc2lmICgkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9
e2NvbnRleHRDb25kaXRpb25hbH0pIHsKICAgICAgICAgICAgICAgICBteSAkY29udGV4dENvbmRp
dGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtjb250ZXh0Q29uZGl0aW9uYWx9OwogICAg
ICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRl
JHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCog
ZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQogewogICAgIGlmICghQ29udGV4dEZlYXR1cmVzOjoke2NvbnRleHRDb25k
aXRpb25hbH1FbmFibGVkKGVsZW1lbnQtPmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gVjgk
cGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9Ojp3cmFwKHRvJHBhcmFtZXRlcnN7ZmFs
bGJhY2tJbnRlcmZhY2VOYW1lfShlbGVtZW50KSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
QEAgLTEwNjQsNyArMTA2NCw3IEBAIEVORAogOwogICAgICAgICAgICAgfSBlbHNpZiAoJHtKU0lu
dGVyZmFjZU5hbWV9IGVxICJIVE1MRWxlbWVudCIpIHsKICAgICAgICAgICAgICAgICBwcmludCBG
IDw8RU5ECi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZSR7SlNJbnRlcmZhY2VO
YW1lfVdyYXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdy
YXBwZXIoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAg
ICByZXR1cm4gVjgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDo6d3JhcChlbGVtZW50LCBj
cmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpAQCAtMTA3Myw3ICsxMDczLDcgQEAgRU5ECiA7
CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6Q29u
dGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9V3JhcHBlcigkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHJldHVybiB0b1Y4
KHN0YXRpY19jYXN0PCR7SlNJbnRlcmZhY2VOYW1lfSo+KGVsZW1lbnQpLCBjcmVhdGlvbkNvbnRl
eHQsIGlzb2xhdGUpOwogfQpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgRU5ECiA7CiAgICAgfSBlbHNp
ZiAoJHdyYXBwZXJGYWN0b3J5VHlwZSBlcSAiVjgiKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQK
LXR5cGVkZWYgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICgqQ3JlYXRlJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnRXcmFwcGVyRnVuY3Rpb24pKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50
Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSop
OwordHlwZWRlZiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gKCpDcmVhdGUkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9RWxlbWVudFdyYXBwZXJGdW5jdGlvbikoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1l
bnQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
KTsKIAogRU5ECiA7CkBAIC0xMTc2LDcgKzExNzYsNyBAQCBFTkQKIDsKICAgICB9IGVsc2lmICgk
d3JhcHBlckZhY3RvcnlUeXBlIGVxICJWOCIpIHsKICAgICAgICAgcHJpbnQgRiA8PEVORAotdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNyZWF0ZVY4JHBhcmFtZXRlcnN7bmFtZXNwYWNlfVdyYXBwZXIo
JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQsIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VO
ZXdPYmplY3QpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlVjgkcGFyYW1ldGVyc3tuYW1l
c3BhY2V9V3JhcHBlcigkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBib29sIGZvcmNlTmV3T2JqZWN0KQogewogICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OkF0b21p
Y1N0cmluZ0ltcGwqLCBDcmVhdGUkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudFdyYXBwZXJG
dW5jdGlvbj4gRnVuY3Rpb25NYXA7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChGdW5jdGlvbk1h
cCwgbWFwLCAoKSk7CkBAIC0xMjc4LDcgKzEyNzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudDsKIAotICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY3JlYXRp
b25Db250ZXh0LCB2ODo6SXNvbGF0ZSosIGJvb2wpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjcmVhdGVWOCRwYXJhbWV0ZXJze25hbWVzcGFjZX1XcmFwcGVyKCRwYXJhbWV0ZXJze25hbWVz
cGFjZX1FbGVtZW50Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4
OjpJc29sYXRlKiwgYm9vbCk7CiB9CiBFTkQKIDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>