<?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>91332</bug_id>
          
          <creation_ts>2012-07-14 21:34:18 -0700</creation_ts>
          <short_desc>DFG PutByVal opcodes should accept more than 3 operands</short_desc>
          <delta_ts>2012-07-14 22:24:19 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>669919</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-14 21:34:18 -0700</bug_when>
    <thetext>So that we can cache storage loads and such.  PutByVal should be able to have 4 operands in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669921</commentid>
    <comment_count>1</comment_count>
      <attachid>152446</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-14 21:37:53 -0700</bug_when>
    <thetext>Created attachment 152446
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669929</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-14 22:24:19 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/122678</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152446</attachid>
            <date>2012-07-14 21:37:53 -0700</date>
            <delta_ts>2012-07-14 21:44:30 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>varargputbyval_patch_1.diff</filename>
            <type>text/plain</type>
            <size>55196</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNjc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDEyLTA3LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFB1dEJ5VmFsIG9wY29kZXMgc2hvdWxkIGFjY2VwdCBtb3JlIHRoYW4gMyBvcGVyYW5kcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEzMzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUdXJuZWQgUHV0
QnlWYWwvUHV0QnlWYWxBbGlhcyBpbnRvIHZhci1hcmcgbm9kZXMsIHNvIHRoYXQgd2UgY2FuIGdp
dmUgdGhlbQorICAgICAgICA0IG9yIG1vcmUgb3BlcmFuZHMgaW4gdGhlIGZ1dHVyZS4KKworICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpn
ZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6Omdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2VMb2FkRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpE
Rkc6OkNTRVBoYXNlOjpwZXJmb3JtTm9kZUNTRSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4RG91YmxlRWRnZSk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmJ5VmFsSXNQdXJlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dmFyQXJnTnVtQ2hpbGRyZW4pOgorICAgICAgICAoR3Jh
cGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpudW1DaGlsZHJlbik6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OnZhckFyZ0NoaWxkKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
Y2hpbGQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAg
ICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0w
Ny0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJhdGlvbmFs
aXplIGFuZCBvcHRpbWl6ZSBzdG9yYWdlIGFsbG9jYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTIyNTQ5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQ2LDEzICs5NDYsMTggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KHVuc2lnbmVkIGluZAogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFz
OiB7CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgaWYgKCFtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMigpXS5w
cmVkaWN0aW9uKCkpIHsKKworICAgICAgICBFZGdlIGNoaWxkMSA9IG1fZ3JhcGgudmFyQXJnQ2hp
bGQobm9kZSwgMCk7CisgICAgICAgIEVkZ2UgY2hpbGQyID0gbV9ncmFwaC52YXJBcmdDaGlsZChu
b2RlLCAxKTsKKyAgICAgICAgRWRnZSBjaGlsZDMgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUs
IDIpOworICAgICAgICAgICAgCisgICAgICAgIGlmICghbV9ncmFwaFtjaGlsZDFdLnByZWRpY3Rp
b24oKSB8fCAhbV9ncmFwaFtjaGlsZDJdLnByZWRpY3Rpb24oKSkgewogICAgICAgICAgICAgbV9p
c1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBp
ZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKSkKKyAgICAgICAgaWYgKCFtX2dyYXBoW2NoaWxkMl0uc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dy
YXBoW2NoaWxkMV0ucHJlZGljdGlvbigpKQogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAg
ICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygp
CisgICAgICAgICAgICB8fCBtX2dyYXBoW2NoaWxkMV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRz
KCkKICNlbmRpZgogICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICBBU1NFUlQobm9kZS5vcCgp
ID09IFB1dEJ5VmFsKTsKQEAgLTk2MSw4OSArOTY2LDg5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVB
cmd1bWVudHMoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY0FyZ3VtZW50cyk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihTcGVjSW50MzIpOworICAgICAgICBpZiAobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0
ZUFyZ3VtZW50cygpKSB7CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFNwZWNB
cmd1bWVudHMpOworICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOwotICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKLSAgICAgICAgICAgIGlm
IChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAg
ICAgICBpZiAobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Cisg
ICAgICAgICAgICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOworICAgICAg
ICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYg
KG1fZ3JhcGhbY2hpbGQzXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIp
OworICAgICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQxNkFycmF5KTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7Ci0gICAgICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAg
ICAgaWYgKG1fZ3JhcGhbY2hpbGQxXS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY0ludDE2QXJyYXkpOworICAgICAg
ICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYg
KG1fZ3JhcGhbY2hpbGQzXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIp
OworICAgICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQzMkFycmF5KTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7Ci0gICAgICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAg
ICAgaWYgKG1fZ3JhcGhbY2hpbGQxXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY0ludDMyQXJyYXkpOworICAgICAg
ICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYg
KG1fZ3JhcGhbY2hpbGQzXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIp
OworICAgICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50OEFycmF5KTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7Ci0gICAgICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAg
ICAgaWYgKG1fZ3JhcGhbY2hpbGQxXS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3BlY1VpbnQ4QXJyYXkpOworICAgICAg
ICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYg
KG1fZ3JhcGhbY2hpbGQzXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIp
OworICAgICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDhDbGFtcGVkQXJyYXkpOwot
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKLSAg
ICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVj
SW50MzIpOworICAgICAgICBpZiAobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZVVpbnQ4
Q2xhbXBlZEFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoU3Bl
Y1VpbnQ4Q2xhbXBlZEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUoY2hpbGQyKS5maWx0ZXIo
U3BlY0ludDMyKTsKKyAgICAgICAgICAgIGlmIChtX2dyYXBoW2NoaWxkM10uc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoU3Bl
Y0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQzKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKGNo
aWxkMykuZmlsdGVyKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2
QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y1VpbnQxNkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVy
KFNwZWNJbnQzMik7Ci0gICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MygpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgaWYgKG1fZ3JhcGhbY2hpbGQxXS5zaG91
bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMSku
ZmlsdGVyKFNwZWNVaW50MTZBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmls
dGVyKFNwZWNJbnQzMik7CisgICAgICAgICAgICBpZiAobV9ncmFwaFtjaGlsZDNdLnNob3VsZFNw
ZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMykuZmlsdGVy
KFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7CisgICAgICAgICAgICAgICAgZm9yTm9k
ZShjaGlsZDMpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVp
bnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFNwZWNVaW50MzJBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZp
bHRlcihTcGVjSW50MzIpOwotICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0u
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDMoKSkuZmlsdGVyKFNwZWNJbnQzMik7CisgICAgICAgIGlmIChtX2dyYXBoW2NoaWxkMV0u
c2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShjaGls
ZDEpLmZpbHRlcihTcGVjVWludDMyQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIp
LmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgaWYgKG1fZ3JhcGhbY2hpbGQzXS5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCisgICAgICAgICAgICAgICAgZm9yTm9kZShjaGlsZDMpLmZp
bHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOworICAgICAgICAgICAgICAgIGZv
ck5vZGUoY2hpbGQzKS5maWx0ZXIoU3BlY051bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxh
dGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihTcGVjSW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygp
KS5maWx0ZXIoU3BlY051bWJlcik7CisgICAgICAgIGlmIChtX2dyYXBoW2NoaWxkMV0uc2hvdWxk
U3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5m
aWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmls
dGVyKFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMykuZmlsdGVyKFNwZWNO
dW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGbG9hdDY0QXJyYXkpOwot
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOworICAg
ICAgICBpZiAobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7
CisgICAgICAgICAgICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFNwZWNGbG9hdDY0QXJyYXkpOwor
ICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihTcGVjQXJyYXkpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVj
SW50MzIpOworICAgICAgICBBU1NFUlQobV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUFy
cmF5KCkpOworICAgICAgICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAg
ICAgIGZvck5vZGUoY2hpbGQyKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAgICAgaWYgKG5vZGUu
b3AoKSA9PSBQdXRCeVZhbCkKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLmNvZGVPcmln
aW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMjU0OSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTUyLDcgKzIxNTIsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5ID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IHZh
bHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogCi0gICAgICAgICAg
ICBhZGRUb0dyYXBoKFB1dEJ5VmFsLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChwcm9w
ZXJ0eSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh2YWx1ZSk7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKE5vZGU6OlZhckFyZywgUHV0QnlWYWwsIE9wSW5mbygwKSwgT3BJbmZvKDApKTsK
IAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbCk7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAx
MjI1NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjg0LDE1ICsyODQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKKyAgICAgICAg
ICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewogICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC5i
eVZhbElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKLSAg
ICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXpl
KG5vZGUuY2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZS5jaGlsZDMoKS5pbmRleCgpOworICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApID09IGNoaWxkMSAmJiBjYW5vbmljYWxpemUobV9n
cmFwaC52YXJBcmdDaGlsZChub2RlLCAxKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpLmluZGV4
KCk7CiAgICAgICAgICAgICAgICAgLy8gV2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgUHV0QnlWYWwg
d2lsbCBjbG9iYmVyIHRoZSBsb2NhdGlvbiB3ZSdyZSBnZXR0aW5nIGZyb20uCiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXI7IGlmIHdlIGtub3cgdGhhdCB0aGUgUHV0
QnlWYWwgaXMgYWNjZXNzaW5nIGFuIGFycmF5IG9mIGEKICAgICAgICAgICAgICAgICAvLyBkaWZm
ZXJlbnQgdHlwZSB0aGFuIHRoZSBHZXRCeVZhbCwgdGhlbiB3ZSBrbm93IHRoYXQgdGhleSB3b24n
dCBjbG9iYmVyIGVhY2ggb3RoZXIuCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgogICAgICAgICAgICAg
Y2FzZSBQdXRCeU9mZnNldDoKICAgICAgICAgICAgICAgICAvLyBHZXRCeVZhbCBjdXJyZW50bHkg
YWx3YXlzIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbgpAQCAtNjM0LDcgKzYzNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgICAgIGlmIChpc0ZpeGVkSW5k
ZXhlZFN0b3JhZ2VPYmplY3RTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSkgJiYgbV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKKyAgICAgICAgICAgICAgICBp
ZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0U3BlY3VsYXRpb24obV9ncmFwaFttX2dyYXBo
LnZhckFyZ0NoaWxkKG5vZGUsIDApXS5wcmVkaWN0aW9uKCkpICYmIG1fZ3JhcGguYnlWYWxJc1B1
cmUobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJl
dHVybiBOb05vZGU7CiAKQEAgLTEwNzksMTcgKzEwODAsMTkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRCeVZhbExvYWRFbGltaW5hdGlvbihub2RlLmNoaWxk
MSgpLmluZGV4KCksIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGlmIChp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAmJiBtX2dyYXBoW25vZGUuY2hpbGQyKCld
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQotICAgICAgICAgICAgICAgICYmICFtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7Ci0gICAgICAgICAgICAg
ICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKAotICAgICAg
ICAgICAgICAgICAgICBub2RlLmNoaWxkMSgpLmluZGV4KCksIG5vZGUuY2hpbGQyKCkuaW5kZXgo
KSk7CisgICAgICAgIGNhc2UgUHV0QnlWYWw6IHsKKyAgICAgICAgICAgIEVkZ2UgY2hpbGQxID0g
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAgICAgICAgICAgIEVkZ2UgY2hpbGQyID0g
bV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgICAgIGlmIChpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW2NoaWxkMV0ucHJlZGljdGlvbigpKQor
ICAgICAgICAgICAgICAgICYmIG1fZ3JhcGhbY2hpbGQyXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KCkKKyAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUFy
Z3VtZW50cygpKSB7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGdldEJ5
VmFsTG9hZEVsaW1pbmF0aW9uKGNoaWxkMS5pbmRleCgpLCBjaGlsZDIuaW5kZXgoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3AoUHV0QnlWYWxBbGlhcyk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAgICAgICBpZiAoY2hlY2tTdHJ1Y3R1
cmVMb2FkRWxpbWluYXRpb24obm9kZS5zdHJ1Y3R1cmVTZXQoKSwgbm9kZS5jaGlsZDEoKS5pbmRl
eCgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAkocmV2aXNpb24gMTIyNTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDE5ICszMTUsMjIgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgUHV0QnlWYWw6IHsKLSAgICAg
ICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgfHwgIW1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpKQorICAgICAgICAgICAgRWRnZSBjaGlsZDEg
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgICAgICAgICAgRWRnZSBjaGlsZDIg
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICAgICAgRWRnZSBjaGlsZDMg
PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgaWYgKCFtX2dyYXBo
W2NoaWxkMV0ucHJlZGljdGlvbigpIHx8ICFtX2dyYXBoW2NoaWxkMl0ucHJlZGljdGlvbigpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hp
bGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgIGlmICghbV9ncmFw
aFtjaGlsZDJdLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGlmIChpc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlTcGVjdWxhdGlv
bihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpIHsKLSAgICAgICAgICAgICAg
ICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5pc0NvbnN0YW50KCkpCisgICAgICAgICAgICBp
ZiAoaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5U3BlY3VsYXRpb24obV9ncmFwaFtjaGlsZDFd
LnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtjaGlsZDNdLmlz
Q29uc3RhbnQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
aWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQorICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoW2NoaWxkM10uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigp
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBmaXhEb3VibGVF
ZGdlKDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5U3BlY3VsYXRpb24obV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBpZiAoaXNBY3Rpb25h
YmxlRmxvYXRNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW2NoaWxkMV0ucHJlZGljdGlv
bigpKSkgewogICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zNjgsNyArMzcxLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGZpeERvdWJsZUVkZ2UodW5zaWduZWQgY2hpbGRJbmRleCkKICAgICB7CiAgICAgICAg
IE5vZGUmIHNvdXJjZSA9IG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdOwotICAgICAgICBFZGdlJiBl
ZGdlID0gc291cmNlLmNoaWxkcmVuLmNoaWxkKGNoaWxkSW5kZXgpOworICAgICAgICBFZGdlJiBl
ZGdlID0gbV9ncmFwaC5jaGlsZChzb3VyY2UsIGNoaWxkSW5kZXgpOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFtX2dyYXBoW2VkZ2VdLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgZWRnZS5zZXRVc2VLaW5kKERvdWJsZVVzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMjI1NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2MywyNiArNDYzLDM1IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGJ5VmFsSXNQdXJlKE5vZGUmIG5vZGUpCiAgICAgewotICAg
ICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKTsKICAgICAgICAgc3dpdGNoIChub2Rl
Lm9wKCkpIHsKLSAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDog
eworICAgICAgICAgICAgaWYgKCFhdCh2YXJBcmdDaGlsZChub2RlLCAxKSkuc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBhdCh2YXJBcmdDaGlsZChub2RlLCAwKSkucHJl
ZGljdGlvbigpOwogICAgICAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICBjYXNlIFB1
dEJ5VmFsQWxpYXM6IHsKKyAgICAgICAgICAgIGlmICghYXQodmFyQXJnQ2hpbGQobm9kZSwgMSkp
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gYXQodmFyQXJnQ2hpbGQo
bm9kZSwgMCkpLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmICghaXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgICAgICBjYXNlIEdldEJ5VmFsOgorICAgICAgICBjYXNlIEdldEJ5VmFsOiB7CisgICAg
ICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0gYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpOwogICAgICAgICAg
ICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtNTI0LDE3ICs1MzMsMjkgQEAgcHVibGljOgogICAgIAogICAgIHZv
aWQgcmVzZXRFeGl0U3RhdGVzKCk7CiAgICAgCisgICAgdW5zaWduZWQgdmFyQXJnTnVtQ2hpbGRy
ZW4oTm9kZSYgbm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChub2RlLmZsYWdzKCkgJiBOb2Rl
SGFzVmFyQXJncyk7CisgICAgICAgIHJldHVybiBub2RlLm51bUNoaWxkcmVuKCk7CisgICAgfQor
ICAgIAogICAgIHVuc2lnbmVkIG51bUNoaWxkcmVuKE5vZGUmIG5vZGUpCiAgICAgewogICAgICAg
ICBpZiAobm9kZS5mbGFncygpICYgTm9kZUhhc1ZhckFyZ3MpCi0gICAgICAgICAgICByZXR1cm4g
bm9kZS5udW1DaGlsZHJlbigpOworICAgICAgICAgICAgcmV0dXJuIHZhckFyZ051bUNoaWxkcmVu
KG5vZGUpOwogICAgICAgICByZXR1cm4gQWRqYWNlbmN5TGlzdDo6U2l6ZTsKICAgICB9CiAgICAg
Ci0gICAgRWRnZSBjaGlsZChOb2RlJiBub2RlLCB1bnNpZ25lZCBpbmRleCkKKyAgICBFZGdlJiB2
YXJBcmdDaGlsZChOb2RlJiBub2RlLCB1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncyk7CisgICAgICAgIHJldHVybiBtX3Zh
ckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgaW5kZXhdOworICAgIH0KKyAgICAKKyAg
ICBFZGdlJiBjaGlsZChOb2RlJiBub2RlLCB1bnNpZ25lZCBpbmRleCkKICAgICB7CiAgICAgICAg
IGlmIChub2RlLmZsYWdzKCkgJiBOb2RlSGFzVmFyQXJncykKLSAgICAgICAgICAgIHJldHVybiBt
X3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgaW5kZXhdOworICAgICAgICAgICAg
cmV0dXJuIHZhckFyZ0NoaWxkKG5vZGUsIGluZGV4KTsKICAgICAgICAgcmV0dXJuIG5vZGUuY2hp
bGRyZW4uY2hpbGQoaW5kZXgpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEyMjU0OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDEwICsxMDks
MTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIC8qIFByb3BlcnR5IGFj
Y2Vzcy4gKi9cCiAgICAgLyogUHV0QnlWYWxBbGlhcyBpbmRpY2F0ZXMgYSAncHV0JyBhbGlhc2Vz
IGEgcHJpb3Igd3JpdGUgdG8gdGhlIHNhbWUgcHJvcGVydHkuICovXAogICAgIC8qIFNpbmNlIGEg
cHV0IHRvICdsZW5ndGgnIG1heSBpbnZhbGlkYXRlIG9wdGltaXphdGlvbnMgaGVyZSwgKi9cCi0g
ICAgLyogdGhpcyBtdXN0IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4g
Ki9cCisgICAgLyogdGhpcyBtdXN0IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5
IHB1dC4gTm90ZSB0aGF0IFB1dEJ5VmFsICovXAorICAgIC8qIG9wY29kZXMgdXNlIFZhckFyZ3Mg
YmVhdXNlIHRoZXkgbWF5IGhhdmUgdXAgdG8gNCBjaGlsZHJlbi4gKi9cCiAgICAgbWFjcm8oR2V0
QnlWYWwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVy
KSBcCi0gICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9i
YmVyKSBcCi0gICAgbWFjcm8oUHV0QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVN
aWdodENsb2JiZXIpIFwKKyAgICBtYWNybyhQdXRCeVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5v
ZGVIYXNWYXJBcmdzIHwgTm9kZU1pZ2h0Q2xvYmJlcikgXAorICAgIG1hY3JvKFB1dEJ5VmFsQWxp
YXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncyB8IE5vZGVNaWdodENsb2JiZXIp
IFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1
dEJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDEyMjU0OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MzUsOSArNjM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwg
Tm9kZVVzZWRBc0ludCk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGls
ZDMoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFsdWUpOworICAgICAgICAgICAgY2hhbmdlZCB8
PSBtX2dyYXBoW21fZ3JhcGgudmFyQXJnQ2hpbGQobm9kZSwgMCldLm1lcmdlRmxhZ3MoTm9kZVVz
ZWRBc1ZhbHVlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLnZhckFy
Z0NoaWxkKG5vZGUsIDEpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlVXNlZEFz
SW50KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFttX2dyYXBoLnZhckFyZ0NoaWxk
KG5vZGUsIDIpXS5tZXJnZUZsYWdzKE5vZGVVc2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MTIyNTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3MSwxNyArMjQ3MSwyMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBQdXRCeVZh
bDogewotICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSB8fCAhYXQo
bm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSB7CisgICAgICAgIEVkZ2UgY2hpbGQxID0gbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKTsKKyAgICAgICAgRWRnZSBjaGlsZDIgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpOworICAgICAgICBFZGdlIGNoaWxkMyA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMik7CisgICAgICAgIAorICAgICAgICBp
ZiAoIWF0KGNoaWxkMSkucHJlZGljdGlvbigpIHx8ICFhdChjaGlsZDIpLnByZWRpY3Rpb24oKSkg
ewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSW5hZGVxdWF0ZUNv
dmVyYWdlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcigpCi0gICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5
U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKQotICAgICAgICAgICAg
fHwgYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKLSAgICAg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7IC8v
IFNhdmUgYSByZWdpc3Rlciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0
LgotICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygp
KTsKKyAgICAgICAgaWYgKCFhdChjaGlsZDIpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQorICAg
ICAgICAgICAgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9uKGF0KGNoaWxk
MSkucHJlZGljdGlvbigpKQorICAgICAgICAgICAgfHwgYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxh
dGVBcmd1bWVudHMoKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBjaGlsZDEpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBw
cm9iYWJseSBiZSByaWdodC4KKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIGNoaWxkMik7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGls
ZDMpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICAg
ICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7CiAgICAgICAgICAg
ICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0gcHJvcGVydHkucGF5bG9hZEdQUigpOwpAQCAt
MjQ5NSw3NCArMjQ5OSw3NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKLSAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKGludDhfdCksIGlzSW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxs
VHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBjaGlsZDIpOworICAgICAgICBpZiAoYXQoY2hp
bGQxKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2Ny
aXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3Qp
LCBpc0ludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkg
PyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNp
Z25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5
U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5
cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5
cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFy
cmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9w
ZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKSkgewotICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBu
b2RlLCBzaXplb2YoaW50MzJfdCksIGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYg
KGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CisgICAgICAgICAgICBj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVv
ZihpbnQzMl90KSwgaXNJbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxk
MSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3Bl
Y0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBp
c1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNr
cywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3Bl
Y3VsYXRlVWludDhBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgYmFz
ZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFy
cmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRB
cnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBl
ZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4
Q2xhbXBlZEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50
OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzLCBVbnNpZ25lZFR5cGVkQXJyYXksIENsYW1wUm91bmRpbmcpOworICAgICAgICBpZiAoYXQo
Y2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJheSgpKSB7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBu
b2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXksIENsYW1wUm91bmRp
bmcpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNp
emVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxU
eXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYgKGF0
KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9m
KHVpbnQxNl90KSwgaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGls
ZDEpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNw
ZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0
QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNj
cmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDMy
X3QpLCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNw
ZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNo
b3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0
b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MzJfdCks
IGlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBV
bnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3Bl
Y3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3Io
KSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxv
YXQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3Mp
OworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkg
eworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmds
b2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbiht
X3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxl
T2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAg
ICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0
QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91
YmxlKSwgaXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5
U3BlY0NoZWNrcyk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUZsb2F0
NjRBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3By
KCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9hdDY0QXJyYXlT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5
VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlm
ICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOworICAgICAgICBBU1NFUlQo
YXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKIAotICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgY2hpbGQzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAKICAgICAgICAgLy8gTWFwIGJhc2UsIHByb3BlcnR5ICYgdmFsdWUgaW50byByZWdpc3RlcnMs
IGFsbG9jYXRlIGEgc2NyYXRjaCByZWdpc3Rlci4KQEAgLTI1NzUsMTIgKzI1NzksMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBpZiAoIW1fY29t
cGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgICAgICB3cml0ZUJh
cnJpZXIoYmFzZVJlZywgdmFsdWVUYWdSZWcsIG5vZGUuY2hpbGQzKCksIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzLCBzY3JhdGNoUmVnKTsKKyAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VS
ZWcsIHZhbHVlVGFnUmVnLCBjaGlsZDMsIFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBz
Y3JhdGNoUmVnKTsKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFu
ZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JM
ZW5ndGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0
eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCi0gICAgICAgIGlmICghaXNBcnJheVNw
ZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5Ojpz
X2luZm8pKSk7CisgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9k
ZShjaGlsZDEpLm1fdHlwZSkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBjaGlsZDEsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAg
ICAgIHByb3BlcnR5LnVzZSgpOwpAQCAtMjYyMCw4OSArMjYyNCw5MyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOiB7Ci0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpIHx8ICFh
dChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCkpIHsKKyAgICAgICAgRWRnZSBjaGlsZDEgPSBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgICAgICBFZGdlIGNoaWxkMiA9
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAgICAgIEVkZ2UgY2hpbGQz
ID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghYXQoY2hpbGQxKS5wcmVkaWN0aW9uKCkgfHwgIWF0KGNoaWxkMikucHJlZGljdGlvbigp
KSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRl
Q292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpOwotICAgICAgICBB
U1NFUlQoYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKTsKKyAgICAg
ICAgQVNTRVJUKGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9uKGF0KGNoaWxkMSku
cHJlZGljdGlvbigpKSk7CisgICAgICAgIEFTU0VSVChhdChjaGlsZDIpLnNob3VsZFNwZWN1bGF0
ZUludGVnZXIoKSk7CiAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3Bl
cnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBjaGlsZDIpOwogCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91
bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBOb1R5cGVk
QXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CisgICAgICAgIGlmIChhdChjaGls
ZDEpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNj
cmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50MTZf
dCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAg
ICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAgICAgICAg
aWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CiAgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50
MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNp
emVvZihpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFycmF5KTsK
ICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkg
eworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsK
ICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIo
KSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVk
VHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhDbGFt
cGVkQXJyYXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50
OENsYW1wZWRBcnJheSgpKSB7CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCks
IGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIE5vVHlw
ZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5LCBDbGFtcFJvdW5kaW5nKTsKICAg
ICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgIGlmIChhdChjaGls
ZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURl
c2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50
MTZfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAg
ICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewogICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwg
bm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBVbnNpZ25lZFR5
cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxv
YXQzMkFycmF5KCkpIHsKKyAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlRmxv
YXQzMkFycmF5KCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIE5vVHlwZWRBcnJheVNw
ZWNDaGVjayk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAg
ICAgICAgCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9h
dDY0QXJyYXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVGbG9h
dDY0QXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIE5vVHlwZWRBcnJheVNw
ZWNDaGVjayk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KIAot
ICAgICAgICBBU1NFUlQoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSk7
CisgICAgICAgIEFTU0VSVChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwogCi0g
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGlsZDMpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzLCBiYXNlKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBiYXNlUmVn
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigp
OwogCi0gICAgICAgIHdyaXRlQmFycmllcihiYXNlUmVnLCB2YWx1ZS50YWdHUFIoKSwgbm9kZS5j
aGlsZDMoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAg
ICAgICB3cml0ZUJhcnJpZXIoYmFzZVJlZywgdmFsdWUudGFnR1BSKCksIGNoaWxkMywgV3JpdGVC
YXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOwogCiAgICAgICAgIC8vIEdldCB0
aGUgYXJyYXkgc3RvcmFnZS4KICAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzY3JhdGNoUmVn
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCShyZXZpc2lvbiAxMjI1NDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAxLDE1ICsyNTAx
LDE5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAK
ICAgICBjYXNlIFB1dEJ5VmFsOiB7Ci0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpIHx8ICFhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCkpIHsKKyAgICAgICAg
RWRnZSBjaGlsZDEgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApOworICAgICAg
ICBFZGdlIGNoaWxkMiA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSk7CisgICAg
ICAgIEVkZ2UgY2hpbGQzID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghYXQoY2hpbGQxKS5wcmVkaWN0aW9uKCkgfHwgIWF0KGNoaWxk
MikucHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKCFhdChub2RlLmNo
aWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVB
cnJheVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKLSAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxkMygpKTsKKyAgICAgICAgaWYg
KCFhdChjaGlsZDIpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5U3BlY3VsYXRpb24oYXQoY2hpbGQxKS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIGNoaWxkMSk7CisgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBhcmcyKHRoaXMsIGNoaWxkMik7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCBhcmczKHRoaXMsIGNoaWxkMyk7CiAgICAgICAgICAgICBHUFJSZWcgYXJnMUdQUiA9IGFyZzEu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgYXJnMkdQUiA9IGFyZzIuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgYXJnM0dQUiA9IGFyZzMuZ3ByKCk7CkBAIC0yNTIxLDEyICsyNTI1LDEyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHBy
b3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIFNwZWN1bGF0
ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBjaGlsZDEpOworICAgICAgICBTcGVj
dWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgY2hpbGQyKTsKKyAgICAgICAg
aWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKKyAgICAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CisgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGNoaWxkMSk7CisgICAgICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgY2hpbGQyKTsKICAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2gyKHRoaXMpOwogICAgICAgICAgICAgCkBAIC0yNTM5LDkgKzI1NDMsOSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBpZiAoIWlzQXJn
dW1lbnRzU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
IHsKKyAgICAgICAgICAgIGlmICghaXNBcmd1bWVudHNTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUoY2hpbGQxKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
LSAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksCisgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBjaGlsZDEsCiAgICAgICAgICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLApAQCAtMjU4Miw3
MCArMjU4Niw3MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFy
cmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9m
KGludDhfdCksIGlzSW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJh
eVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQoY2hpbGQxKS5z
aG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3Io
KSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0lu
dDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkgPyBOb1R5
cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5
cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50
MTZBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwg
cHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5U3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJy
YXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJy
YXkpOworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkp
IHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAg
IGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBp
bGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5
RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGlu
dDMyX3QpLCBpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5
U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNo
b3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9y
KCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50MzJfdCksIGlz
SW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkgPyBO
b1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25l
ZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRl
VWludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlw
ZWRBcnJheSk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJy
YXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3Bl
cnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhBcnJheVNwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAg
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhDbGFtcGVkQXJyYXkoKSkgewotICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJh
eSwgQ2xhbXBSb3VuZGluZyk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0
ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0
b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwg
aXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1f
dHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVj
a3MsIFVuc2lnbmVkVHlwZWRBcnJheSwgQ2xhbXBSb3VuZGluZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVVaW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJh
c2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBpc1VpbnQx
NkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkg
PyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVu
c2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0
ZVVpbnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJy
YXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVk
QXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMy
QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBw
cm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVk
QXJyYXkpOworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJh
eSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3Bl
cnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAg
ICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7
Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xv
YmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgaWYgKGF0KGNoaWxk
MSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJh
eURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihm
bG9hdCksIGlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSku
bV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0No
ZWNrcyk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0
QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigp
LCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICBp
ZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkgeworICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JO
b2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBl
ZEFycmF5U3BlY0NoZWNrcyk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBBU1NFUlQoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlQXJyYXkoKSk7CisgICAgICAgIEFTU0VSVChhdChjaGlsZDEpLnNob3VsZFNw
ZWN1bGF0ZUFycmF5KCkpOwogCi0gICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUuY2hpbGQzKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBjaGlsZDMp
OwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICAvLyBNYXAg
YmFzZSwgcHJvcGVydHkgJiB2YWx1ZSBpbnRvIHJlZ2lzdGVycywgYWxsb2NhdGUgYSBzY3JhdGNo
IHJlZ2lzdGVyLgpAQCAtMjY1NywxMiArMjY2MSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCi0gICAgICAgIHdyaXRlQmFycmllcihiYXNlUmVnLCB2YWx1
ZS5ncHIoKSwgbm9kZS5jaGlsZDMoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNj
cmF0Y2hSZWcpOworICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZVJlZywgdmFsdWUuZ3ByKCksIGNo
aWxkMywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOwogCiAgICAg
ICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMg
Y29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8v
IElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBz
a2lwIHRoZSBjaGVjay4KLSAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKKyAgICAgICAgaWYgKCFpc0FycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSkKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJlZyksIGNoaWxkMSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAgICAgYmFzZS51c2Uo
KTsKICAgICAgICAgcHJvcGVydHkudXNlKCk7CkBAIC0yNzAxLDg4ICsyNzA1LDkyIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFB1
dEJ5VmFsQWxpYXM6IHsKLSAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9u
KCkgfHwgIWF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKSkgeworICAgICAgICBFZGdlIGNo
aWxkMSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCk7CisgICAgICAgIEVkZ2Ug
Y2hpbGQyID0gbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKTsKKyAgICAgICAgRWRn
ZSBjaGlsZDMgPSBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFhdChjaGlsZDEpLnByZWRpY3Rpb24oKSB8fCAhYXQoY2hpbGQyKS5wcmVk
aWN0aW9uKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKElu
YWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoaXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7Ci0g
ICAgICAgIEFTU0VSVChhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkp
OworICAgICAgICBBU1NFUlQoaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRpb24oYXQo
Y2hpbGQxKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKGF0KGNoaWxkMikuc2hvdWxk
U3BlY3VsYXRlSW50ZWdlcigpKTsKIAotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIGNoaWxkMSk7CisgICAgICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBjaGlsZDIpOworICAgICAgICBpZiAoYXQoY2hpbGQx
KS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0
b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7CisgICAgICAgIGlmIChh
dChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewogICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJy
YXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2Yo
aW50MTZfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAg
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAg
ICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CiAgICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFy
cmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJy
YXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5
KCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVu
c2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWlu
dDhDbGFtcGVkQXJyYXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxh
dGVVaW50OENsYW1wZWRBcnJheSgpKSB7CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJ
bnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlw
dG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCks
IE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5LCBDbGFtcFJvdW5kaW5n
KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgIGlmIChh
dChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKICAgICAgICAgICAgIGNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZB
cnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVv
Zih1aW50MTZfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsK
ICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkp
IHsKKyAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkg
ewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBVbnNp
Z25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlRmxvYXQzMkFycmF5KCkpIHsKKyAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3Vs
YXRlRmxvYXQzMkFycmF5KCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwg
YmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIE5vVHlwZWRB
cnJheVNwZWNDaGVjayk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVGbG9hdDY0QXJyYXkoKSkgeworICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxh
dGVGbG9hdDY0QXJyYXkoKSkgewogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRU
eXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBi
YXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIE5vVHlwZWRB
cnJheVNwZWNDaGVjayk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIEFTU0VSVChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVBcnJheSgpKTsKKyAgICAgICAgQVNTRVJUKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRl
QXJyYXkoKSk7CiAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDMoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAKICAgICAgICAgR1BSUmVn
IGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0
Y2guZ3ByKCk7CiAKLSAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2UuZ3ByKCksIHZhbHVlLmdwcigp
LCBub2RlLmNoaWxkMygpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJl
Zyk7CisgICAgICAgIHdyaXRlQmFycmllcihiYXNlLmdwcigpLCB2YWx1ZS5ncHIoKSwgY2hpbGQz
LCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJlZyk7CiAKICAgICAgICAg
Ly8gR2V0IHRoZSBhcnJheSBzdG9yYWdlLgogICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHNj
cmF0Y2hSZWc7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTIyNTQ5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTEsOCArMTkx
MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW4KIAogdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShjb25zdCBUeXBl
ZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0
eSwgTm9kZSYgbm9kZSwgc2l6ZV90IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25S
ZXF1aXJlbWVudHMgc3BlY3VsYXRpb25SZXF1aXJlbWVudHMsIFR5cGVkQXJyYXlTaWduZWRuZXNz
IHNpZ25lZG5lc3MsIFR5cGVkQXJyYXlSb3VuZGluZyByb3VuZGluZykKIHsKLSAgICBFZGdlIGJh
c2VVc2UgPSBub2RlLmNoaWxkMSgpOwotICAgIEVkZ2UgdmFsdWVVc2UgPSBub2RlLmNoaWxkMygp
OworICAgIEVkZ2UgYmFzZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCk7
CisgICAgRWRnZSB2YWx1ZVVzZSA9IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMik7
CiAgICAgCiAgICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2spCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VVc2UsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fY2xhc3NJbmZvKSkpOwo=
</data>
<flag name="review"
          id="161139"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>