<?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>159975</bug_id>
          
          <creation_ts>2016-07-20 09:52:55 -0700</creation_ts>
          <short_desc>Transition most IDB interfaces from ScriptExecutionContext to ExecState</short_desc>
          <delta_ts>2016-07-20 12:44:04 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1212767</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-20 09:52:55 -0700</bug_when>
    <thetext>Transition most IDB interfaces from ScriptExecutionContext to ExecState

This will get rid of a lot of null checking we do today, as well as fix a lot of missed null checks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212794</commentid>
    <comment_count>1</comment_count>
      <attachid>284123</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-20 10:28:36 -0700</bug_when>
    <thetext>Created attachment 284123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212845</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-07-20 12:44:04 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/203465</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284123</attachid>
            <date>2016-07-20 10:28:36 -0700</date>
            <delta_ts>2016-07-20 12:39:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159975-20160720102738.patch</filename>
            <type>text/plain</type>
            <size>65635</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA1ZWFhMmExNDcwZjJi
M2ZjMzQyMWEwN2NlYjFkNTgyM2ZmZGIxYy4uMWMzOTcxMTc0NGQ1ZmQ1MWM3M2UzNzQ0MGY3ODMx
YTMzN2EwODdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE2LTA3LTIwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBUcmFuc2l0aW9uIG1vc3Qg
SURCIGludGVyZmFjZXMgZnJvbSBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHRvIEV4ZWNTdGF0ZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTk3NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoTm8ga25vd24gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDdXJzb3I6OmNvbnRp
bnVlRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkZWxldGVGdW5jdGlv
bik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbDoKKworICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmlkbDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6Y21wKToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5pZGw6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6b3BlbkN1cnNvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
SW5kZXg6OmRvQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6Om9wZW5LZXlDdXJz
b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJJbmRleDo6ZG9HZXQpOgorICAgICAgICAoV2ViQ29yZTo6SURCSW5kZXg6OmdldEtleSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJJbmRleDo6ZG9HZXRLZXkpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
SW5kZXguaWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5UmFuZ2U6Om9ubHkpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmg6CisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmpl
Y3RTdG9yZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpwdXRPckFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVuY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlOjptb2Rlcm5EZWxldGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9iamVjdFN0b3JlOjpjcmVhdGVJ
bmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPYmplY3RTdG9yZTo6Y291bnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmU6OmRvQ291bnQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCT2JqZWN0U3RvcmUuaWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RP
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpkb1JlcXVlc3RP
cGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0
UmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0R2V0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OnJlcXVlc3RJbmRleFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRlUmVjb3JkKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKwogMjAxNi0wNy0yMCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBudWxsIGhhbmRsaW5nIG9mIEhU
TUxTZWxlY3RFbGVtZW50LnZhbHVlIGF0dHJpYnV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKaW5kZXggMTJiNGE3OGZmZjA0YTg4MjI2MDQ4YWVl
MGRjM2M4MWVhMzA3MmIwNi4uZTc3Zjc4NTI0NjliOGFjMDVmYjg5YTE0OTFkNDIxMzNkN2MwMjYz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3Bw
CkBAIC0yNjcsMTggKzI2NywxMSBAQCB2b2lkIElEQkN1cnNvcjo6YWR2YW5jZSh1bnNpZ25lZCBj
b3VudCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKICAgICB1bmNoZWNrZWRJdGVyYXRl
Q3Vyc29yKElEQktleURhdGEoKSwgY291bnQpOwogfQogCi12b2lkIElEQkN1cnNvcjo6Y29udGlu
dWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU1ZhbHVlIGtleVZh
bHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQordm9pZCBJREJDdXJzb3I6OmNvbnRp
bnVlRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5VmFsdWUsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgYXV0byBleGVjID0gY29udGV4dC5leGVj
U3RhdGUoKTsKLSAgICBpZiAoIWV4ZWMpIHsKLSAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3I7Ci0gICAgICAgIGVjLm1lc3NhZ2UgPSBBU0NJSUxpdGVy
YWwoIkZhaWxlZCB0byBleGVjdXRlICdjb250aW51ZScgb24gJ0lEQkN1cnNvcic6IFNjcmlwdCBl
eGVjdXRpb24gY29udGV4dCBkb2VzIG5vdCBoYXZlIGFuIGV4ZWN1dGlvbiBzdGF0ZS4iKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFJlZlB0cjxJREJLZXk+IGtleTsKICAgICBpZiAo
IWtleVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIGtleSA9IHNjcmlwdFZhbHVlVG9JREJL
ZXkoKmV4ZWMsIGtleVZhbHVlKTsKKyAgICAgICAga2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShl
eGVjU3RhdGUsIGtleVZhbHVlKTsKIAogICAgIGNvbnRpbnVlRnVuY3Rpb24oa2V5LmdldCgpLCBl
Yyk7CiB9CkBAIC0zNDQsNyArMzM3LDcgQEAgdm9pZCBJREJDdXJzb3I6OnVuY2hlY2tlZEl0ZXJh
dGVDdXJzb3IoY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBjb3VudCkKICAgICB0cmFu
c2FjdGlvbigpLml0ZXJhdGVDdXJzb3IoKnRoaXMsIGtleSwgY291bnQpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24oRXhlY1N0
YXRlJiBleGVjU3RhdGUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIklEQkN1cnNvcjo6ZGVsZXRlRnVuY3Rpb24iKTsKICAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkubW9kZXJuVHJhbnNhY3Rpb24o
KS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwpAQCAtMzc5LDcgKzM3Miw3IEBAIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJDdXJzb3I6OmRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gcmVxdWVzdCA9IGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkubW9kZXJuRGVsZXRlKGNvbnRl
eHQsIG1fY3VycmVudFByaW1hcnlLZXkuZ2V0KCksIGVjKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBl
ZmZlY3RpdmVPYmplY3RTdG9yZSgpLm1vZGVybkRlbGV0ZShleGVjU3RhdGUsIG1fY3VycmVudFBy
aW1hcnlLZXkuZ2V0KCksIGVjKTsKICAgICBpZiAoZWMuY29kZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgK
aW5kZXggNzc1ZGFmYjg2NDg3MWJmOTE4ZTQ4OWFkYzVmMmYwOWRhMmNhZjBhZS4uYjNmMGJkMmZl
Y2JkYTJjNjdkM2E5OWE4YjZhOGRlNTg4MmZlMjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmgKQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogCiAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHVwZGF0ZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAgICAgdm9pZCBhZHZhbmNlKHVuc2lnbmVk
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgdm9p
ZCBjb250aW51ZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1
bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKICAg
ICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
Q3Vyc29yLmlkbAppbmRleCAxZjA5ZDE2NzBkMTBmZWY4ZjM0Zjc1MzI0OGU3N2JkM2U0M2I3N2Rh
Li44ZDQ0ZDJjY2NkNGU0NDc4NzQ5ZTA4NTIyMzcyZWUyNGNmOTI4MTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKQEAgLTM4LDYgKzM4LDYg
QEAKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3Nh
Z2VdIElEQlJlcXVlc3QgdXBkYXRlKGFueSB2YWx1ZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlXSB2b2lkIGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3Vu
dCk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9
Y29udGludWVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIHZvaWQgY29udGlu
dWUob3B0aW9uYWwgYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNz
YWdlXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1w
bGVtZW50ZWRBcz1jb250aW51ZUZ1bmN0aW9uLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0g
dm9pZCBjb250aW51ZShvcHRpb25hbCBhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNz
YWdlXSBJREJSZXF1ZXN0IGRlbGV0ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAppbmRleCAwOWE0ZmZiZjM1ODU1MjgxYTIyODkz
ZDAzZGMwMmNjNjM5OTcwYjgzLi43NDIxMjhkYWI0YTI4MzFjZGRiZjE1MTljZWY2MTQxNGExZDdi
YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2UuaWRsCkBAIC0zNiw4ICszNiw4IEBACiAKICAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25X
aXRoTWVzc2FnZV0gSURCT2JqZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5h
bWUsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlXSB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBb
Q3VzdG9tLCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25X
aXRoTWVzc2FnZV0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nIHN0b3JlTmFt
ZSwgb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwotICAgIFtDdXN0b20sIENhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3JlTmFtZXMsIG9wdGlvbmFs
IERPTVN0cmluZyBtb2RlKTsKKyAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2Fn
ZV0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nIHN0b3JlTmFtZSwgb3B0aW9u
YWwgRE9NU3RyaW5nIG1vZGUpOworICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNz
YWdlXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3Jl
TmFtZXMsIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCmluZGV4IDg1Y2I3YTY1MzZlZWJiYjZkZmYy
OTU5Nzc3MWJmYWY0OGQ0ZWVmODEuLjlkYjg0NmY2ZDcxZTgxMDg1YmEyN2M1NTdhZGY3MTRmMjBk
ZGJmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuY3BwCkBAIC0xNDIsMTcgKzE0MiwxMCBAQCBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURC
RmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAg
IHJldHVybiBtX2Nvbm5lY3Rpb25Qcm94eS0+ZGVsZXRlRGF0YWJhc2UoY29udGV4dCwgZGF0YWJh
c2VJZGVudGlmaWVyKTsKIH0KIAotc2hvcnQgSURCRmFjdG9yeTo6Y21wKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEpTVmFsdWUgZmlyc3RWYWx1ZSwgSlNWYWx1ZSBzZWNvbmRWYWx1
ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK3Nob3J0IElEQkZhY3Rvcnk6OmNtcChF
eGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBmaXJzdFZhbHVlLCBKU1ZhbHVlIHNlY29uZFZh
bHVlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewotICAgIGF1dG8gZXhlYyA9IGNv
bnRleHQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFleGVjKSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yOwotICAgICAgICBlYy5tZXNzYWdlID0g
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnY21wJyBvbiAnSURCRmFjdG9yeSc6IFNj
cmlwdCBleGVjdXRpb24gY29udGV4dCBkb2VzIG5vdCBoYXZlIGFuIGV4ZWN1dGlvbiBzdGF0ZS4i
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgUmVmPElEQktleT4gZmlyc3QgPSBz
Y3JpcHRWYWx1ZVRvSURCS2V5KCpleGVjLCBmaXJzdFZhbHVlKTsKLSAgICBSZWY8SURCS2V5PiBz
ZWNvbmQgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCpleGVjLCBzZWNvbmRWYWx1ZSk7CisgICAgUmVm
PElEQktleT4gZmlyc3QgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwgZmlyc3RWYWx1
ZSk7CisgICAgUmVmPElEQktleT4gc2Vjb25kID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3Rh
dGUsIHNlY29uZFZhbHVlKTsKIAogICAgIGlmICghZmlyc3QtPmlzVmFsaWQoKSB8fCAhc2Vjb25k
LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpE
YXRhRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
LmgKaW5kZXggNTk4MDIwYTU5MzQxYWE1NzgzMDQzYjI4YTM3ZTQ4M2Y1ZjkxNDE5Yi4uZDZjMGE2
OGZmZjljZTZiYTY2ZDVlZGEyMTAxNzJhMWUzZjJkYzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7CiBj
bGFzcyBKU1ZhbHVlOwogfQogCkBAIC01OSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBPcHRpb25hbDx1aW50NjRfdD4gdmVyc2lvbiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJik7CiAgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwogCi0gICAgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBK
U0M6OkpTVmFsdWUgZmlyc3QsIEpTQzo6SlNWYWx1ZSBzZWNvbmQsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpOworICAgIHNob3J0IGNtcChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBm
aXJzdCwgSlNDOjpKU1ZhbHVlIHNlY29uZCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldEFsbERhdGFiYXNlTmFtZXMoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9wZW5pbmdP
cmlnaW4sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgVmVjdG9yPFN0cmluZz4mKT4pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCmluZGV4
IDk0MTk5ZDE3Nzk5MjRiYWNhM2IxNmYxODBhYmEyNjNkYjEyMjJlM2UuLjM1MWJhODA4ODkxOGRk
Mjg4ZmUzYzMyNTI5YjA3M2ExNjAzOTQ3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCkBAIC0zMCw2ICszMCw2IEBACiBdIGludGVyZmFj
ZSBJREJGYWN0b3J5IHsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFp
c2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcg
bmFtZSwgW0VuZm9yY2VSYW5nZV0gb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24p
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25X
aXRoTWVzc2FnZV0gSURCT3BlbkRCUmVxdWVzdCBkZWxldGVEYXRhYmFzZShET01TdHJpbmcgbmFt
ZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlv
bldpdGhNZXNzYWdlXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25kKTsKKyAgICBbQ2Fs
bFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBzaG9ydCBjbXAo
YW55IGZpcnN0LCBhbnkgc2Vjb25kKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmNwcAppbmRleCAxZjhkNDE1MjVmODZlMTM4YTA2ZTJjMmRlMTAz
ODRiNDlmODU0MDc0Li44YWY3ODBlNzUwZjAzZTM0YTdlNzM5MTUxZjVkOWQzNTBiOGMyNDBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguY3BwCkBAIC0x
MDIsNyArMTAyLDcgQEAgYm9vbCBJREJJbmRleDo6bXVsdGlFbnRyeSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW5mby5tdWx0aUVudHJ5KCk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRl
eDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5n
ZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuQ3Vyc29yKEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIGNvbnN0IFN0cmluZyYgZGly
ZWN0aW9uU3RyaW5nLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJ
bmRleGVkREIsICJJREJJbmRleDo6b3BlbkN1cnNvciIpOwogICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3Jp
Z2luVGhyZWFkSUQoKSk7CkBAIC0xMzIsNTIgKzEzMiw0NSBAQCBSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURC
S2V5UgogICAgICAgICByYW5nZURhdGEudXBwZXJLZXkgPSBJREJLZXlEYXRhOjptYXhpbXVtKCk7
CiAKICAgICBhdXRvIGluZm8gPSBJREJDdXJzb3JJbmZvOjppbmRleEN1cnNvcihtX29iamVjdFN0
b3JlLm1vZGVyblRyYW5zYWN0aW9uKCksIG1fb2JqZWN0U3RvcmUuaW5mbygpLmlkZW50aWZpZXIo
KSwgbV9pbmZvLmlkZW50aWZpZXIoKSwgcmFuZ2VEYXRhLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6
Q3Vyc29yVHlwZTo6S2V5QW5kVmFsdWUpOwotICAgIHJldHVybiBtX29iamVjdFN0b3JlLm1vZGVy
blRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5DdXJzb3IoY29udGV4dCwgKnRoaXMsIGluZm8pOwor
ICAgIHJldHVybiBtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkucmVxdWVzdE9wZW5D
dXJzb3IoZXhlY1N0YXRlLCAqdGhpcywgaW5mbyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJ
REJJbmRleDo6b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU1Zh
bHVlIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5DdXJzb3IoRXhlY1N0YXRl
JiBleGVjU3RhdGUsIEpTVmFsdWUga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6
Om9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fb2JqZWN0U3Rv
cmUubW9kZXJuVHJhbnNhY3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwogCi0g
ICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGNvbnRl
eHQsIGtleSwgZWMuY29kZSk7CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElE
QktleVJhbmdlOjpvbmx5KGV4ZWNTdGF0ZSwga2V5LCBlYy5jb2RlKTsKICAgICBpZiAoZWMuY29k
ZSkgewogICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0
ZSAnb3BlbkN1cnNvcicgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxp
ZCBrZXkuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBv
cGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLmdldCgpLCBkaXJlY3Rpb24sIGVjKTsKKyAgICBy
ZXR1cm4gb3BlbkN1cnNvcihleGVjU3RhdGUsIGtleVJhbmdlLmdldCgpLCBkaXJlY3Rpb24sIGVj
KTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4Ojpjb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KEV4ZWNTdGF0
ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4Ojpjb3VudCIpOwogCi0gICAg
cmV0dXJuIGRvQ291bnQoY29udGV4dCwgcmFuZ2UgPyBJREJLZXlSYW5nZURhdGEocmFuZ2UpIDog
SURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCksIGVjKTsKKyAgICByZXR1cm4gZG9Db3VudChleGVj
U3RhdGUsIHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSA6IElEQktleVJhbmdlRGF0YTo6
YWxsS2V5cygpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6Y291bnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmNvdW50KEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
JiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCSW5kZXg6OmNvdW50Iik7CiAKLSAgICBh
dXRvIGV4ZWMgPSBjb250ZXh0LmV4ZWNTdGF0ZSgpOwotICAgIGlmICghZXhlYykgewotICAgICAg
ICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvcjsKLSAgICAgICAg
ZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2NvdW50JyBvbiAn
SURCSW5kZXgnOiBTY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgZG9lcyBub3QgaGF2ZSBhbiBleGVj
dXRpb24gc3RhdGUuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIFJlZjxJREJL
ZXk+IGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoKmV4ZWMsIGtleSk7CisgICAgUmVmPElE
QktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtleSk7CiAgICAg
aWYgKCFpZGJLZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VF
eGNlcHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgi
RmFpbGVkIHRvIGV4ZWN1dGUgJ2NvdW50JyBvbiAnSURCSW5kZXgnOiBUaGUgcGFyYW1ldGVyIGlz
IG5vdCBhIHZhbGlkIGtleS4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGRvQ291bnQoY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5wdHIoKSks
IGVjKTsKKyAgICByZXR1cm4gZG9Db3VudChleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJL
ZXkucHRyKCkpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9Db3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkluZGV4Ojpkb0NvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIEFTU0VS
VChjdXJyZW50VGhyZWFkKCkgPT0gbV9vYmplY3RTdG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CiAKQEAgLTE5OSwxMCArMTkyLDEwIEBAIFJlZlB0
cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9Db3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBJREJLCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiB0cmFuc2FjdGlvbi5yZXF1ZXN0Q291bnQoY29udGV4dCwgKnRoaXMsIHJhbmdlKTsK
KyAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVxdWVzdENvdW50KGV4ZWNTdGF0ZSwgKnRoaXMsIHJh
bmdlKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpvcGVuS2V5Q3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgY29uc3Qg
U3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitS
ZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6Om9wZW5LZXlDdXJzb3IoRXhlY1N0YXRlJiBleGVj
U3RhdGUsIElEQktleVJhbmdlKiByYW5nZSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb25TdHJpbmcs
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklE
QkluZGV4OjpvcGVuS2V5Q3Vyc29yIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBt
X29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJ
RCgpKTsKQEAgLTIyNiw0OSArMjE5LDQyIEBAIFJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
b3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLCiAgICAg
fQogCiAgICAgYXV0byBpbmZvID0gSURCQ3Vyc29ySW5mbzo6aW5kZXhDdXJzb3IobV9vYmplY3RT
dG9yZS5tb2Rlcm5UcmFuc2FjdGlvbigpLCBtX29iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVy
KCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlLCBkaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vy
c29yVHlwZTo6S2V5T25seSk7Ci0gICAgcmV0dXJuIG1fb2JqZWN0U3RvcmUubW9kZXJuVHJhbnNh
Y3Rpb24oKS5yZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCAqdGhpcywgaW5mbyk7CisgICAgcmV0
dXJuIG1fb2JqZWN0U3RvcmUubW9kZXJuVHJhbnNhY3Rpb24oKS5yZXF1ZXN0T3BlbkN1cnNvcihl
eGVjU3RhdGUsICp0aGlzLCBpbmZvKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4
OjpvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTVmFsdWUg
a2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBl
YykKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6b3BlbktleUN1cnNvcihFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6
b3BlbktleUN1cnNvciIpOwotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4ga2V5UmFuZ2UgPSBJREJL
ZXlSYW5nZTo6b25seShjb250ZXh0LCBrZXksIGVjLmNvZGUpOworICAgIFJlZlB0cjxJREJLZXlS
YW5nZT4ga2V5UmFuZ2UgPSBJREJLZXlSYW5nZTo6b25seShleGVjU3RhdGUsIGtleSwgZWMuY29k
ZSk7CiAgICAgaWYgKGVjLmNvZGUpIHsKICAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJh
bCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ29wZW5LZXlDdXJzb3InIG9uICdJREJJbmRleCc6IFRoZSBw
YXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQga2V5LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9Ci0gICAgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29udGV4dCwga2V5UmFuZ2UuZ2V0KCks
IGRpcmVjdGlvbiwgZWMpOworICAgIHJldHVybiBvcGVuS2V5Q3Vyc29yKGV4ZWNTdGF0ZSwga2V5
UmFuZ2UuZ2V0KCksIGRpcmVjdGlvbiwgZWMpOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURC
SW5kZXg6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSog
cmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4g
SURCSW5kZXg6OmdldChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJ
bmRleDo6Z2V0Iik7CiAKLSAgICByZXR1cm4gZG9HZXQoY29udGV4dCwgSURCS2V5UmFuZ2VEYXRh
KHJhbmdlKSwgZWMpOworICAgIHJldHVybiBkb0dldChleGVjU3RhdGUsIElEQktleVJhbmdlRGF0
YShyYW5nZSksIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldChFeGVjU3Rh
dGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXQiKTsKIAotICAgIGF1dG8gZXhl
YyA9IGNvbnRleHQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFleGVjKSB7Ci0gICAgICAgIGVjLmNv
ZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yOwotICAgICAgICBlYy5tZXNz
YWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgn
OiBTY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQgZG9lcyBub3QgaGF2ZSBhbiBleGVjdXRpb24gc3Rh
dGUuIik7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJlZjxJREJLZXk+
IGlkYktleSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoKmV4ZWMsIGtleSk7CisgICAgUmVmPElEQktl
eT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYg
KCFpZGJLZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNl
cHRpb246OkRhdGFFcnJvcjsKICAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRmFp
bGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRlciBpcyBub3Qg
YSB2YWxpZCBrZXkuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJl
dHVybiBkb0dldChjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LnB0cigpKSwgZWMpOwor
ICAgIHJldHVybiBkb0dldChleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJLZXkucHRyKCkp
LCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9HZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6
ZG9HZXQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2Us
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJl
YWQoKSA9PSBtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkuZGF0YWJhc2UoKS5vcmln
aW5UaHJlYWRJRCgpKTsKIApAQCAtMjkwLDM4ICsyNzYsMzEgQEAgUmVmUHRyPElEQlJlcXVlc3Q+
IElEQkluZGV4Ojpkb0dldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJ
REJLZXkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHRyYW5z
YWN0aW9uLnJlcXVlc3RHZXRWYWx1ZShjb250ZXh0LCAqdGhpcywgcmFuZ2UpOworICAgIHJldHVy
biB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0VmFsdWUoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2UpOwog
fQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShFeGVjU3RhdGUm
IGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2UqIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
IGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJJbmRleDo6Z2V0S2V5Iik7CiAKLSAgICBy
ZXR1cm4gZG9HZXRLZXkoY29udGV4dCwgSURCS2V5UmFuZ2VEYXRhKHJhbmdlKSwgZWMpOworICAg
IHJldHVybiBkb0dldEtleShleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShyYW5nZSksIGVjKTsK
IH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQkluZGV4OjpnZXRLZXkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYg
ZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCSW5kZXg6OmdldEtleShFeGVjU3RhdGUmIGV4ZWNT
dGF0ZSwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAg
TE9HKEluZGV4ZWREQiwgIklEQkluZGV4OjpnZXRLZXkiKTsKIAotICAgIGF1dG8gZXhlYyA9IGNv
bnRleHQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFleGVjKSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yOwotICAgICAgICBlYy5tZXNzYWdlID0g
QVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCSW5kZXgnOiBTY3Jp
cHQgZXhlY3V0aW9uIGNvbnRleHQgZG9lcyBub3QgaGF2ZSBhbiBleGVjdXRpb24gc3RhdGUuIik7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIFJlZjxJREJLZXk+IGlkYktl
eSA9IHNjcmlwdFZhbHVlVG9JREJLZXkoKmV4ZWMsIGtleSk7CisgICAgUmVmPElEQktleT4gaWRi
S2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleShleGVjU3RhdGUsIGtleSk7CiAgICAgaWYgKCFpZGJL
ZXktPmlzVmFsaWQoKSkgewogICAgICAgICBlYy5jb2RlID0gSURCRGF0YWJhc2VFeGNlcHRpb246
OkRhdGFFcnJvcjsKICAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJTGl0ZXJhbCgiRmFpbGVkIHRv
IGV4ZWN1dGUgJ2dldEtleScgb24gJ0lEQkluZGV4JzogVGhlIHBhcmFtZXRlciBpcyBub3QgYSB2
YWxpZCBrZXkuIik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVy
biBkb0dldEtleShjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LnB0cigpKSwgZWMpOwor
ICAgIHJldHVybiBkb0dldEtleShleGVjU3RhdGUsIElEQktleVJhbmdlRGF0YShpZGJLZXkucHRy
KCkpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJJbmRleDo6ZG9HZXRLZXkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5n
ZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBJREJJ
bmRleDo6ZG9HZXRLZXkoRXhlY1N0YXRlJiBleGVjU3RhdGUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX29iamVjdFN0b3JlLm1vZGVyblRyYW5zYWN0aW9uKCkuZGF0YWJh
c2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKIApAQCAtMzQzLDcgKzMyMiw3IEBAIFJlZlB0cjxJREJS
ZXF1ZXN0PiBJREJJbmRleDo6ZG9HZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSURCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVy
biB0cmFuc2FjdGlvbi5yZXF1ZXN0R2V0S2V5KGNvbnRleHQsICp0aGlzLCByYW5nZSk7CisgICAg
cmV0dXJuIHRyYW5zYWN0aW9uLnJlcXVlc3RHZXRLZXkoZXhlY1N0YXRlLCAqdGhpcywgcmFuZ2Up
OwogfQogCiB2b2lkIElEQkluZGV4OjptYXJrQXNEZWxldGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5oCmluZGV4IGQ3ZjM4YmI3ODVmOWEwZWQzZDVkYTM2
N2Q1ZDUzYmUxOTdlZjEzOTkuLmFhMmQwZTM2Mzg5YjZjZmY4N2RlMjBlYTJhNmY3Yjg0MjhiMDJm
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaApAQCAt
MzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJJREJJbmRleEluZm8uaCIKICNpbmNsdWRlICJJREJS
ZXF1ZXN0LmgiCiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworfQorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElEQktleVJhbmdlOwpAQCAtNDksMTkgKzUzLDE5IEBA
IHB1YmxpYzoKICAgICBib29sIHVuaXF1ZSgpIGNvbnN0OwogICAgIGJvb2wgbXVsdGlFbnRyeSgp
IGNvbnN0OwogCi0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29y
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUga2V5LCBjb25zdCBTdHJpbmcm
IGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJl
cXVlc3Q+IG9wZW5DdXJzb3IoSlNDOjpFeGVjU3RhdGUmLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0
cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8
SURCUmVxdWVzdD4gb3BlbkN1cnNvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBrZXks
IGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKIAot
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURC
S2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICBSZWZQdHI8SURCUmVx
dWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChK
U0M6OkV4ZWNTdGF0ZSYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7
CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKLSAgICBSZWZQdHI8SURCUmVx
dWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2Uq
LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7Ci0g
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEpTQzo6SlNWYWx1ZSBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihK
U0M6OkV4ZWNTdGF0ZSYsIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuS2V5
Q3Vyc29yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgY29uc3QgU3RyaW5nJiBk
aXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwogCi0gICAgUmVmUHRyPElEQlJl
cXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKTsKLSAgICBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1
ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0
PiBnZXQoSlNDOjpFeGVjU3RhdGUmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURC
UmVxdWVzdD4gZ2V0S2V5KEpTQzo6RXhlY1N0YXRlJiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gZ2V0S2V5KEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAK
ICAgICBjb25zdCBJREJJbmRleEluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0K
IApAQCAtNzQsOSArNzgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXJlZigpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBkb0NvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gZG9HZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0
cjxJREJSZXF1ZXN0PiBkb0dldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElE
QlJlcXVlc3Q+IGRvQ291bnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gZG9H
ZXQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gZG9HZXRLZXkoSlNDOjpFeGVj
U3RhdGUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
KTsKIAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbAppbmRleCAz
NTUzMWY2NzE0NTRhNWVmOWZhMzBlOTZkNTBiNDgyZDRlY2Y0NzNhLi44N2JkMDQ1YTZiMDA3MDA4
MDBmMDdmOTRiMjIzNDU3MDg1MzFkYWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0zNiwxNyArMzYsMTcgQEAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBtdWx0aUVudHJ5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHVuaXF1ZTsKIAotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlz
ZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElE
QktleVJhbmdlPyByYW5nZSA9IG51bGwsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24gPSAi
bmV4dCIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFs
IERPTVN0cmluZyBkaXJlY3Rpb24gPSAibmV4dCIpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0
ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRp
b25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0
aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlv
bldpdGhNZXNzYWdlXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgRE9N
U3RyaW5nIGRpcmVjdGlvbiA9ICJuZXh0Iik7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3Qgb3Blbktl
eUN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBET01T
dHJpbmcgZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3Qgb3BlbktleUN1
cnNvcihhbnkga2V5LCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uID0gIm5leHQiKTsKKyAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJS
ZXF1ZXN0IG9wZW5LZXlDdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCwg
b3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBvcGVuS2V5
Q3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24gPSAibmV4dCIpOwog
Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlXSBJREJSZXF1ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElE
QlJlcXVlc3QgZ2V0KGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBnZXRLZXkoSURCS2V5
UmFuZ2U/IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNl
c0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJSZXF1ZXN0IGdldEtleShhbnkga2V5KTsKLSAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3Nh
Z2VdIElEQlJlcXVlc3QgY291bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7
Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbldp
dGhNZXNzYWdlXSBJREJSZXF1ZXN0IGNvdW50KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgZ2V0KElEQktl
eVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9u
V2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgZ2V0S2V5KElE
QktleVJhbmdlPyBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0
aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgZ2V0S2V5KGFueSBrZXkpOworICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgY291
bnQob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlID0gbnVsbCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBjb3VudChh
bnkga2V5KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleVJhbmdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVJhbmdlLmNwcAppbmRleCA4YjVkNDhiNGQzYjdmOWEwZWMxZWQ4YTliZDNiZDQ0MWY3OGQ1
YWUzLi40MDYwMTg3M2M1YThhOTZlODQ1M2ZkNTYwYWY2ODkyMjZmOWFlMTBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuY3BwCkBAIC03Nywx
NSArNzcsNiBAQCBSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUga2V5VmFsdWUsIEV4Y2VwdAogICAgIHJldHVybiBvbmx5KHNjcmlw
dFZhbHVlVG9JREJLZXkoc3RhdGUsIGtleVZhbHVlKSwgZWMpOwogfQogCi1SZWZQdHI8SURCS2V5
UmFuZ2U+IElEQktleVJhbmdlOjpvbmx5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IEpTVmFsdWUga2V5VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGF1dG8gZXhlYyA9
IGNvbnRleHQuZXhlY1N0YXRlKCk7Ci0gICAgaWYgKCFleGVjKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBvbmx5KHNjcmlwdFZhbHVlVG9JREJLZXkoKmV4ZWMsIGtleVZh
bHVlKSwgZWMpOwotfQotCiBSZWZQdHI8SURCS2V5UmFuZ2U+IElEQktleVJhbmdlOjpsb3dlckJv
dW5kKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgYm91bmRWYWx1ZSwgYm9vbCBvcGVuLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBhdXRvIGJvdW5kID0gc2NyaXB0VmFsdWVUb0lEQktleShz
dGF0ZSwgYm91bmRWYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlSYW5nZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaAppbmRleCA2YmY3NzM0ZWFkM2Y4NWJmZjRiOWQyNDVhOGQ4YTdhMWEwMDk4
ODE1Li5mMzU3NDM2YmE0ZDIyNWQ2YmE1ODkzM2I1ZTJiZjc1MDNmMjA3NmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmgKQEAgLTYyLDkgKzYy
LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gYm91bmQoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUgbG93ZXIsIEpTQzo6SlNWYWx1ZSB1cHBlciwgYm9v
bCBsb3dlck9wZW4sIGJvb2wgdXBwZXJPcGVuLCBFeGNlcHRpb25Db2RlJik7CiAKLSAgICAvLyBG
SVhNRTogRXZlbnR1YWxseSBzaG91bGQgcHJvYmFibHkgY2hhbmdlIGFsbCBjYWxsZXJzIHRvIGNh
bGwgdGhlIEV4ZWNTdGF0ZSB2ZXJzaW9uLgotICAgIHN0YXRpYyBSZWZQdHI8SURCS2V5UmFuZ2U+
IG9ubHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlv
bkNvZGUmKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNPbmx5S2V5KCkgY29uc3Q7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5jcHAKaW5kZXggMmE5ZjcwM2MyNjYwZjcyOWY4YWQ5YTY2NDYwMWY5YjJjMWRh
MWE4OS4uNGZmZGJmNDhkOTJjOWFkMTE0M2MwZGVhOTdmMzIwOTcyNmI4ZmZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcApA
QCAtMTI0LDcgKzEyNCw3IEBAIGJvb2wgSURCT2JqZWN0U3RvcmU6OmF1dG9JbmNyZW1lbnQoKSBj
b25zdAogICAgIHJldHVybiBtX2luZm8uYXV0b0luY3JlbWVudCgpOwogfQogCi1SZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgSURCS2V5UmFuZ2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0
cmluZywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6b3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCS2V5UmFu
Z2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvblN0cmluZywgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6Om9w
ZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CkBAIC0xNDYsMzIgKzE0NiwyNSBAQCBSZWZQ
dHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgSQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8g
aW5mbyA9IElEQkN1cnNvckluZm86Om9iamVjdFN0b3JlQ3Vyc29yKG1fdHJhbnNhY3Rpb24uZ2V0
KCksIG1faW5mby5pZGVudGlmaWVyKCksIHJhbmdlLCBkaXJlY3Rpb24pOwotICAgIHJldHVybiBt
X3RyYW5zYWN0aW9uLT5yZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCAqdGhpcywgaW5mbyk7Cisg
ICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RPcGVuQ3Vyc29yKGV4ZWNTdGF0ZSwgKnRo
aXMsIGluZm8pOwogfQogCi1SZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6Om9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIGNvbnN0
IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRy
PElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpvcGVuQ3Vyc29yKEV4ZWNTdGF0ZSYgZXhlY1N0
YXRlLCBKU1ZhbHVlIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgUmVmUHRyPElEQktleVJhbmdlPiBrZXlSYW5nZSA9IElE
QktleVJhbmdlOjpvbmx5KGNvbnRleHQsIGtleSwgZWMuY29kZSk7CisgICAgUmVmUHRyPElEQktl
eVJhbmdlPiBrZXlSYW5nZSA9IElEQktleVJhbmdlOjpvbmx5KGV4ZWNTdGF0ZSwga2V5LCBlYy5j
b2RlKTsKICAgICBpZiAoZWMuY29kZSkgewogICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRl
cmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnb3BlbkN1cnNvcicgb24gJ0lEQk9iamVjdFN0b3JlJzog
VGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZCBrZXkuIik7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLmdldCgpLCBk
aXJlY3Rpb24sIGVjKTsKKyAgICByZXR1cm4gb3BlbkN1cnNvcihleGVjU3RhdGUsIGtleVJhbmdl
LmdldCgpLCBkaXJlY3Rpb24sIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVj
dFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXks
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2Jq
ZWN0U3RvcmU6OmdldChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0
b3JlOjpnZXQiKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fdHJhbnNhY3Rpb24t
PmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkSUQoKSk7CiAKLSAgICBhdXRvIGV4ZWMgPSBjb250ZXh0
LmV4ZWNTdGF0ZSgpOwotICAgIGlmICghZXhlYykgewotICAgICAgICBlYy5jb2RlID0gSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvcjsKLSAgICAgICAgZWMubWVzc2FnZSA9IEFTQ0lJ
TGl0ZXJhbCgiRmFpbGVkIHRvIGV4ZWN1dGUgJ2dldCcgb24gJ0lEQk9iamVjdFN0b3JlJzogU2Ny
aXB0IGV4ZWN1dGlvbiBjb250ZXh0IGRvZXMgbm90IGhhdmUgYW4gZXhlY3V0aW9uIHN0YXRlLiIp
OwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KICAgICBpZiAoIW1fdHJhbnNhY3Rp
b24tPmlzQWN0aXZlKCkpIHsKICAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3I7CiAgICAgICAgIGVjLm1lc3NhZ2UgPSBBU0NJSUxp
dGVyYWwoIkZhaWxlZCB0byBleGVjdXRlICdnZXQnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSB0
cmFuc2FjdGlvbiBpcyBpbmFjdGl2ZSBvciBmaW5pc2hlZC4iKTsKQEAgLTE4NCwxNyArMTc3LDE3
IEBAIFJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Z2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIEpTVmFsdWUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgUmVmPElEQktleT4gaWRiS2V5ID0gc2NyaXB0VmFsdWVUb0lEQktleSgqZXhlYywg
a2V5KTsKKyAgICBSZWY8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNT
dGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleS0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjLmNv
ZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0YUVycm9yOwogICAgICAgICBlYy5tZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhlY3V0ZSAnZ2V0JyBvbiAnSURCT2JqZWN0U3Rv
cmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkIGtleS4iKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RHZXRS
ZWNvcmQoY29udGV4dCwgKnRoaXMsIGlkYktleS5wdHIoKSk7CisgICAgcmV0dXJuIG1fdHJhbnNh
Y3Rpb24tPnJlcXVlc3RHZXRSZWNvcmQoZXhlY1N0YXRlLCAqdGhpcywgaWRiS2V5LnB0cigpKTsK
IH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpnZXQo
RXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQktleVJhbmdlKiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJiBlYykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6
OmdldCIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTIxNiw3ICsyMDksNyBAQCBSZWZQdHI8SURC
UmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBJREJLZXlSYQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdEdldFJlY29yZChjb250ZXh0LCAqdGhpcywga2V5UmFu
Z2VEYXRhKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdEdldFJlY29yZChleGVj
U3RhdGUsICp0aGlzLCBrZXlSYW5nZURhdGEpOwogfQogCiBSZWZQdHI8SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmFkZChFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCkBAIC0zNDMsMTUgKzMzNiwx
NSBAQCBSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OnB1dE9yQWRkKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFJlZgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdFB1dE9yQWRkKCpjb250ZXh0
LCAqdGhpcywga2V5LmdldCgpLCAqc2VyaWFsaXplZFZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAg
ICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdFB1dE9yQWRkKHN0YXRlLCAqdGhpcywga2V5
LmdldCgpLCAqc2VyaWFsaXplZFZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKIH0KIAotUmVmUHRyPElE
QlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmRlbGV0ZUZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgcmV0dXJuIGRvRGVsZXRlKGNvbnRleHQs
IGtleVJhbmdlLCBlYyk7CisgICAgcmV0dXJuIGRvRGVsZXRlKGV4ZWNTdGF0ZSwga2V5UmFuZ2Us
IGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkb0RlbGV0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0
U3RvcmU6OmRvRGVsZXRlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSoga2V5UmFu
Z2UsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQk9iamVjdFN0b3JlOjpkZWxldGVGdW5jdGlvbiIpOwogICAgIEFTU0VSVChjdXJyZW50VGhy
ZWFkKCkgPT0gbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAg
LTM4NiwzNCArMzc5LDI3IEBAIFJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9E
ZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0RGVs
ZXRlUmVjb3JkKGNvbnRleHQsICp0aGlzLCBrZXlSYW5nZURhdGEpOworICAgIHJldHVybiBtX3Ry
YW5zYWN0aW9uLT5yZXF1ZXN0RGVsZXRlUmVjb3JkKGV4ZWNTdGF0ZSwgKnRoaXMsIGtleVJhbmdl
RGF0YSk7CiB9CiAKLVJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZGVsZXRlRnVu
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmRlbGV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBKU1ZhbHVlIGtleSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKIHsKLSAgICByZXR1cm4gbW9kZXJuRGVsZXRlKGNv
bnRleHQsIGtleSwgZWMpOworICAgIHJldHVybiBtb2Rlcm5EZWxldGUoZXhlY1N0YXRlLCBrZXks
IGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjptb2Rlcm5EZWxl
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
Om1vZGVybkRlbGV0ZShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSlNWYWx1ZSBrZXksIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7Ci0gICAgYXV0byBleGVjID0gY29udGV4dC5leGVjU3Rh
dGUoKTsKLSAgICBpZiAoIWV4ZWMpIHsKLSAgICAgICAgZWMuY29kZSA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3I7Ci0gICAgICAgIGVjLm1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwo
IkZhaWxlZCB0byBleGVjdXRlICdkZWxldGUnIG9uICdJREJPYmplY3RTdG9yZSc6IFNjcmlwdCBl
eGVjdXRpb24gY29udGV4dCBkb2VzIG5vdCBoYXZlIGFuIGV4ZWN1dGlvbiBzdGF0ZS4iKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmVmPElEQktleT4gaWRiS2V5ID0g
c2NyaXB0VmFsdWVUb0lEQktleSgqZXhlYywga2V5KTsKKyAgICBSZWY8SURCS2V5PiBpZGJLZXkg
PSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleS0+
aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0
YUVycm9yOwogICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnZGVsZXRlJyBvbiAnSURCT2JqZWN0U3RvcmUnOiBUaGUgcGFyYW1ldGVyIGlzIG5vdCBh
IHZhbGlkIGtleS4iKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0
dXJuIGRvRGVsZXRlKGNvbnRleHQsICZJREJLZXlSYW5nZTo6Y3JlYXRlKFdURk1vdmUoaWRiS2V5
KSkuZ2V0KCksIGVjKTsKKyAgICByZXR1cm4gZG9EZWxldGUoZXhlY1N0YXRlLCAmSURCS2V5UmFu
Z2U6OmNyZWF0ZShXVEZNb3ZlKGlkYktleSkpLmdldCgpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6Y2xlYXIoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpj
bGVhciIpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV90cmFuc2FjdGlvbi0+ZGF0
YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKQEAgLTQ0MSwxMSArNDI3LDExIEBAIFJlZlB0cjxJ
REJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgRXhjZXB0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFJl
ZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90cmFuc2FjdGlvbi0+cmVxdWVzdENsZWFyT2JqZWN0
U3RvcmUoY29udGV4dCwgKnRoaXMpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gbV90
cmFuc2FjdGlvbi0+cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoZXhlY1N0YXRlLCAqdGhpcyk7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKHJlcXVlc3QubGVha1JlZigpKTsKIH0KIAotUmVmUHRyPElEQklu
ZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCwgY29uc3QgSW5k
ZXhQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQor
UmVmUHRyPElEQkluZGV4PiBJREJPYmplY3RTdG9yZTo6Y3JlYXRlSW5kZXgoRXhlY1N0YXRlJiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiBrZXlQYXRoLCBjb25zdCBJbmRl
eFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7
CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjcmVhdGVJbmRleCAlcyIsIG5h
bWUudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RyYW5z
YWN0aW9uLT5kYXRhYmFzZSgpLm9yaWdpblRocmVhZElEKCkpOwpAQCAtNTkwLDM1ICs1NzYsMjgg
QEAgdm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGUKICAgICBtX3RyYW5zYWN0aW9uLT5kZWxldGVJbmRl
eChtX2luZm8uaWRlbnRpZmllcigpLCBuYW1lKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElE
Qk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU1Zh
bHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykKK1JlZlB0cjxJREJSZXF1ZXN0
PiBJREJPYmplY3RTdG9yZTo6Y291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIEpTVmFsdWUga2V5
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIExPRyhJbmRleGVkREIsICJJ
REJPYmplY3RTdG9yZTo6Y291bnQiKTsKIAotICAgIGF1dG8gZXhlYyA9IGNvbnRleHQuZXhlY1N0
YXRlKCk7Ci0gICAgaWYgKCFleGVjKSB7Ci0gICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4
Y2VwdGlvbjo6VW5rbm93bkVycm9yOwotICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRlcmFs
KCJGYWlsZWQgdG8gZXhlY3V0ZSAnY291bnQnIG9uICdJREJPYmplY3RTdG9yZSc6IFNjcmlwdCBl
eGVjdXRpb24gY29udGV4dCBkb2VzIG5vdCBoYXZlIGFuIGV4ZWN1dGlvbiBzdGF0ZS4iKTsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmVmPElEQktleT4gaWRiS2V5ID0g
c2NyaXB0VmFsdWVUb0lEQktleSgqZXhlYywga2V5KTsKKyAgICBSZWY8SURCS2V5PiBpZGJLZXkg
PSBzY3JpcHRWYWx1ZVRvSURCS2V5KGV4ZWNTdGF0ZSwga2V5KTsKICAgICBpZiAoIWlkYktleS0+
aXNWYWxpZCgpKSB7CiAgICAgICAgIGVjLmNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6RGF0
YUVycm9yOwogICAgICAgICBlYy5tZXNzYWdlID0gQVNDSUlMaXRlcmFsKCJGYWlsZWQgdG8gZXhl
Y3V0ZSAnY291bnQnIG9uICdJREJPYmplY3RTdG9yZSc6IFRoZSBwYXJhbWV0ZXIgaXMgbm90IGEg
dmFsaWQga2V5LiIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1
cm4gZG9Db3VudChjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LnB0cigpKSwgZWMpOwor
ICAgIHJldHVybiBkb0NvdW50KGV4ZWNTdGF0ZSwgSURCS2V5UmFuZ2VEYXRhKGlkYktleS5wdHIo
KSksIGVjKTsKIH0KIAotUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCitSZWZQdHI8SURCUmVxdWVzdD4gSURCT2JqZWN0U3Rv
cmU6OmNvdW50KEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2Vw
dGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVj
dFN0b3JlOjpjb3VudCIpOwogCi0gICAgcmV0dXJuIGRvQ291bnQoY29udGV4dCwgcmFuZ2UgPyBJ
REJLZXlSYW5nZURhdGEocmFuZ2UpIDogSURCS2V5UmFuZ2VEYXRhOjphbGxLZXlzKCksIGVjKTsK
KyAgICByZXR1cm4gZG9Db3VudChleGVjU3RhdGUsIHJhbmdlID8gSURCS2V5UmFuZ2VEYXRhKHJh
bmdlKSA6IElEQktleVJhbmdlRGF0YTo6YWxsS2V5cygpLCBlYyk7CiB9CiAKLVJlZlB0cjxJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmIGVjKQorUmVmUHRyPElEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50KEV4
ZWNTdGF0ZSYgZXhlY1N0YXRlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmIGVjKQogewogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0g
bV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5vcmlnaW5UaHJlYWRJRCgpKTsKIApAQCAtNjQ0LDcg
KzYyMyw3IEBAIFJlZlB0cjxJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q291bnQoY29udGV4
dCwgKnRoaXMsIHJhbmdlKTsKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdENvdW50
KGV4ZWNTdGF0ZSwgKnRoaXMsIHJhbmdlKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6bWFy
a0FzRGVsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaAppbmRleCA1ZjQ2ZTJmZGJhYjI0YjM0ZjliZTcyZDJkNDEyYjQwMDE5MDgy
YmMyLi5hOGRlYzdkZTI2OTY0ZWY1YmU5ODQyMjBlYzFlMWU0MDcxZTc2YzA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmgKQEAgLTcw
LDIzICs3MCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgbXVsdGlFbnRyeTsKICAgICB9Owog
Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFsdWUga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGdl
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29k
ZVdpdGhNZXNzYWdlJik7Ci0gICAgUmVmUHRyPElEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAg
ICBSZWZQdHI8SURCUmVxdWVzdD4gb3BlbkN1cnNvcihKU0M6OkV4ZWNTdGF0ZSYsIElEQktleVJh
bmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
OworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBnZXQoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8
SURCUmVxdWVzdD4gZ2V0KEpTQzo6RXhlY1N0YXRlJiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsK
LSAgICBSZWZQdHI8SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7Ci0gICAgUmVm
UHRyPElEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBK
U0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICBSZWZQdHI8
SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJJbmRleD4gY3JlYXRlSW5kZXgoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGNv
bnN0IEluZGV4UGFyYW1ldGVycyYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIElEQktleVJh
bmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+
IGRlbGV0ZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0
aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGNsZWFyKEpTQzo6
RXhlY1N0YXRlJiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQklu
ZGV4PiBjcmVhdGVJbmRleChKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgSURCS2V5UGF0aCYsIGNvbnN0IEluZGV4UGFyYW1ldGVycyYsIEV4Y2VwdGlvbkNvZGVXaXRo
TWVzc2FnZSYpOwogICAgIFJlZlB0cjxJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKICAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7Ci0gICAgUmVmUHRyPElE
QlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJLZXlSYW5nZSosIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGNvdW50KEpTQzo6RXhlY1N0YXRl
JiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8
SURCUmVxdWVzdD4gY291bnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKIAogICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBwdXRGb3JD
dXJzb3JVcGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSBr
ZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwotICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBt
b2Rlcm5EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEpTQzo6SlNWYWx1ZSBrZXksIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOworICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtb2Rlcm5E
ZWxldGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UmKTsKIAogICAgIHZvaWQgbWFya0FzRGVsZXRlZCgpOwogICAgIGJvb2wgaXNEZWxl
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWxldGVkOyB9CkBAIC0xMDUsOCArMTA1LDggQEAgcHJp
dmF0ZToKIAogICAgIGVudW0gY2xhc3MgSW5saW5lS2V5Q2hlY2sgeyBQZXJmb3JtLCBEb05vdFBl
cmZvcm0gfTsKICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcHV0T3JBZGQoSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSwgSW5saW5lS2V5Q2hlY2ssIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwot
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBkb0NvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKLSAgICBS
ZWZQdHI8SURCUmVxdWVzdD4gZG9EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQktl
eVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CisgICAgUmVmUHRyPElEQlJlcXVl
c3Q+IGRvQ291bnQoSlNDOjpFeGVjU3RhdGUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKTsKKyAgICBSZWZQdHI8SURCUmVxdWVzdD4gZG9EZWxldGUo
SlNDOjpFeGVjU3RhdGUmLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
OwogCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUu
aWRsCmluZGV4IDY1YzJlYmYyNzI5Y2JkMmZjOGE3YTdmYTUyM2RlNjZiMzRiZTgxZDAuLmRiMDg3
OTZkMjUwZGZhNzY3OGZhOGU1NGE2ZjMwYjI4Y2FlYzc0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTM4LDE5ICsz
OCwxOSBAQAogCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRo
TWVzc2FnZV0gSURCUmVxdWVzdCBwdXQoYW55IHZhbHVlLCBvcHRpb25hbCBhbnkga2V5KTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJS
ZXF1ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBSYWlz
ZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtl
eVJhbmdlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50
ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVl
c3QgZGVsZXRlKGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/
IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2Vw
dGlvbldpdGhNZXNzYWdlXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJl
cXVlc3QgY2xlYXIoKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFp
c2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJ
REJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uID0g
Im5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhj
ZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25h
bCBET01TdHJpbmcgZGlyZWN0aW9uID0gIm5leHQiKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQkluZGV4IGNyZWF0
ZUluZGV4KERPTVN0cmluZyBuYW1lLCBzZXF1ZW5jZTxET01TdHJpbmc+IGtleVBhdGgsIG9wdGlv
bmFsIElEQkluZGV4UGFyYW1ldGVycyBvcHRpb25zKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQkluZGV4IGNyZWF0
ZUluZGV4KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5k
ZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgSW1wbGVt
ZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJl
cXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBSYWlzZXNFeGNlcHRpb25XaXRo
TWVzc2FnZV0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBnZXQoSURCS2V5
UmFuZ2U/IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25X
aXRoTWVzc2FnZV0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCUmVxdWVzdCBjbGVhcigpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElE
QlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UgPSBudWxsLCBv
cHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uID0gIm5leHQiKTsKKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJSZXF1ZXN0IG9wZW5DdXJz
b3IoYW55IGtleSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbiA9ICJuZXh0Iik7CisgICAg
W0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURCSW5k
ZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIHNlcXVlbmNlPERPTVN0cmluZz4ga2V5UGF0
aCwgb3B0aW9uYWwgSURCSW5kZXhQYXJhbWV0ZXJzIG9wdGlvbnMpOworICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQkluZGV4IGNyZWF0ZUlu
ZGV4KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcga2V5UGF0aCwgb3B0aW9uYWwgSURCSW5kZXhQ
YXJhbWV0ZXJzIG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0gSURC
SW5kZXggaW5kZXgoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25XaXRoTWVz
c2FnZV0gdm9pZCBkZWxldGVJbmRleChET01TdHJpbmcgbmFtZSk7Ci0gICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJSZXF1
ZXN0IGNvdW50KG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSA9IG51bGwpOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25XaXRoTWVzc2FnZV0g
SURCUmVxdWVzdCBjb3VudChhbnkga2V5KTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJh
aXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlXSBJREJSZXF1ZXN0IGNvdW50KG9wdGlvbmFsIElEQktl
eVJhbmdlPyByYW5nZSA9IG51bGwpOworICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2Vz
RXhjZXB0aW9uV2l0aE1lc3NhZ2VdIElEQlJlcXVlc3QgY291bnQoYW55IGtleSk7CiB9OwogCiBk
aWN0aW9uYXJ5IElEQkluZGV4UGFyYW1ldGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggZTgzNzFkN2I1YTg2NThm
NTc1ODIxMTEwZDlhZTY4NGFjNGZhMGI0OC4uMzAyNzU4NzY5ODM0Y2M0OWEyZDg5N2Q4MzgyYWQ0
ZDllMGM3MTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtNDksOSArNDksMTIgQEAKICNpbmNsdWRlICJKU0RPTVdp
bmRvd0Jhc2UuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiVHJhbnNh
Y3Rpb25PcGVyYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAordXNp
bmcgbmFtZXNwYWNlIEpTQzsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBBdG9taWNT
dHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlUmVhZE9ubHkoKQpAQCAtNjQ1LDMxICs2NDgsMzQg
QEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkQ3JlYXRlSW5kZXhPblNlcnZlcihjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogICAgIGFib3J0RHVlVG9GYWlsZWRSZXF1ZXN0KERPTUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OmdldEVycm9yTmFtZShyZXN1bHREYXRh
LmVycm9yKCkuY29kZSgpKSwgcmVzdWx0RGF0YS5lcnJvcigpLm1lc3NhZ2UoKSkpOwogfQogCi1S
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29u
c3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdE9wZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQk9iamVjdFN0b3JlJiBv
YmplY3RTdG9yZSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RPcGVuQ3Vyc29yIik7CiAgICAgQVNTRVJUKGN1
cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIHJl
dHVybiBkb1JlcXVlc3RPcGVuQ3Vyc29yKGNvbnRleHQsIElEQkN1cnNvcldpdGhWYWx1ZTo6Y3Jl
YXRlKCp0aGlzLCBvYmplY3RTdG9yZSwgaW5mbykpOworICAgIHJldHVybiBkb1JlcXVlc3RPcGVu
Q3Vyc29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yV2l0aFZhbHVlOjpjcmVhdGUoKnRoaXMsIG9iamVj
dFN0b3JlLCBpbmZvKSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdE9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCSW5kZXgm
IGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQorUmVmPElEQlJlcXVlc3Q+IElEQlRy
YW5zYWN0aW9uOjpyZXF1ZXN0T3BlbkN1cnNvcihFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCSW5k
ZXgmIGluZGV4LCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVk
REIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdE9wZW5DdXJzb3IiKTsKICAgICBBU1NFUlQoY3Vy
cmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCiAgICAgaWYg
KGluZm8uY3Vyc29yVHlwZSgpID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5T25seSkKLSAg
ICAgICAgcmV0dXJuIGRvUmVxdWVzdE9wZW5DdXJzb3IoY29udGV4dCwgSURCQ3Vyc29yOjpjcmVh
dGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CisgICAgICAgIHJldHVybiBkb1JlcXVlc3RPcGVuQ3Vy
c29yKGV4ZWNTdGF0ZSwgSURCQ3Vyc29yOjpjcmVhdGUoKnRoaXMsIGluZGV4LCBpbmZvKSk7CiAK
LSAgICByZXR1cm4gZG9SZXF1ZXN0T3BlbkN1cnNvcihjb250ZXh0LCBJREJDdXJzb3JXaXRoVmFs
dWU6OmNyZWF0ZSgqdGhpcywgaW5kZXgsIGluZm8pKTsKKyAgICByZXR1cm4gZG9SZXF1ZXN0T3Bl
bkN1cnNvcihleGVjU3RhdGUsIElEQkN1cnNvcldpdGhWYWx1ZTo6Y3JlYXRlKCp0aGlzLCBpbmRl
eCwgaW5mbykpOwogfQogCi1SZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVz
dE9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPElEQkN1cnNv
cj4mJiBjdXJzb3IpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OmRvUmVxdWVzdE9w
ZW5DdXJzb3IoRXhlY1N0YXRlJiBleGVjU3RhdGUsIFJlZjxJREJDdXJzb3I+JiYgY3Vyc29yKQog
ewogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09
IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgY3Vyc29yLmdldCgpLCAqdGhpcyk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKGV4ZWNTdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZleGVjU3RhdGUpKTsKKworICAgIFJlZjxJREJS
ZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIGN1cnNvci5nZXQoKSwgKnRoaXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQo
KSk7CiAKICAgICBhdXRvIG9wZXJhdGlvbiA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24oKnRoaXMsIHJlcXVlc3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkT3BlbkN1
cnNvck9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246Om9wZW5DdXJzb3JPblNlcnZlciwgY3Vyc29y
LT5pbmZvKCkpOwpAQCAtNzIzLDE0ICs3MjksMTcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlk
SXRlcmF0ZUN1cnNvck9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IElEQlJlc3UK
ICAgICByZXF1ZXN0LmRpZE9wZW5Pckl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CiB9CiAKLVJl
ZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0R2V0UmVjb3JkKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJPYmplY3RT
dG9yZSYgb2JqZWN0U3RvcmUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFJlY29yZCIp
OwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIWtleVJhbmdlRGF0YS5pc051
bGwpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCBvYmplY3RTdG9yZSwgKnRoaXMpOworICAgIFJFTEVBU0VfQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChleGVjU3RhdGUsIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA9PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0RnJvbUV4ZWNT
dGF0ZSgmZXhlY1N0YXRlKSk7CisKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJl
cXVlc3Q6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBvYmplY3RTdG9yZSwgKnRo
aXMpOwogICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CiAKICAgICBhdXRvIG9wZXJhdGlv
biA9IElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVlc3Qu
Z2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2ZXIsICZJREJUcmFuc2Fj
dGlvbjo6Z2V0UmVjb3JkT25TZXJ2ZXIsIGtleVJhbmdlRGF0YSk7CkBAIC03MzksMzAgKzc0OCwz
MyBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRSZWNvcmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1S
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRW
YWx1ZShFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIHJhbmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6
cmVxdWVzdEdldFZhbHVlIik7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFi
YXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIHJldHVybiByZXF1ZXN0SW5kZXhSZWNvcmQo
Y29udGV4dCwgaW5kZXgsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlOjpWYWx1ZSwgcmFuZ2Up
OworICAgIHJldHVybiByZXF1ZXN0SW5kZXhSZWNvcmQoZXhlY1N0YXRlLCBpbmRleCwgSW5kZXhl
ZERCOjpJbmRleFJlY29yZFR5cGU6OlZhbHVlLCByYW5nZSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCitS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRLZXkoRXhlY1N0YXRlJiBl
eGVjU3RhdGUsIElEQkluZGV4JiBpbmRleCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
IHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RHZXRWYWx1ZSIp
OwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhyZWFk
SUQoKSk7CiAKLSAgICByZXR1cm4gcmVxdWVzdEluZGV4UmVjb3JkKGNvbnRleHQsIGluZGV4LCBJ
bmRleGVkREI6OkluZGV4UmVjb3JkVHlwZTo6S2V5LCByYW5nZSk7CisgICAgcmV0dXJuIHJlcXVl
c3RJbmRleFJlY29yZChleGVjU3RhdGUsIGluZGV4LCBJbmRleGVkREI6OkluZGV4UmVjb3JkVHlw
ZTo6S2V5LCByYW5nZSk7CiB9CiAKLVJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdEluZGV4UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQkluZGV4
JiBpbmRleCwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUgdHlwZSwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJnJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0SW5k
ZXhSZWNvcmQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQkluZGV4JiBpbmRleCwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGUgdHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJnJhbmdlKQogewog
ICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdEdldFZhbHVlIik7CiAg
ICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghcmFuZ2UuaXNOdWxsKTsKICAgICBB
U1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElEKCkpOwog
Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGVHZXQoY29u
dGV4dCwgaW5kZXgsIHR5cGUsICp0aGlzKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZXhlY1N0YXRlLCBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUoJmV4
ZWNTdGF0ZSkpOworCisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0Ojpj
cmVhdGVHZXQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsIHR5cGUsICp0aGlzKTsK
ICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgYXV0byBvcGVyYXRpb24gPSBJ
REJDbGllbnQ6OmNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgp
LCAmSURCVHJhbnNhY3Rpb246OmRpZEdldFJlY29yZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246
OmdldFJlY29yZE9uU2VydmVyLCByYW5nZSk7CkBAIC04MDgsMTQgKzgyMCwxNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBJREJSZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRh
KTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3Jl
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5z
YWN0aW9uOjpyZXF1ZXN0Q291bnQoRXhlY1N0YXRlJiBleGVjU3RhdGUsIElEQk9iamVjdFN0b3Jl
JiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudCAoSURCT2JqZWN0U3RvcmUp
Iik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwogICAgIEFTU0VSVCghcmFuZ2UuaXNOdWxsKTsK
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgb2JqZWN0U3RvcmUsICp0aGlzKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZXhlY1N0YXRlLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
JmV4ZWNTdGF0ZSkpOworCisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsK
ICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgc2NoZWR1bGVPcGVyYXRpb24o
SURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQo
KSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246
OmdldENvdW50T25TZXJ2ZXIsIHJhbmdlKSk7CkBAIC04MjMsMTQgKzgzOCwxNyBAQCBSZWY8SURC
UmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBJRAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1SZWY8SURCUmVxdWVz
dD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBJREJJbmRleCYgaW5kZXgsIGNvbnN0IElEQktleVJhbmdlRGF0YSYgcmFuZ2UpCitS
ZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudChFeGVjU3RhdGUmIGV4
ZWNTdGF0ZSwgSURCSW5kZXgmIGluZGV4LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQog
ewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENvdW50IChJREJJ
bmRleCkiKTsKICAgICBBU1NFUlQoaXNBY3RpdmUoKSk7CiAgICAgQVNTRVJUKCFyYW5nZS5pc051
bGwpOwogICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gbV9kYXRhYmFzZS0+b3JpZ2luVGhy
ZWFkSUQoKSk7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNy
ZWF0ZUNvdW50KGNvbnRleHQsIGluZGV4LCAqdGhpcyk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0
YXRlKCZleGVjU3RhdGUpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlQ291bnQoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgaW5kZXgsICp0aGlz
KTsKICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgc2NoZWR1bGVPcGVyYXRp
b24oSURCQ2xpZW50OjpjcmVhdGVUcmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5n
ZXQoKSwgJklEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyLCAmSURCVHJhbnNhY3Rp
b246OmdldENvdW50T25TZXJ2ZXIsIHJhbmdlKSk7CkBAIC04NTUsMTQgKzg3MywxNyBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyKElEQlJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IElEQlJlc3VsdERhdAogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHRE
YXRhKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0RGVsZXRl
UmVjb3JkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElEQk9iamVjdFN0b3JlJiBv
YmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkKK1JlZjxJREJSZXF1ZXN0
PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0ZVJlY29yZChFeGVjU3RhdGUmIGV4ZWNTdGF0
ZSwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVzdERlbGV0
ZVJlY29yZCIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKICAgICBBU1NFUlQoIXJhbmdlLmlz
TnVsbCk7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5U
aHJlYWRJRCgpKTsKIAotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6
Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgUkVMRUFTRV9BU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhl
Y1N0YXRlKCZleGVjU3RhdGUpKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAq
dGhpcyk7CiAgICAgYWRkUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKIAogICAgIHNjaGVkdWxlT3Bl
cmF0aW9uKElEQkNsaWVudDo6Y3JlYXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oKnRoaXMsIHJlcXVl
c3QuZ2V0KCksICZJREJUcmFuc2FjdGlvbjo6ZGlkRGVsZXRlUmVjb3JkT25TZXJ2ZXIsICZJREJU
cmFuc2FjdGlvbjo6ZGVsZXRlUmVjb3JkT25TZXJ2ZXIsIHJhbmdlKSk7CkBAIC04ODYsMTMgKzkw
NywxNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWREZWxldGVSZWNvcmRPblNlcnZlcihJREJS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bAogICAgIHJlcXVlc3QucmVxdWVzdENvbXBs
ZXRlZChyZXN1bHREYXRhKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpy
ZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBJ
REJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCitSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rp
b246OnJlcXVlc3RDbGVhck9iamVjdFN0b3JlKEV4ZWNTdGF0ZSYgZXhlY1N0YXRlLCBJREJPYmpl
Y3RTdG9yZSYgb2JqZWN0U3RvcmUpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSIpOwogICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsK
ICAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IG1fZGF0YWJhc2UtPm9yaWdpblRocmVhZElE
KCkpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
Y29udGV4dCwgb2JqZWN0U3RvcmUsICp0aGlzKTsKKyAgICBSRUxFQVNFX0FTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOworICAgIEFTU0VSVF9VTlVTRUQoZXhlY1N0YXRlLCBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgPT0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dEZyb21FeGVjU3RhdGUo
JmV4ZWNTdGF0ZSkpOworCisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0
OjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgb2JqZWN0U3RvcmUsICp0aGlzKTsK
ICAgICBhZGRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwogCiAgICAgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyID0gb2JqZWN0U3RvcmUuaW5mbygpLmlkZW50aWZpZXIoKTsKQEAgLTkxOSw3
ICs5NDMsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpkaWRDbGVhck9iamVjdFN0b3JlT25TZXJ2
ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUgogICAgIHJlcXVlc3QucmVxdWVzdENv
bXBsZXRlZChyZXN1bHREYXRhKTsKIH0KIAotUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9u
OjpyZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2Jq
ZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBJREJLZXkqIGtleSwgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiB2YWx1ZSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUgb3ZlcndyaXRlTW9k
ZSkKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkKEV4ZWNT
dGF0ZSYgZXhlY1N0YXRlLCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUsIElEQktleSoga2V5
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmIHZhbHVlLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSBvdmVyd3JpdGVNb2RlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdFB1dE9yQWRkIik7CiAgICAgQVNTRVJUKGlzQWN0aXZlKCkpOwpAQCAt
OTI3LDcgKzk1MSwxMCBAQCBSZWY8SURCUmVxdWVzdD4gSURCVHJhbnNhY3Rpb246OnJlcXVlc3RQ
dXRPckFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LAogICAgIEFTU0VSVChvYmpl
Y3RTdG9yZS5pbmZvKCkuYXV0b0luY3JlbWVudCgpIHx8IGtleSk7CiAgICAgQVNTRVJUKGN1cnJl
bnRUaHJlYWQoKSA9PSBtX2RhdGFiYXNlLT5vcmlnaW5UaHJlYWRJRCgpKTsKIAotICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0
b3JlLCAqdGhpcyk7CisgICAgUkVMRUFTRV9BU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKGV4ZWNTdGF0ZSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
ID09IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRGcm9tRXhlY1N0YXRlKCZleGVjU3RhdGUpKTsKKwor
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVxdWVzdDo6Y3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIG9iamVjdFN0b3JlLCAqdGhpcyk7CiAgICAgYWRkUmVxdWVzdChy
ZXF1ZXN0LmdldCgpKTsKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gSURCQ2xpZW50OjpjcmVhdGVU
cmFuc2FjdGlvbk9wZXJhdGlvbigqdGhpcywgcmVxdWVzdC5nZXQoKSwgJklEQlRyYW5zYWN0aW9u
OjpkaWRQdXRPckFkZE9uU2VydmVyLCAmSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIs
IGtleSwgJnZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDVhMDkyZmVmMTQ0NzQyYTc3OGMw
ZWRhMDU3MTJhNzk2MDJhOWM3ZjkuLjEzYzY3OTM4MzZlYzIzN2NlNTJlMGE3NTRhMzNhYzYzMDQ0
ZGM4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaApAQCAtMTEzLDE2ICsxMTMsMTYgQEAgcHVibGljOgogICAgIFJlZjxJREJPYmpl
Y3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkluZGV4PiBjcmVhdGVJbmRleChJREJPYmplY3RTdG9yZSYs
IGNvbnN0IElEQkluZGV4SW5mbyYpOwogCi0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RQdXRP
ckFkZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBJREJLZXkqLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAg
UmVmPElEQlJlcXVlc3Q+IHJlcXVlc3REZWxldGVSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7Ci0gICAgUmVmPElE
QlJlcXVlc3Q+IHJlcXVlc3RDbGVhck9iamVjdFN0b3JlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBJREJPYmplY3RTdG9yZSYpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291bnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0b3JlJiwgY29uc3QgSURCS2V5UmFuZ2VE
YXRhJik7Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCSW5kZXgmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKLSAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdEdldFZhbHVlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRl
eCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0
R2V0S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJh
bmdlRGF0YSYpOwotICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0T3BlbkN1cnNvcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7
Ci0gICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RPcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKKyAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdFB1dE9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSURCT2JqZWN0U3RvcmUmLCBJ
REJLZXkqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSk7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RHZXRSZWNvcmQoSlNDOjpF
eGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAg
IFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0RGVsZXRlUmVjb3JkKEpTQzo6RXhlY1N0YXRlJiwgSURC
T2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVz
dD4gcmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9y
ZSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q291bnQoSlNDOjpFeGVjU3RhdGUmLCBJ
REJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0Q291bnQoSlNDOjpFeGVjU3RhdGUmLCBJREJJbmRleCYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpOworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0VmFsdWUoSlNDOjpF
eGVjU3RhdGUmLCBJREJJbmRleCYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIFJlZjxJ
REJSZXF1ZXN0PiByZXF1ZXN0R2V0S2V5KEpTQzo6RXhlY1N0YXRlJiwgSURCSW5kZXgmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJz
b3IoSlNDOjpFeGVjU3RhdGUmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQkN1cnNvckluZm8m
KTsKKyAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdE9wZW5DdXJzb3IoSlNDOjpFeGVjU3RhdGUm
LCBJREJJbmRleCYsIGNvbnN0IElEQkN1cnNvckluZm8mKTsKICAgICB2b2lkIGl0ZXJhdGVDdXJz
b3IoSURCQ3Vyc29yJiwgY29uc3QgSURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpOwog
CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVPbkFib3J0KCk7
CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKTsKIAotICAgIFJlZjxJREJSZXF1
ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkluZGV4
JiwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwor
ICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0SW5kZXhSZWNvcmQoSlNDOjpFeGVjU3RhdGUmLCBJ
REJJbmRleCYsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmKTsKIAogICAgIHZvaWQgY29tbWl0T25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYpOwogICAgIHZvaWQgYWJvcnRPblNlcnZlckFuZENhbmNlbFJlcXVlc3RzKElEQkNs
aWVudDo6VHJhbnNhY3Rpb25PcGVyYXRpb24mKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGVsZXRlSW5kZXhPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3Bl
cmF0aW9uJiwgY29uc3QgdWludDY0X3QmIG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUpOwogICAgIHZvaWQgZGlkRGVsZXRlSW5kZXhPblNlcnZlcihjb25zdCBJ
REJSZXN1bHREYXRhJik7CiAKLSAgICBSZWY8SURCUmVxdWVzdD4gZG9SZXF1ZXN0T3BlbkN1cnNv
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPElEQkN1cnNvcj4mJik7CisgICAgUmVmPElE
QlJlcXVlc3Q+IGRvUmVxdWVzdE9wZW5DdXJzb3IoSlNDOjpFeGVjU3RhdGUmLCBSZWY8SURCQ3Vy
c29yPiYmKTsKICAgICB2b2lkIG9wZW5DdXJzb3JPblNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0
aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCQ3Vyc29ySW5mbyYpOwogICAgIHZvaWQgZGlkT3BlbkN1
cnNvck9uU2VydmVyKElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
CmluZGV4IDMzNzA1NDY3YzNiNWMwYTE3OTQ2ZGZlMTY5NjRlYmQ3ZmE1MzQ4MjUuLjA3OTZiM2M1
YWJhOGJjMDE1ODQxZGQ5N2RkMDg3ZWY1OTA4OTUzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNDg2LDYgKzQ4
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVHJhbnNhY3Rpb25BY3RpdmF0b3IgYWN0aXZhdG9yKGlk
YlRyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlIGVj
OwogICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRiUmVxdWVzdDsKKyAgICAgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBjb250ZXh0KCkgPyBjb250ZXh0KCktPmV4ZWNTdGF0ZSgpIDogbnVs
bHB0cjsKICAgICAgICAgaWYgKCFtX2luZGV4TmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IFJlZlB0cjxJREJJbmRleD4gaWRiSW5kZXggPSBpbmRleEZvck9iamVjdFN0b3JlKGlkYk9iamVj
dFN0b3JlLmdldCgpLCBtX2luZGV4TmFtZSk7CiAgICAgICAgICAgICBpZiAoIWlkYkluZGV4KSB7
CkBAIC00OTMsOSArNDk0LDkgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWRiUmVxdWVzdCA9IGlkYkluZGV4LT5vcGVuQ3Vy
c29yKCpjb250ZXh0KCksIG1faWRiS2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6ZGlyZWN0aW9u
TmV4dCgpLCBlYyk7CisgICAgICAgICAgICBpZGJSZXF1ZXN0ID0gZXhlYyA/IGlkYkluZGV4LT5v
cGVuQ3Vyc29yKCpleGVjLCBtX2lkYktleVJhbmdlLmdldCgpLCBJREJDdXJzb3I6OmRpcmVjdGlv
bk5leHQoKSwgZWMpIDogbnVsbHB0cjsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBpZGJS
ZXF1ZXN0ID0gaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IoKmNvbnRleHQoKSwgbV9pZGJLZXlS
YW5nZS5nZXQoKSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsKKyAgICAgICAgICAg
IGlkYlJlcXVlc3QgPSBleGVjID8gaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IoKmV4ZWMsIG1f
aWRiS2V5UmFuZ2UuZ2V0KCksIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYykgOiBudWxs
cHRyOwogCiAgICAgICAgIGlmICghaWRiUmVxdWVzdCkgewogICAgICAgICAgICAgbV9yZXF1ZXN0
Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJDb3VsZCBub3Qgb3BlbiBjdXJzb3IgdG8gcG9wdWxhdGUg
ZGF0YWJhc2UgZGF0YSIpOwpAQCAtNzE4LDcgKzcxOSw4IEBAIHB1YmxpYzoKICAgICAgICAgfQog
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSBlYzsKLSAgICAgICAgUmVmUHRyPElE
QlJlcXVlc3Q+IGlkYlJlcXVlc3QgPSBpZGJPYmplY3RTdG9yZS0+Y2xlYXIoKmNvbnRleHQoKSwg
ZWMpOworICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IGNvbnRleHQoKSA/IGNvbnRleHQo
KS0+ZXhlY1N0YXRlKCkgOiBudWxscHRyOworICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gaWRi
UmVxdWVzdCA9IGV4ZWMgPyBpZGJPYmplY3RTdG9yZS0+Y2xlYXIoKmV4ZWMsIGVjKSA6IG51bGxw
dHI7CiAgICAgICAgIEFTU0VSVCghZWMuY29kZSk7CiAgICAgICAgIGlmIChlYy5jb2RlKSB7CiAg
ICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoU3RyaW5nOjpmb3JtYXQo
IkNvdWxkIG5vdCBjbGVhciBvYmplY3Qgc3RvcmUgJyVzJzogJWQiLCBtX29iamVjdFN0b3JlTmFt
ZS51dGY4KCkuZGF0YSgpLCBlYy5jb2RlKSk7Cg==
</data>
<flag name="review"
          id="307769"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>