<?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>142307</bug_id>
          
          <creation_ts>2015-03-04 13:44:01 -0800</creation_ts>
          <short_desc>REGRESSION(r181001): Broke many tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-03-04 13:47:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142282</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1074211</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 13:44:01 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/181001 broke the build:
Broke many tests (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074213</commentid>
    <comment_count>1</comment_count>
      <attachid>247891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 13:44:30 -0800</bug_when>
    <thetext>Created attachment 247891
ROLLOUT of r181001

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074217</commentid>
    <comment_count>2</comment_count>
      <attachid>247891</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 13:47:54 -0800</bug_when>
    <thetext>Comment on attachment 247891
ROLLOUT of r181001

Clearing flags on attachment: 247891

Committed r181024: &lt;http://trac.webkit.org/changeset/181024&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074218</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-04 13:47:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247891</attachid>
            <date>2015-03-04 13:44:30 -0800</date>
            <delta_ts>2015-03-04 13:47:54 -0800</delta_ts>
            <desc>ROLLOUT of r181001</desc>
            <filename>bug-142307-20150304134411.patch</filename>
            <type>text/plain</type>
            <size>193297</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2UzZTFjYmU2OWYzYWRj
NTdiZjg2ODM0NGQ3ODI4OGQzM2NmNjkzOS4uMzQ3NmE3MGFmMDE3ZDIwMWY0ZjRhN2JiZDc5OTRk
NzE0ODA0MzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE1LTAzLTA0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgxMDAxIGFuZCByMTgxMDAzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMzA3CisKKyAgICAgICAgQnJva2UgbWFueSB0
ZXN0cyAoUmVxdWVzdGVkIGJ5IGFwIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldHM6CisKKyAgICAgICAgIk1ha2UgSmF2YVNjcmlwdCBiaW5kaW5nIGdldCBhbmQgc2V0
IGxlZ2FjeSBldmVudCBsaXN0ZW5lcgorICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGx5IgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMjgyCisgICAg
ICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTAwMQorCisgICAgICAgICJV
cGRhdGUgYmluZGluZ3MgdGVzdHMgYWZ0ZXIgcjE4MTAwMS4iCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTAwMworCiAyMDE1LTAzLTA0ICBSb2dlciBGb25nICA8
cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGVsYXBzZWQvcmVtYWluaW5n
IHRpbWUgZGlzcGxheXMgb24gbWVkaWEgaW5saW5lIGNvbnRyb2xzIG9uIE9TWC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDk1OWIyMzY2
NzQzZDc5ZjYzYjBhYWMxYmFjODEyYmQxYmZkNTQ4Y2IuLmEyY2YyNjhkZDY2NGY2NmFiOGZjNmE3
ZDA2NGJkMmMwZDA3YzFmODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcApAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgIkJlZm9yZVVubG9h
ZEV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSlNFdmVudC5oIgogI2luY2x1ZGUgIkpTRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKQEAgLTE3MSw0
OSArMTcwLDQgQEAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9y
QWRkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU08KICAgICByZXR1cm4gSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoJmxpc3RlbmVyLCAmd3JhcHBlciwgZmFsc2UsIGN1cnJlbnRXb3JsZCgm
c3RhdGUpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkpTVmFsdWUgZXZlbnRIYW5kbGVyQXR0
cmlidXRlKEV2ZW50TGlzdGVuZXIqIGFic3RyYWN0TGlzdGVuZXIsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKCFhYnN0cmFjdExpc3RlbmVyKQotICAgICAgICBy
ZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBhdXRvKiBsaXN0ZW5lciA9IEpTRXZlbnRMaXN0ZW5lcjo6
Y2FzdChhYnN0cmFjdExpc3RlbmVyKTsKLSAgICBpZiAoIWxpc3RlbmVyKQotICAgICAgICByZXR1
cm4ganNOdWxsKCk7Ci0KLSAgICBhdXRvKiBmdW5jdGlvbiA9IGxpc3RlbmVyLT5qc0Z1bmN0aW9u
KCZjb250ZXh0KTsKLSAgICBpZiAoIWZ1bmN0aW9uKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7
Ci0KLSAgICByZXR1cm4gZnVuY3Rpb247Ci19Ci0KLXN0YXRpYyBpbmxpbmUgUmVmUHRyPEpTRXZl
bnRMaXN0ZW5lcj4gY3JlYXRlRXZlbnRMaXN0ZW5lckZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBsaXN0ZW5lciwgSlNDOjpKU09iamVj
dCYgd3JhcHBlcikKLXsKLSAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lciksICZ3cmFwcGVyLCB0cnVlLCBjdXJyZW50V29ybGQoJnN0YXRlKSk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1dGUoRXZlbnRUYXJnZXQmIHRhcmdldCwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCi17Ci0gICAgcmV0dXJuIGV2ZW50SGFuZGxl
ckF0dHJpYnV0ZSh0YXJnZXQuZ2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpLCAq
dGFyZ2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci19Ci0KLXZvaWQgc2V0RXZlbnRIYW5k
bGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcHBl
ciwgRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpT
Qzo6SlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICB0YXJnZXQuc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudFR5cGUsIGNyZWF0ZUV2ZW50TGlzdGVuZXJGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUo
c3RhdGUsIHZhbHVlLCB3cmFwcGVyKSk7Ci19Ci0KLUpTQzo6SlNWYWx1ZSB3aW5kb3dGb3J3YXJk
ZWRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKQotewotICAgIGF1dG8mIGRvY3VtZW50ID0gZWxlbWVudC5kb2N1
bWVudCgpOwotICAgIHJldHVybiBldmVudEhhbmRsZXJBdHRyaWJ1dGUoZG9jdW1lbnQuZ2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUpLCBkb2N1bWVudCk7Ci19Ci0KLXZv
aWQgc2V0V2luZG93Rm9yd2FyZGVkRXZlbnRIYW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU09iamVjdCYgd3JhcHBlciwgSFRNTEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUgdmFsdWUpCi17Ci0gICAg
QVNTRVJUKHdyYXBwZXIuZ2xvYmFsT2JqZWN0KCkpOwotICAgIGVsZW1lbnQuZG9jdW1lbnQoKS5z
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY3JlYXRlRXZlbnRMaXN0
ZW5lckZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShzdGF0ZSwgdmFsdWUsICp3cmFwcGVyLmdsb2Jh
bE9iamVjdCgpKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggY2UzZjkyM2Q3ODI2YTRlM2Jl
NTE3OTc0NmM4NzVjNzM2ZTlhNDM4Yy4uMWJjYjk2ZWVmMWZhMDAxMTg2Y2Q4Y2Q2MDc0MzY1MWY2
ZTlkOGZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmgKQEAgLTI5LDggKzI5LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3Mg
RXZlbnRUYXJnZXQ7Ci0gICAgY2xhc3MgSFRNTEVsZW1lbnQ7CiAgICAgY2xhc3MgSlNET01HbG9i
YWxPYmplY3Q7CiAKICAgICBjbGFzcyBKU0V2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0
ZW5lciB7CkBAIC03NywxMyArNzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJl
ZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKICAgICB9OwogCi0gICAgLy8g
Rm9yICJvbnh4eCIgYXR0cmlidXRlcyB0aGF0IGF1dG9tYXRpY2FsbHkgc2V0IHVwIEphdmFTY3Jp
cHQgZXZlbnQgbGlzdGVuZXJzLgotICAgIEpTQzo6SlNWYWx1ZSBldmVudEhhbmRsZXJBdHRyaWJ1
dGUoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7Ci0gICAgdm9p
ZCBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0
JiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1Zh
bHVlKTsKLQotICAgIC8vIExpa2UgdGhlIGZ1bmN0aW9ucyBhYm92ZSwgYnV0IGZvciBhdHRyaWJ1
dGVzIHRoYXQgZm9yd2FyZCBldmVudCBoYW5kbGVycyB0byB0aGUgd2luZG93IG9iamVjdCByYXRo
ZXIgdGhhbiBzZXR0aW5nIHRoZW0gb24gdGhlIHRhcmdldC4KLSAgICBKU0M6OkpTVmFsdWUgd2lu
ZG93Rm9yd2FyZGVkRXZlbnRIYW5kbGVyQXR0cmlidXRlKEhUTUxFbGVtZW50JiwgY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUpOwotICAgIHZvaWQgc2V0V2luZG93Rm9yd2FyZGVkRXZlbnRI
YW5kbGVyQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU09iamVjdCYsIEhUTUxFbGVt
ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTQzo6SlNWYWx1ZSk7CisgICAg
Ly8gRm9yICJvblhYWCIgZXZlbnQgYXR0cmlidXRlcy4KKyAgICBSZWZQdHI8SlNFdmVudExpc3Rl
bmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwogCiAgICAgUmVm
PEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKEpTQzo6RXhlY1N0
YXRlJiwgSlNDOjpKU09iamVjdCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpOwog
ICAgIFJlZjxKU0V2ZW50TGlzdGVuZXI+IGNyZWF0ZUpTRXZlbnRMaXN0ZW5lckZvclJlbW92ZShK
U0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNPYmplY3QmIGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiB3
cmFwcGVyKTsKQEAgLTExOSw2ICsxMTIsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICByZXR1cm4gbV9qc0Z1bmN0aW9uLmdldCgpOwogICAgIH0KIAorICAgIGlubGluZSBSZWZQdHI8
SlNFdmVudExpc3RlbmVyPiBjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBdHRyaWJ1dGUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdy
YXBwZXIpCisgICAgeworICAgICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgJndyYXBwZXIsIHRydWUsIGN1cnJlbnRXb3JsZCgmc3Rh
dGUpKTsKKyAgICB9CisKICAgICBpbmxpbmUgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gY3JlYXRlSlNF
dmVudExpc3RlbmVyRm9yUmVtb3ZlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU09iamVj
dCYgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIHdyYXBwZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gY3JlYXRlSlNFdmVudExpc3RlbmVyRm9yQWRkKHN0YXRlLCBsaXN0ZW5lciwgd3JhcHBlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IGEwYzhhNjhjNGZhOGVmNDkwNTNmNTcyZWJjZjhiNzk3N2E5YWJhYTYuLmZmY2Zk
OTY3YjFhZDVmOWUwOTU5YTFkMTQ2MzAwMWUzZGVjYTlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNDAsMjEgKzE0
MCwxNiBAQCBzdWIgR2VuZXJhdGVJbnRlcmZhY2UKICAgICB9CiB9CiAKLXN1YiBFdmVudEhhbmRs
ZXJBdHRyaWJ1dGVFdmVudE5hbWUKK3N1YiBHZW5lcmF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXJD
YWxsCiB7Ci0gICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwotCi0gICAgIyBSZW1vdmUgdGhlICJv
biIgcHJlZml4LgotICAgIG15ICRldmVudFR5cGUgPSBzdWJzdHIoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lLCAyKTsKKyAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFtZSA9IHNoaWZ0Owor
ICAgIG15ICR3aW5kb3dFdmVudExpc3RlbmVyID0gc2hpZnQ7CiAKLSAgICAjIEZJWE1FOiBDb25z
aWRlciBhZGRpbmcgYSBwcm9wZXJ0eSBpbiB0aGUgSURMIGZpbGUgaW5zdGVhZCBvZiBoYXJkIGNv
ZGluZyB0aGVzZSBmb3VyIGV2ZW50IG5hbWVzLgotICAgICMgTm90ZTogVGhpcyBzYW1lIGhhcmQg
Y29kZWQgbGlzdCBvZiBwcm9wZXJ0eSBuYW1lcyBleGlzdHMgaW4gSFRNTEVsZW1lbnQuY3BwLgot
ICAgICRldmVudFR5cGUgPSAid2Via2l0QW5pbWF0aW9uRW5kIiBpZiAkZXZlbnRUeXBlIGVxICJ3
ZWJraXRhbmltYXRpb25lbmQiOwotICAgICRldmVudFR5cGUgPSAid2Via2l0QW5pbWF0aW9uSXRl
cmF0aW9uIiBpZiAkZXZlbnRUeXBlIGVxICJ3ZWJraXRhbmltYXRpb25pdGVyYXRpb24iOwotICAg
ICRldmVudFR5cGUgPSAid2Via2l0QW5pbWF0aW9uU3RhcnQiIGlmICRldmVudFR5cGUgZXEgIndl
YmtpdGFuaW1hdGlvbnN0YXJ0IjsKLSAgICAkZXZlbnRUeXBlID0gIndlYmtpdFRyYW5zaXRpb25F
bmQiIGlmICRldmVudFR5cGUgZXEgIndlYmtpdHRyYW5zaXRpb25lbmQiOworICAgIG15ICR3cmFw
cGVyT2JqZWN0ID0gJHdpbmRvd0V2ZW50TGlzdGVuZXIgPyAiZ2xvYmFsT2JqZWN0IiA6ICJjYXN0
ZWRUaGlzIjsKKyAgICBteSBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbCA9ICgpOwogCi0gICAg
cmV0dXJuICJldmVudE5hbWVzKCkuJHtldmVudFR5cGV9RXZlbnQiOworICAgIHB1c2goQEdlbmVy
YXRlRXZlbnRMaXN0ZW5lckltcGwsICIgICAgaW1wbC5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFt
ZShjcmVhdGVKU0V2ZW50TGlzdGVuZXJGb3JBdHRyaWJ1dGUoKmV4ZWMsIHZhbHVlLCAqJHdyYXBw
ZXJPYmplY3QpKTtcbiIpOworICAgIHJldHVybiBAR2VuZXJhdGVFdmVudExpc3RlbmVySW1wbDsK
IH0KIAogc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lckNhbGwKQEAgLTE5NzQsNyArMTk2OSw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5V
U0VEX1BBUkFNKHZtKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihvYmplY3Qp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX1Q
cm90b3R5cGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4ob2Jq
ZWN0KTtcbiIpOwogCiAgICAgICAgICAgICBpZiAoJG51bUNvbnN0YW50cyBlcSAwICYmICRudW1G
dW5jdGlvbnMgZXEgMCAmJiAkbnVtUHJvdG90eXBlQXR0cmlidXRlcyBlcSAwKSB7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3Bl
cnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7ICAgICAg
ICAKQEAgLTIwMTcsNyArMjAxMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3RvbU5hbWVkR2V0dGVy
T25Qcm90b3R5cGUifSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtjbGFz
c05hbWV9UHJvdG90eXBlOjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1l
fVByb3RvdHlwZSo+KGNlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX1Q
cm90b3R5cGUqPihjZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAodGhpc09iamVjdC0+cHV0RGVsZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xv
dCkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpwdXQodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7XG4iKTsKQEAgLTIxMTEsNyArMjEwNiw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGlmICghJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldE93blByb3BlcnR5U2xvdCJ9KSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09i
amVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmpl
Y3QsIGluZm8oKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0
ZUdldE93blByb3BlcnR5U2xvdEJvZHkoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFz
c05hbWUsICRudW1JbnN0YW5jZUF0dHJpYnV0ZXMgPiAwLCAwKSk7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0yMTIyLDcgKzIxMTcsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifSkg
ewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJib29sICR7Y2xhc3NOYW1lfTo6Z2V0
T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KG9iamVjdCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhp
c09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7XG4iKTsKIAogICAgICAgICAgICAgIyBTaW5rIHRoZSBpbnQtdG8tc3Ry
aW5nIGNvbnZlcnNpb24gdGhhdCBoYXBwZW5zIHdoZW4gd2UgY3JlYXRlIGEgUHJvcGVydHlOYW1l
CkBAIC0yMTk1LDkgKzIxOTAsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4i
KTsKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Qcm94eVRvSlNPYmplY3Qi
fSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBj
YXN0ZWRUaGlzID0gdG8ke2NsYXNzTmFtZX0oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xu
Iik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NO
YW1lfSogY2FzdGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKEF0dHJpYnV0ZVNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTJHtpbnRl
cmZhY2VOYW1lfSo+KHNsb3RCYXNlKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlMke2lu
dGVyZmFjZU5hbWV9Kj4oc2xvdEJhc2UpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChJ
bnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50
ZXJmYWNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJHtjbGFzc05hbWV9KiBjYXN0ZWRUaGlzT2JqZWN0ID0gIiAuIEdldENhc3RpbmdIZWxwZXJG
b3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpIC4gIihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpc09iamVjdCkpXG4iKTsKQEAgLTIyODgsMTMgKzIyODMsMjMg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiRpbXBsR2V0
dGVyRnVuY3Rpb25OYW1lKGV4ZWMpKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tTZWN1cml0eUZvck5v
ZGUifSkgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0g
PSAxOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKGV4ZWMsIGltcGwuIiAuICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZSAuICIoKSkgPyAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
KCkiLCAiY2FzdGVkVGhpcyIpIC4gIiA6IGpzTnVsbCgpKTtcbiIpOwogICAgICAgICAgICAgfSBl
bHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7Ci0gICAgICAgICAgICAgICAgbXkgJGdl
dHRlciA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTV2lu
ZG93RXZlbnRMaXN0ZW5lciJ9ID8gIndpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxlckF0dHJpYnV0
ZSIgOiAiZXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgICAgICBteSAkZXZlbnRO
YW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUpOworICAgICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKCRnZXR0ZXIoY2FzdGVkVGhpcy0+aW1wbCgpLCAkZXZlbnROYW1lKSk7XG4iKTsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBpbXBsLiRpbXBsR2V0dGVyRnVu
Y3Rpb25OYW1lKCkpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBpZiAoY29uc3QgSlNFdmVudExpc3RlbmVyKiBqc0xpc3RlbmVyID0gSlNFdmVudExp
c3RlbmVyOjpjYXN0KGxpc3RlbmVyKSkge1xuIik7CisgICAgICAgICAgICAgICAgaWYgKCRpbnRl
cmZhY2VOYW1lIGVxICJEb2N1bWVudCIgfHwgJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRzSW50ZXJm
YWNlKCRpbnRlcmZhY2UsICJXb3JrZXJHbG9iYWxTY29wZSIpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBqc0Z1bmN0
aW9uID0ganNMaXN0ZW5lci0+anNGdW5jdGlvbigmaW1wbCkpXG4iKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgICAgIGlmIChKU09iamVjdCoganNGdW5jdGlvbiA9IGpzTGlzdGVuZXItPmpzRnVuY3Rpb24o
aW1wbC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKVxuIik7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNGdW5jdGlvbik7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKICAgICAgICAgICAg
IH0gZWxzaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLykg
ewogICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL0NvbnN0
cnVjdG9yJC8vOwpAQCAtMjM0Nyw3ICsyMzUyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KIAogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFy
Z3MpOwogICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICIke2Z1bmN0aW9uTmFtZX0o
IiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7Ci0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsVHlwZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZlB0cjwkdHlw
ZT4gb2JqID0gJGpzVHlwZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBvYmouZ2V0KCkpO1xuIik7CkBAIC0yMzc2LDcgKzIzODEsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqY2FzdGVkVGhp
cy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLCAwLCAkaW50ZXJmYWNlTmFtZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUo
IiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZU5hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVu
Y3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjQ2Nyw3ICsyNDcyLDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tUHV0RnVuY3Rpb24ifSkgewogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ2b2lkICR7Y2xhc3NOYW1lfTo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTtcbiIpOwog
ICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21J
bmRleGVkU2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICB1bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS5hc0luZGV4KCk7XG4iKTsKQEAgLTI0ODcs
NyArMjQ5Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifSkg
ewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06
OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4
LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KVxuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwp
O1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9KiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KGNlbGwpO1xuIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUluZGV4ZWRTZXR0ZXIifSkgewpA
QCAtMjU0Myw3ICsyNTQ4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2Fz
dGVkVGhpcyA9IHRvJHtjbGFzc05hbWV9KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2lmIChBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFu
Y2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGJhc2VPYmplY3QpO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NsYXNzTmFtZX0q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oYmFzZU9iamVjdCk7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0
ZXNPbkluc3RhbmNlRm9yQ29tcGF0aWJpbGl0eSgkaW50ZXJmYWNlKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2Fz
dGVkVGhpc09iamVjdCA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJm
YWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzT2JqZWN0KSlcbiIpOwpAQCAtMjU3NSwxNSArMjU4MCwxOCBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmIChIYXNDdXN0b21TZXR0ZXIoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGNhc3RlZFRoaXMtPnNldCRpbXBsU2V0dGVyRnVu
Y3Rpb25OYW1lKGV4ZWMsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0
eXBlIGVxICJFdmVudExpc3RlbmVyIikgewotICAgICAgICAgICAgICAgICAgICBteSAkZXZlbnRO
YW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUpOwotICAgICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNl
IHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5kIGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgor
ICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0g
MTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIG15ICR3aW5kb3dFdmVudExpc3Rl
bmVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNXaW5k
b3dFdmVudExpc3RlbmVyIn07CisgICAgICAgICAgICAgICAgICAgIGlmICgkd2luZG93RXZlbnRM
aXN0ZW5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIGlmICgoKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciKSBvciAoJGludGVyZmFjZU5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIikpIGFu
ZCAkbmFtZSBlcSAib25lcnJvciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IkpTRXJyb3JIYW5kbGVyLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5pbXBsKCkuc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcihleGVjLCB2YWx1ZSwg
Y2FzdGVkVGhpcykpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpbXBsLnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKGNyZWF0ZUpTRXJyb3JI
YW5kbGVyKGV4ZWMsIHZhbHVlLCBjYXN0ZWRUaGlzKSk7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZl
bnRMaXN0ZW5lci5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTV2luZG93RXZl
bnRMaXN0ZW5lciJ9ID8gInNldFdpbmRvd0ZvcndhcmRlZEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIg
OiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRzZXR0ZXIoKmV4ZWMsICpjYXN0ZWRUaGlzLCBjYXN0ZWRU
aGlzLT5pbXBsKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lckNh
bGwoJGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUsICR3aW5kb3dFdmVudExpc3RlbmVyKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAgICAgICAg
bXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKQEAgLTI1
OTQsMTQgKzI2MDIsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5
cGUgIX4gL05hbWVkJC8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hh
ZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3JcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0
ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIp
LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZXBsYWNlYWJsZSJ9KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWlu
IG9iamVjdC5cbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3RcbiIpOwogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0o
KSwgSWRlbnRpZmllcihleGVjLCBcIiRuYW1lXCIpLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3Rh
dGljKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlmICRz
ZXR0ZXJSYWlzZXNFeGNlcHRpb247CiAKQEAgLTI3MDQsNyArMjcxMiw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24gJiYgISRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eSJ9KSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidm9pZCAke2NsYXNzTmFtZX06OmdldE93blBy
b3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpXG4iKTsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09i
amVjdCA9IGpzQ2FzdDwke2NsYXNzTmFtZX0qPihvYmplY3QpO1xuIik7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwg
aW5mbygpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPmltcGwoKS5sZW5ndGgoKTsgaSA8IGNvdW50
OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpO1xuIik7CkBAIC0yODExLDcgKzI4
MTksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgk
aXNDdXN0b20pIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lIC4gIihleGVjKSk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRpbXBsVHlwZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcGwuaXNSZWFkT25seSgpKSB7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSKTtcbiIp
OwpAQCAtMjg2MSw3ICsyODY5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBp
ZiAoJG5lZWRzVmlzaXRDaGlsZHJlbikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInZv
aWQgJHtjbGFzc05hbWV9Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDwke2Ns
YXNzTmFtZX0qPihjZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
e2NsYXNzTmFtZX0qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4i
KTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7XG4iKTsKICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdldCJ9
IHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IikgewpAQCAtMjkwNSw4ICsyOTEz
LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2Rl
ZEpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JGNsYXNz
TmFtZSo+KHNsb3RCYXNlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9i
amVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWlj
U3RyaW5nKHByb3BlcnR5TmFtZSkpKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogdGhpc09iaiA9IGpzQ2FzdDwkY2xhc3NOYW1lKj4oc2xv
dEJhc2UpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNP
YmotPmltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSkpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMjkzNiwxNCArMjk0NCwxNCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAjIGNoZWNrIGJlbG93IHRoZSBpc09ic2VydmFibGUgY2hlY2su
CiAgICAgICAgIG15ICRlbWl0dGVkSlNDYXN0ID0gMDsKICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmpl
Y3QiKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byoganMke2lu
dGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMk
e2ludGVyZmFjZU5hbWV9KiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFj
ZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAkZW1p
dHRlZEpTQ2FzdCA9IDE7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
anMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0
dHJpYnV0ZSgkaW50ZXJmYWNlLCAiRXZlbnRUYXJnZXQiKSkgewogICAgICAgICAgICAgaWYgKCEk
ZW1pdHRlZEpTQ2FzdCkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpz
Q2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsK
ICAgICAgICAgICAgICAgICAkZW1pdHRlZEpTQ2FzdCA9IDE7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT5p
bXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKVxuIik7CkBAIC0yOTUxLDcgKzI5NTksNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgICAgIGlmICgkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIk5vZGUiKSkgewogICAg
ICAgICAgICAgaWYgKCEkZW1pdHRlZEpTQ2FzdCkgewotICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50
ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKUyR7aW50ZXJmYWNlTmFtZX0qIGpzJHtpbnRl
cmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5h
c0NlbGwoKSk7XG4iKTsKICAgICAgICAgICAgICAgICAkZW1pdHRlZEpTQ2FzdCA9IDE7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoSlNOb2Rl
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKGhhbmRsZSwgMCwgdmlzaXRvcikpXG4i
KTsKQEAgLTI5NTksNyArMjk2Nyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkpIHsK
ICAgICAgICAgICAgIGlmICghJGVtaXR0ZWRKU0Nhc3QpIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMk
e2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlMke2ludGVyZmFjZU5hbWV9KiBqcyR7
aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFp
c09ic2VydmFibGUoanMke2ludGVyZmFjZU5hbWV9KSlcbiIpOwpAQCAtMzAxNiw4ICszMDI0LDgg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5J
bmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkp
IHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbnRlcmZhY2VOYW1lfU93
bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29u
dGV4dClcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8
SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7Ci0gICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTJHtpbnRlcmZhY2VOYW1lfSoganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpT
JHtpbnRlcmZhY2VOYW1lfSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTtcbiIpOworICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanMke2ludGVyZmFjZU5hbWV9
LT5pbXBsKCksIGpzJHtpbnRlcmZhY2VOYW1lfSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAganMke2ludGVyZmFjZU5hbWV9LT5yZWxlYXNlSW1wbCgpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTMxMjQsNyArMzEzMiw3IEBAIHN1
YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgImV4ZWMiKTsK
ICAgICB9CiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5z
KCRjYWxsV2l0aCwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgewotICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtc
biIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzY3JpcHRDb250ZXh0
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIiAuICgk
cmV0dXJuVmFsdWUgPyAiICIgLiAkcmV0dXJuVmFsdWUgOiAiIikgLiAiO1xuIik7CiAgICAgICAg
IHB1c2goQGNhbGxXaXRoQXJncywgInNjcmlwdENvbnRleHQiKTsKQEAgLTQ1MDEsNyArNDUwOSw3
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCA8PEVORCk7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0oRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX0qPihleGVjLT5jYWxsZWUoKSk7CisgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qIGpz
Q29uc3RydWN0b3IgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihleGVjLT5jYWxs
ZWUoKSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0ID0g
anNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghZXhlY3V0
aW9uQ29udGV4dCkKQEAgLTQ1NjgsNyArNDU3Niw3IEBAIEVORAogCiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0
b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3Qke2NsYXNzTmFtZX0ke292ZXJsb2FkZWRJbmRleFN0cmlu
Z30oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oZXhlYy0+Y2FsbGVlKCkp
O1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX0qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0q
PihleGVjLT5jYWxsZWUoKSk7XG4iKTsKIAogICAgICAgICAgICAgbXkgQGNvbnN0cnVjdG9yQXJn
TGlzdDsKIApAQCAtNDU5OCw3ICs0NjA2LDcgQEAgRU5ECiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBjYXN0
ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dDb25zdHJ1Y3RvckRv
Y3VtZW50VW5hdmFpbGFibGVFcnJvcigqZXhlYywgXCIke2ludGVyZmFjZU5hbWV9XCIpO1xuIik7
Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGRvY3VtZW50
ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTtcbiIpOworICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1
bWVudD4oKmNvbnRleHQpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGdl
bmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAY29uc3Ry
dWN0b3JBcmdMaXN0LCAiKmNhc3RlZFRoaXMtPmRvY3VtZW50KCkiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYTdlMGFlZWVjYTQ2Njk2Mzg4YTkxYjQxNjQ4MmQ4YTU1
YWExZTU1Mi4uMmU3NWJkOThmNTM1MzQxYzlhYWI4MGI3MmNlNzkzODg2NTAyZmI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2
ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6On5KU1Rlc3RBY3RpdmVET01PYmplY3QoKQogCiBib29sIEpTVGVzdEFj
dGl2ZURPTU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90
KQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Kj4ob2JqZWN0KTsKKyAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVl
U2xvdDxKU1Rlc3RBY3RpdmVET01PYmplY3QsIEJhc2U+KGV4ZWMsIEpTVGVzdEFjdGl2ZURPTU9i
amVjdFRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpAQCAtMTc4LDEw
ICsxNzgsMTAgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3QKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVj
dCo+KHNsb3RCYXNlKTsKKyAgICBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oc2xvdEJhc2UpOwogICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KGV4ZWMsIGNhc3RlZFRoaXMt
PmltcGwoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0QWN0aXZlRE9N
T2JqZWN0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5leGNpdGluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3Q6OmluZm8oKSk7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93
QWNjZXNzVG9ET01XaW5kb3coZXhlYywgY2FzdGVkVGhpcy0+aW1wbCgpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RBY3RpdmVET01PYmplY3QmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBOb2RlKiBuZXh0Q2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQo
ZXhlYy0+YXJndW1lbnQoMCkpKTsKQEAgLTIyOCw3ICsyMjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1l
c3NhZ2UoRQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0QWN0aXZlRE9NT2JqZWN0IiwgInBvc3RNZXNz
YWdlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBUZXN0QWN0aXZlRE9NT2JqZWN0JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7CiAgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKQEAgLTI0Nyw4ICsyNDcsOCBAQCBib29sIEpTVGVzdEFjdGl2ZURPTU9iamVjdE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVuawogCiB2
b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RBY3Rp
dmVET01PYmplY3QgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCoganNUZXN0QWN0aXZl
RE9NT2JqZWN0ID0ganNDYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNU
ZXN0QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7CiAgICAg
anNUZXN0QWN0aXZlRE9NT2JqZWN0LT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNzRjMmY3OWIyNjY4YzhkNzliMGNiYmJiNmFmZDJi
YTM0NjViYjQ3My4uMzNhNmY3YTllMGE5MDIwZDBlYTJjZWEzMDAwMGEyN2I4ZmMyYzkxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6On5KU1Rlc3RDdXN0b21OYW1lZEdldHRlcigpCiAKIGJv
b2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyKj4ob2JqZWN0KTsKKyAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KG9iamVjdCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGlm
IChjYW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJvcGVydHlO
YW1lKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7CkBAIC0xNzIsNyAr
MTcyLDcgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90
KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXgKIAogYm9vbCBKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlcjo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAg
YXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KG9iamVj
dCk7CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpbmRleCk7CiAgICAgaWYgKGNhbkdldEl0ZW1zRm9y
TmFtZShleGVjLCAmdGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7CkBAIC0yMDIs
NyArMjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDdXN0b21OYW1l
ZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmMKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVz
dEN1c3RvbU5hbWVkR2V0dGVyIiwgImFub3RoZXJGdW5jdGlvbiIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBjb25zdCBT
dHJpbmcmIHN0cihleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMt
PmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CkBAIC0yMjEsOCArMjIx
LDggQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlUKIAogdm9pZCBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RDdXN0b21OYW1lZEdldHRlciA9IGpzQ2Fz
dDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAg
ICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
KyAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcioganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgPSBq
c0Nhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29y
bGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLT5pbXBsKCksIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyKTsKICAgICBqc1Rlc3RD
dXN0b21OYW1lZEdldHRlci0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAppbmRleCA4MDdiMzk4MzBhNmM0NzBmNjc3MGQxNjQyYWYwOTgyMGFlYmY2
Y2ZmLi5mMTY2NmQ4YzE5MDE0Y2E0ODFiNzJmOWE4ZmVjYTc3MTdjNGYyOGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHByb3RlY3RlZDoK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGF1dG8qIGpzQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOwogICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkKQEAgLTIwNSw3ICsyMDUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjEoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50
Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MjIyLDcgKzIyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRy
MihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciIsICJhdHRyMiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgaW1wbC5hdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0yNTAsOCArMjUwLDggQEAgYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW4KIAogdm9p
ZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdEV2ZW50
Q29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90
KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVy
V29ybGQqPihjb250ZXh0KTsKKyAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBqc1Rlc3RFdmVu
dENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2Fz
dDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwg
JmpzVGVzdEV2ZW50Q29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7
CiAgICAganNUZXN0RXZlbnRDb25zdHJ1Y3Rvci0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRUYXJnZXQuY3BwCmluZGV4IDE3NjFkMzM5N2Q1MTZhY2NkNTNkNjVhNzVjNzg2YmIxN2Qy
MDY3NzEuLjVhMjE0ZDA3ZGQxMDYwZjllZGVhZDVjOWNiMmJlNzlkODk5YjdhOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMTczLDcgKzE3Myw3IEBAIEpTVGVzdEV2ZW50VGFyZ2V0
Ojp+SlNUZXN0RXZlbnRUYXJnZXQoKQogCiBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CisgICAgSlNUZXN0RXZl
bnRUYXJnZXQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAg
ICBjb25zdCBIYXNoVGFibGVWYWx1ZSogZW50cnkgPSBnZXRTdGF0aWNWYWx1ZVNsb3RFbnRyeVdp
dGhvdXRDYWNoaW5nPEpTVGVzdEV2ZW50VGFyZ2V0PihleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
IGlmIChlbnRyeSkgewpAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
CiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRU
YXJnZXQqPihvYmplY3QpOworICAgIEpTVGVzdEV2ZW50VGFyZ2V0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgaWYgKGluZGV4IDwgdGhpc09iamVjdC0+
aW1wbCgpLmxlbmd0aCgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSBEb250RGVs
ZXRlIHwgUmVhZE9ubHk7CkBAIC0yMjAsNyArMjIwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2Rl
ZEoKIAogdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5h
bWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganND
YXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4ob2JqZWN0KTsKKyAgICBKU1Rlc3RFdmVudFRhcmdldCog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KG9iamVjdCk7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDAsIGNvdW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmxlbmd0aCgpOyBpIDwgY291
bnQ7ICsraSkKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVj
LCBpKSk7CkBAIC0yMzksNyArMjM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIGUKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEV2ZW50VGFyZ2V0IiwgIml0ZW0iKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdEV2ZW50VGFyZ2V0JiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaW50IGluZGV4KHRvVUludDMyKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CkBAIC0yNjAsNyArMjYw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3Rv
dHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcigKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEV2ZW50
VGFyZ2V0IiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsIEpTVGVzdEV2ZW50VGFyZ2V0OjppbmZvKCkpOwotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdEV2ZW50VGFyZ2V0JiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgbGlzdGVuZXIgPSBleGVjLT5hcmd1bWVudCgx
KTsKICAgICBpZiAoVU5MSUtFTFkoIWxpc3RlbmVyLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMjc1LDcgKzI3NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvblJlbW92ZUV2ZW50TGlzdGVuCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudFRhcmdldCIs
ICJyZW1vdmVFdmVudExpc3RlbmVyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhj
YXN0ZWRUaGlzLCBKU1Rlc3RFdmVudFRhcmdldDo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RFdmVudFRhcmdldCYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIGxpc3RlbmVyID0gZXhlYy0+YXJndW1lbnQoMSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFsaXN0ZW5lci5pc09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25E
aXNwYXRjaEV2ZW50KEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRUYXJnZXQiLCAiZGlz
cGF0Y2hFdmVudCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0RXZlbnRUYXJnZXQ6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBUZXN0RXZlbnRUYXJnZXQmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTMwNSw3ICszMDUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rp
b25EaXNwYXRjaEV2ZW50KEV4ZQogCiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Ojp2aXNpdENoaWxk
cmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOworICAgIEpTVGVzdEV2
ZW50VGFyZ2V0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oY2VsbCk7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgdGhpc09iamVj
dC0+aW1wbCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKQEAgLTMxMyw3ICszMTMs
NyBAQCB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAKIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXRPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUs
IHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvKiBqc1Rlc3RFdmVudFRh
cmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKKyAgICBKU1Rlc3RFdmVudFRhcmdldCoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNU
ZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgaWYgKGpzVGVz
dEV2ZW50VGFyZ2V0LT5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CkBAIC0zMjIsOCArMzIyLDgg
QEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24KIAogdm9pZCBKU1Rlc3RFdmVudFRhcmdldE93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4
dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RFdmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRh
cmdldCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0
aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBKU1Rlc3RFdmVudFRhcmdl
dCoganNUZXN0RXZlbnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdEV2ZW50VGFyZ2V0LT5pbXBsKCksIGpzVGVzdEV2ZW50VGFyZ2V0KTsKICAgICBq
c1Rlc3RFdmVudFRhcmdldC0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAK
aW5kZXggMTc5Mzk1OTNiOGE4NjE0ZGY4ZjA2NTdmOGEwMWFiNmNhNTM4OWVkNS4uMmMzYjZlOWU2
OThjYTNiODZjYWVmYzNkNWQ0MDBkZjU0ZTBkZTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAK
QEAgLTE1OCw3ICsxNTgsNyBAQCBKU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24oKQog
CiBib29sIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0
aW9uKj4ob2JqZWN0KTsKKyAgICBKU1Rlc3RFeGNlcHRpb24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0RXhjZXB0aW9uKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rl
c3RFeGNlcHRpb24sIEJhc2U+KGV4ZWMsIEpTVGVzdEV4Y2VwdGlvblRhYmxlLCB0aGlzT2JqZWN0
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwogfQpAQCAtMTY4LDggKzE2OCw4IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFVOVVNFRF9QQVJBTShz
bG90QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVk
VGhpcyA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihzbG90QmFzZSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBKU1Rlc3RFeGNlcHRpb24qIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uKj4oc2xvdEJhc2UpOworICAgIFRlc3RFeGNlcHRpb24m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBpbXBsLm5hbWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTk3LDggKzE5Nyw4IEBAIGJvb2wgSlNUZXN0RXhjZXB0aW9uT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4K
IAogdm9pZCBKU1Rlc3RFeGNlcHRpb25Pd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0RXhjZXB0
aW9uID0ganNDYXN0PEpTVGVzdEV4Y2VwdGlvbio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
LSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICBKU1Rlc3RFeGNlcHRpb24qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2FzdDxKU1Rlc3RF
eGNlcHRpb24qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxk
JiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1
bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV4Y2VwdGlvbi0+aW1wbCgpLCBqc1Rlc3RFeGNl
cHRpb24pOwogICAgIGpzVGVzdEV4Y2VwdGlvbi0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCBlNGY4OGZmNWIyNTA0NzFlMTFk
MDJiY2NmN2I0YmQ5ZmRiNzI5MmNhLi40N2JiZDdkYTkwNWNhMzgwOTNjZjQ5ZjRlOTg4Y2RlNDZh
YjFkMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0x
NjAsNyArMTYwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZShKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlKiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2gKIAogYm9vbCBKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgYXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIEpTVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUqIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBp
ZiAoIWlzT2JzZXJ2YWJsZShqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiByb290ID0gJmpzVGVzdEdl
bmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKTsKQEAgLTE2OSw4ICsxNjksOCBAQCBib29sIEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOgogCiB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgYXV0byoganNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOworICAgIEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUqIGpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUgPSBqc0Nhc3Q8
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAg
ICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZS0+aW1wbCgpLCBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKTsKICAgICBqc1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cAppbmRleCAxZWRkYmIwOTUyY2NmOWZjYTk2Y2QyYWE0ZGU2ZThjY2NlMDM0ZGFlLi42NjAwMjBj
Y2QzYWFlYjZiZTdmMWMwM2NmYmU3ZjZjN2YyZDZmN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cApAQCAtMjcxLDcgKzI3MSw3IEBAIENPTVBJTEVfQVNTRVJUKDIgPT0gVGVzdFN1cHBsZW1lbnRh
bDo6Q09OU1RfSU1QTCwgVGVzdEludGVyZmFjZUVudW1DT05TVF9JTVBMSXNXCiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEpTVGVzdEludGVyZmFjZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwpAQCAtNDQyLDcgKzQ0Miw3IEBAIEpTVGVzdEludGVyZmFjZTo6fkpT
VGVzdEludGVyZmFjZSgpCiAKIGJvb2wgSlNUZXN0SW50ZXJmYWNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihvYmplY3QpOworICAgIEpTVGVzdEludGVyZmFjZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihvYmplY3QpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICByZXR1cm4gZ2V0U3Rh
dGljVmFsdWVTbG90PEpTVGVzdEludGVyZmFjZSwgQmFzZT4oZXhlYywgSlNUZXN0SW50ZXJmYWNl
VGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CkBAIC00ODMsNyArNDgz
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjEoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNT
dHIxIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJ
bnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1w
bC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC01MDIsNyArNTAyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1w
bGVtZW50c1N0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJm
YWNlIiwgImltcGxlbWVudHNTdHIyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJmYWNlJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbC5pbXBsZW1lbnRzU3RyMigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC01MTUsNyArNTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RC
YXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlz
ID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHNsb3RCYXNlKTsKKyAgICBKU1Rlc3RJbnRlcmZh
Y2UqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oc2xvdEJhc2UpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+aW1wbGVtZW50c1N0cjMoZXhlYykp
OwogfQogCkBAIC01MzMsNyArNTMzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c05vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKICAgICB9
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJmYWNl
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5pbXBsZW1l
bnRzTm9kZSgpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
NTc2LDcgKzU3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhCiAgICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxTdHIxIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RJbnRlcmZhY2UmIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIxKCZpbXBsKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNTk1LDcgKzU5NSw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVj
YXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRl
cmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBUZXN0
U3VwcGxlbWVudGFsOjpzdXBwbGVtZW50YWxTdHIyKCZpbXBsKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjA4LDcgKzYwOCw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFVOVVNFRF9QQVJBTShzbG90
QmFzZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihzbG90QmFzZSk7CisgICAgSlNUZXN0SW50ZXJm
YWNlKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KHNsb3RCYXNlKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1cHBsZW1lbnRhbFN0cjMoZXhl
YykpOwogfQogCkBAIC02MjYsNyArNjI2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmEKICAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxOb2RlIik7
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdElu
dGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RT
dXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoJmltcGwpKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtNjQzLDcgKzY0Myw3IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2VWYWx1ZSwKIAogdm9pZCBKU1Rlc3RJbnRlcmZhY2U6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oY2VsbCk7CisgICAgSlNUZXN0SW50ZXJmYWNlKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBpZiAodGhpc09iamVjdC0+cHV0RGVsZWdh
dGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTY1Miw3ICs2NTIsNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZTo6cHV0KEpTQ2VsbCogY2VsbCwg
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiB2b2lkIEpTVGVzdElu
dGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgdW5zaWdu
ZWQgaW5kZXgsIEpTVmFsdWUgdmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Ci0gICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihjZWxsKTsKKyAgICBKU1Rlc3RJ
bnRlcmZhY2UqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oY2VsbCk7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwogICAgIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsK
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqZWN0LCBzaG91bGRUaHJvdyk7CkBAIC02
ODcsNyArNjg3LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDog
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC03MDIsNyArNzAyLDcgQEAg
dm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwogICAgIFVO
VVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oYmFzZU9iamVjdCk7CisgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBjYXN0ZWRUaGlz
LT5zZXRJbXBsZW1lbnRzU3RyMyhleGVjLCB2YWx1ZSk7CkBAIC03MjMsNyArNzIzLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdElu
dGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBOb2RlKiBuYXRpdmVWYWx1
ZShKU05vZGU6OnRvV3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTc1OCw3ICs3NTgsNyBAQCB2b2lkIHNl
dEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RJbnRl
cmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYXRp
dmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtNzczLDcgKzc3Myw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwog
ICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGJhc2VP
YmplY3QpOworICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RJ
bnRlcmZhY2UqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAg
ICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgY2FzdGVkVGhpcy0+c2V0U3VwcGxlbWVudGFsU3Ry
MyhleGVjLCB2YWx1ZSk7CkBAIC03OTQsNyArNzk0LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZh
Y2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFj
ZSIsICJzdXBwbGVtZW50YWxOb2RlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIE5vZGUqIG5hdGl2ZVZhbHVlKEpTTm9kZTo6dG9XcmFw
cGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtODE2LDcgKzgxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMShF
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c01ldGhvZDEiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFj
ZTo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRl
c3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5pbXBsZW1l
bnRzTWV0aG9kMSgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CkBAIC04MzEsMTEgKzgzMSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRQogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNNZXRob2QyIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJm
YWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5h
cmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBjb25zdCBTdHJpbmcmIHN0ckFy
ZyhleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CkBAIC04ODIsNyArODgyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
blN1cHBsZW1lbnRhbE1ldGhvZDEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxNZXRob2QxIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCBKU1Rlc3RJbnRlcmZhY2U6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDEoJmltcGwpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC04OTcsMTEg
Kzg5NywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMgogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBh
dXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyQXJnKGV4ZWMtPmFyZ3Vt
ZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTk0Miw3ICs5NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50
YWxNZXRobwogCiBib29sIEpTVGVzdEludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgSlNUZXN0SW50ZXJm
YWNlKiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGlmIChqc1Rlc3RJbnRlcmZhY2UtPmltcGwoKS5oYXNQZW5k
aW5nQWN0aXZpdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwpAQCAtOTUxLDggKzk1MSw4IEBAIGJvb2wgSlNUZXN0SW50ZXJmYWNlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4KIAogdm9p
ZCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0SW50ZXJmYWNlID0g
anNDYXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAg
ICBKU1Rlc3RJbnRlcmZhY2UqIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hl
V3JhcHBlcih3b3JsZCwgJmpzVGVzdEludGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RJbnRlcmZhY2Up
OwogICAgIGpzVGVzdEludGVyZmFjZS0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA1ODUxZmNjYjkwMjg5MTEyOTA5
YzVjMTUyMTZjNGFiNTVlOGUwZmE4Li42YWVjNTUwNWVmZGYzODYxNDZjZTExNmVjNjUzNDFjMzM1
M2Q5NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CkBAIC0xNjYsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAibWV0aG9kIik7CiAgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXImIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMp
KTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKQEAgLTE4NSw4ICsx
ODUsOCBAQCBib29sIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SgogCiB2b2lkIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciA9IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJX
b3JsZCo+KGNvbnRleHQpOworICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGpzVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPSBqc0Nhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdv
cmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2Fj
aGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci0+aW1wbCgpLCBq
c1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKTsKICAgICBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDgxN2RiNTQ2Yzc1Njk2ZWY5M2EzNzBmZWQzMTcxYjc0YTI3ZWQxYWQuLjIyYjYy
ZjExZDQ3NTA0OWUwMGJhNzViYTU0NWNmNThmNGRlMzY4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYykKIHsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC0yMzAsNyArMjMwLDcgQEAgSlNWYWx1
ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2IKIAogYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byoganNUZXN0TmFtZWRD
b25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqIGpzVGVzdE5hbWVkQ29u
c3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5zbG90KCkt
PmFzQ2VsbCgpKTsKICAgICBpZiAoanNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+aW1wbCgpLmhhc1Bl
bmRpbmdBY3Rpdml0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBVTlVTRURfUEFSQU0o
dmlzaXRvcik7CkBAIC0yMzksOCArMjM5LDggQEAgYm9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW4KIAog
dm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8qIGpzVGVzdE5h
bWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGhhbmRsZS5z
bG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFw
cGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBqc1Rlc3RO
YW1lZENvbnN0cnVjdG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rv
cik7CiAgICAganNUZXN0TmFtZWRDb25zdHJ1Y3Rvci0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2Rl
LmNwcAppbmRleCAyYjVhNTUyODM1NDk4YTY5ZmE0Yzk5OTNjMTk1NjkxOGI5N2NiOWYyLi4zYmIw
ZTcwNjcyZjAzMmY1MmM1MWYwNWI3ZmQ3Yzk0ODU5ZTVlOGFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC04
Niw3ICs4Niw3IEBAIHByb3RlY3RlZDoKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBK
U1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE5vZGUoRXhlY1N0YXRlKiBleGVj
KQogewotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9y
Kj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTVGVzdE5vZGVDb25zdHJ1Y3RvciogY2FzdGVkVGhp
cyA9IGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAg
UmVmUHRyPFRlc3ROb2RlPiBvYmplY3QgPSBUZXN0Tm9kZTo6Y3JlYXRlKCk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7CiB9CkBAIC0xNTksNyArMTU5LDcgQEAgSlNWYWx1ZSBK
U1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKIHZvaWQgSlNUZXN0Tm9kZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0Tm9kZSo+KGNlbGwpOworICAgIEpTVGVzdE5vZGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0Tm9kZSo+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVj
dCwgaW5mbygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPmltcGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMTA3NjZmMTYwYWZjNWJm
ZjcxODhmNWYxZWQ0Mzk5YmFkYzFkZmQyNS4uNTEyZThmMjRhMThmZTUzNmMyZWJhZGQ5MWY2YWVi
ODZlYTU3NTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMTk5
LDcgKzE5OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRl
cm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIH0KICAgICB9CiAj
ZW5kaWYKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3ROb25k
ZXRlcm1pbmlzdGljJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5ub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIzNiw3ICsyMzYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1dyaXRl
YWJsZUF0dHIoRXhlY1N0YXRlKiBleAogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIGltcGwubm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjczLDcgKzI3Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljRXhj
ZXB0aW9uQXR0cihFeGVjU3RhdGUqIGV4CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3ROb25kZXRlcm1pbmlzdGlj
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5ub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0cigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMTMsNyArMzEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNH
ZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE5vbmRldGVybWluaXN0
aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0
cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLm5vbmRldGVybWluaXN0aWNHZXR0ZXJFeGNlcHRpb25B
dHRyKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zNTEsNyArMzUxLDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRy
KEV4ZWNTdGEKICAgICAgICAgfQogICAgIH0KICNlbmRpZgotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBpbXBsLm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCB2b2lkIHNl
dEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTTwogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJp
bmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk3LDcgKzM5
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNFeGNl
cHRpb25BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNF
eGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0Tm9uZGV0ZXJtaW5pc3RpYyYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CkBAIC00MTcsNyArNDE3LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9u
ZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3ROb25kZXRl
cm1pbmlzdGljJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYg
bmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKQEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIHNldEpTVGVzdE5v
bmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0cihFeGVjU3Rh
dGUqIGV4ZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0aW9uQXR0ciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1
ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQ1
OSw3ICs0NTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vbmRldGVy
bWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVybWluaQogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljWmVyb0FyZ0Z1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQ7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSW5wdXRDdXJz
b3ImIGN1cnNvciA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW5wdXRDdXJzb3IoKTsK
QEAgLTQ5Miw4ICs0OTIsOCBAQCBib29sIEpTVGVzdE5vbmRldGVybWluaXN0aWNPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbgogCiB2b2lkIEpTVGVz
dE5vbmRldGVybWluaXN0aWNPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyA9IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwotICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOworICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGpzVGVzdE5vbmRldGVybWlu
aXN0aWMgPSBqc0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KGhhbmRsZS5zbG90KCktPmFz
Q2VsbCgpKTsKKyAgICBET01XcmFwcGVyV29ybGQmIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdy
YXBwZXJXb3JsZCo+KGNvbnRleHQpOwogICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYy0+aW1wbCgpLCBqc1Rlc3ROb25kZXRlcm1pbmlzdGljKTsKICAgICBq
c1Rlc3ROb25kZXRlcm1pbmlzdGljLT5yZWxlYXNlSW1wbCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA1
NzBjMDYxZDA4MmE3MjA5Y2NiMzA3YzA1ZjdjM2FkNjg4ZWJmMDU1Li44N2IyZDFiMjNiOGJjMjU5
NTJkYzcxMTk3MDhlOTkxZmE4MGFiMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBA
IENPTVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6cmVhZG9ubHksIFRlc3RPYmpFbnVtcmVhZG9u
bHlJc1dyb25nVXNlRG9Ob3RDaGVja0NvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMp
CiB7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAg
IGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtNjg0LDcgKzY4NCw3IEBA
IEpTVGVzdE9iajo6fkpTVGVzdE9iaigpCiAKIGJvb2wgSlNUZXN0T2JqOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgYXV0byogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihvYmplY3QpOworICAgIEpTVGVzdE9iaiogdGhpc09iamVjdCA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PEpT
VGVzdE9iaiwgQmFzZT4oZXhlYywgSlNUZXN0T2JqVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCk7CiB9CkBAIC03MDAsNyArNzAwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUmVhZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW4KICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdBdHRyIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwucmVhZE9ubHlMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC03MTcsNyArNzE3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVhZE9u
bHlTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlTdHJpbmdBdHRyIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIGltcGwucmVhZE9ubHlTdHJpbmdBdHRyKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTczNCw3ICs3MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpSZWFkT25seVRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlYWRPbmx5VGVzdE9iakF0dHIi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5yZWFk
T25seVRlc3RPYmpBdHRyKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC03NjUsNyArNzY1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0
b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXMKICAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURf
UEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9i
aio+KHNsb3RCYXNlKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oc2xvdEJhc2UpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0U3ViT2Jq
OjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkp
OwogfQogCkBAIC03NzUsNyArNzc1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEoKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVT
RURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iaio+KHNsb3RCYXNlKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T2JqKj4oc2xvdEJhc2UpOwogICAgIGlmICghY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgU2V0
dGluZ3MmIHNldHRpbmdzID0gY2FzdGVkVGhpcy0+aW1wbCgpLmZyYW1lKCktPnNldHRpbmdzKCk7
CkBAIC03OTYsNyArNzk2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1YKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImVu
dW1BdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5lbnVtQXR0cigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04MTMsNyArODEzLDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5ieXRlQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC04MzAsNyArODMwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIm9jdGV0QXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm9jdGV0QXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0QXR0cigpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04NDcsNyArODQ3LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInNob3J0QXR0ciIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLnNob3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC04NjQsNyArODY0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRT
aG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEUKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InVuc2lnbmVkU2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9ydEF0dHIiKTsKICAgICB9Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNpZ25l
ZFNob3J0QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC04ODEsNyArODgxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1YKICAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdB
dHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAibG9uZ0F0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC04OTgsNyArODk4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmxvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC05MTUsNyArOTE1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25n
TG9uZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVu
c2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC51bnNp
Z25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC05MzIsNyArOTMyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5n
QXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC05NDks
NyArOTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRy
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAidGVzdE9iakF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoaW1wbC50ZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtOTY2LDcgKzk2Niw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhN
TE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKCiAg
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJYTUxPYmpBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnhtbE9iakF0dHIoKSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTk4Myw3ICs5ODMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbAogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3JlYXRlIik7CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3Jl
YXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwMDAs
NyArMTAwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRT
dHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
LmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdhdHRy
QXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwMTcs
NyArMTAxNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzCiAgICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5nZXRJbnRlZ3Jh
bEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZGludGVncmFsYXR0ckF0dHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMDM0LDcgKzEw
MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFs
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWdu
ZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6
Om1heCgwLCBpbXBsLmdldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJBdHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTEwNTEsNyArMTA1MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5B
dHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZs
ZWN0ZWRib29sZWFuYXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CiB9CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRVUkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbgogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIiKTsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW1wbC5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1
cmxhdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTEwODUsNyArMTA4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsCiAgICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCBpbXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50
U3RyaW5nQXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9
CkBAIC0xMTAyLDcgKzExMDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRD
dXN0b21JbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpz
TnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0
b21Db250ZW50SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTExMTksNyArMTExOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJv
b2xlYW5BdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQm9vbGVhbihpbXBsLmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVz
OjpjdXN0b21Db250ZW50Qm9vbGVhbkF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmEKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVSTEF0dHIiKTsKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21V
UkxBdHRyIik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuZ2V0VVJMQXR0cmlidXRlKFdlYkNvcmU6
OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTE1Myw3ICsxMTUzLDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY28KICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidHlwZWRBcnJheUF0dHIiKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC50eXBlZEFy
cmF5QXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MTE3MSw3ICsxMTcxLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEIKICAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbiIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTg5LDcgKzExODksNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
KCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEyMDcsNyAr
MTIwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqCiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1w
bC5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTIy
NSw3ICsxMjI1LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKICAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjM2LDcgKzEyMzYs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSgogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwot
ICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOworICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5jdXN0b21BdHRyKGV4ZWMpKTsK
IH0KIApAQCAtMTI1Miw3ICsxMjUyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3QKICAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIp
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShleGVjKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTI2OSwxMCArMTI2OSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTTwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwogICAgIH0KLSAg
ICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4
dCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMjkwLDcg
KzEyOTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdAogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyhleGVjLCBlYykpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMDksMTAgKzEzMDksMTAgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoRXhlY1N0YXRlKiBleGUKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlcyIpOwogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvKiBzY3Jp
cHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAg
aWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwgZWMp
KSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzMwLDEwICsxMzMwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
RXhlY1N0CiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSIpOwogICAgIH0KLSAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZShleGVjLCBzY3JpcHRDb250ZXh0KSkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTEzNTEsMTAgKzEzNTEsMTAgQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcygKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzIik7CiAgICAgfQogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKGV4ZWMsIHNjcmlwdENvbnRleHQsIGVjKSkpOwogICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTM3Miwx
MCArMTM3MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYgogICAgICAgICAgICAgcmV0dXJu
IHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIp
OwogICAgIH0KLSAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoZXhlYywgc2NyaXB0Q29udGV4dCkpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xMzkyLDcgKzEzOTIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUi
KTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9K
UyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNDEwLDcgKzE0MTAsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbgogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogICAgICAgICByZXR1
cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0
cjEiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIxKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTE0MjksNyArMTQyOSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgICAgIHJldHVybiB0aHJv
d0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmNvbmRpdGlvbmFsQXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW4K
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwu
Y29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CkBAIC0xNDYxLDcgKzE0NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwogICAgIFVO
VVNFRF9QQVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oc2xvdEJhc2UpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPYmoqPihzbG90QmFzZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmpl
Y3RBOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCkBAIC0xNDczLDcgKzE0NzMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25kaXRpb25hbEF0dHI1Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogcwog
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oc2xvdEJhc2UpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rl
c3RPYmplY3RCOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxP
YmplY3QoKSkpOwogfQogCkBAIC0xNDg1LDcgKzE0ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogcwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2Up
OwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBq
c0Nhc3Q8SlNUZXN0T2JqKj4oc2xvdEJhc2UpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihzbG90QmFzZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1Rlc3RPYmplY3RDOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSkpOwogfQogCkBAIC0xNTA0LDcgKzE1MDQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbgogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRo
aXMtPm1fY2FjaGVkQXR0cmlidXRlMS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwuY2FjaGVkQXR0cmlidXRlMSgpLmhhc05vVmFsdWUoKSA/IGpzTnVsbCgpIDog
aW1wbC5jYWNoZWRBdHRyaWJ1dGUxKCkuanNWYWx1ZSgpKTsKICAgICBjYXN0ZWRUaGlzLT5tX2Nh
Y2hlZEF0dHJpYnV0ZTEuc2V0KGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMsIHJlc3VsdCk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTUyNCw3ICsxNTI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW4KICAgICB9CiAgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUg
PSBjYXN0ZWRUaGlzLT5tX2NhY2hlZEF0dHJpYnV0ZTIuZ2V0KCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FjaGVkVmFsdWUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IChpbXBsLmNhY2hlZEF0dHJpYnV0ZTIoKS5oYXNOb1ZhbHVlKCkgPyBq
c051bGwoKSA6IGltcGwuY2FjaGVkQXR0cmlidXRlMigpLmpzVmFsdWUoKSk7CiAgICAgY2FzdGVk
VGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLnNldChleGVjLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1
bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE1NDIsNyArMTU0
Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJh
bnlBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gKGltcGwuYW55QXR0cmlidXRlKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBp
bXBsLmFueUF0dHJpYnV0ZSgpLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwogfQpAQCAtMTU1Myw4ICsxNTUzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29udGVudERvY3VtZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmMKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KHNsb3RCYXNlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihz
bG90QmFzZSk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKGV4ZWMsIGltcGwu
Y29udGVudERvY3VtZW50KCkpID8gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5jb250ZW50RG9jdW1lbnQoKSkpIDoganNOdWxsKCkpOwogfQog
CkBAIC0xNTcwLDcgKzE1NzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZQogICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
bXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAibXV0YWJsZVBvaW50Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBTVkdQ
b2ludD46OmNyZWF0ZShpbXBsLCBpbXBsLm11dGFibGVQb2ludCgpLCAmVGVzdE9iajo6dXBkYXRl
TXV0YWJsZVBvaW50KSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
QEAgLTE1ODcsNyArMTU4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBv
aW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvCiAgICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJp
bW11dGFibGVQb2ludCIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0
ZShpbXBsLmltbXV0YWJsZVBvaW50KCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwogfQpAQCAtMTYwNCw3ICsxNjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
U3RyYXdiZXJyeShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEoK
ICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgfQotICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE2MjEsNyArMTYy
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0
cmljdEZsb2F0Iik7CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwuc3RyaWN0RmxvYXQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTYzOCw3ICsxNjM4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqRGVzY3JpcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWQKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKICAgICB9Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5k
ZXNjcmlwdGlvbigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBA
IC0xNjU1LDcgKzE2NTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJZChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdAogICAgICAgICAgICAg
cmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaWQi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJpZCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQg
PSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTE2NzIsNyArMTY3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2go
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlCiAgICAg
ICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJoYXNoIik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiaGFzaCIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmhhc2goKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTY4OSw3ICsxNjg5LDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5yZXBsYWNlYWJsZUF0dHJpYnV0ZSgpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xNzA3LDcgKzE3MDcs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURvdWJsZUF0dHJpYnV0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QgogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91YmxlQXR0cmlidXRlIik7CiAg
ICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZURvdWJsZUF0dHJpYnV0ZShp
c051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKQEAgLTE3MjcsNyArMTcyNyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
bnVsbGFibGVMb25nQXR0cmlidXRlIik7CiAgICAgfQogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC5udWxsYWJsZUxvbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xNzQ3LDcgKzE3NDcsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdAogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZSIpOwogICAg
IH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLm51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShp
c051bGwpKTsKICAgICBpZiAoaXNOdWxsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKTsKQEAgLTE3NjcsNyArMTc2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
bnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiKTsKICAgICB9CiAgICAgYm9vbCBpc051bGwgPSBmYWxz
ZTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCBpbXBsLm51bGxhYmxlU3RyaW5nQXR0cmlidXRlKGlzTnVsbCkpOwogICAg
IGlmIChpc051bGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpOwpA
QCAtMTc4Nyw3ICsxNzg3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKICAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZSIpOwogICAgIH0KICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVs
bGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoaXNOdWxsKSk7CiAgICAgaWYgKGlzTnVsbCkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7CkBAIC0xODA4LDcgKzE4MDgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLAogICAgIH0KICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubnVsbGFibGVTdHJpbmdWYWx1ZShpc051
bGwsIGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICBpZiAoaXNOdWxs
KQpAQCAtMTgyOCw3ICsxODI4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlMKICAgICAgICAg
ICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImF0dHJpYnV0ZSIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmF0dHJpYnV0
ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xODQ1LDcg
KzE4NDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRF
bnVtVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlV2l0
aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dp
dGhDYWNoZShleGVjLCBpbXBsLmF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTE4NzUsMTAgKzE4NzUsMTAg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwogICAg
IFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8
SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBj
b25zdHJ1Y3Rvci4KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgogICAg
IGNhc3RlZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpLCB2YWx1ZSk7CiB9CiAKQEAgLTE4OTUsNyArMTg5NSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFs
dWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5MTcsNyArMTkxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQnl0ZUF0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpbnQ4
X3QgbmF0aXZlVmFsdWUodG9JbnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTkzNyw3ICsxOTM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgdWludDhfdCBu
YXRpdmVWYWx1ZSh0b1VJbnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk1Nyw3ICsxOTU3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAgIHRo
cm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW50MTZfdCBuYXRp
dmVWYWx1ZSh0b0ludDE2KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3
Nyw3ICsxOTc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICB1aW50MTZf
dCBuYXRpdmVWYWx1ZSh0b1VJbnQxNihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwog
ICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE5OTcsNyArMTk5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgICAg
IHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0ciIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpbnQgbmF0aXZl
VmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMTcs
NyArMjAxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGxvbmcgbG9uZyBuYXRp
dmVWYWx1ZSh0b0ludDY0KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjAz
Nyw3ICsyMDM3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgICAgIHRocm93
U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbmF0aXZlVmFsdWUodG9VSW50NjQoZXhlYywgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMDU3LDcgKzIwNTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFs
dQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0
cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA3Nyw3ICsyMDc3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZShK
U1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwOTcsNyArMjA5Nyw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqWE1MT2JqQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1CiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZShKU1Rlc3RPYmo6OnRv
V3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIxMTcsNyArMjExNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY3JlYXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGJvb2wgbmF0aXZlVmFsdWUodmFsdWUudG9Cb29sZWFuKGV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMTM3
LDcgKzIxMzcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jbwogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxNTcsNyArMjE1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50
ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVk
SW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjE3Nyw3ICsyMTc3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2IK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZs
ZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICB1bnNpZ25lZCBuYXRpdmVWYWx1ZSh0b1VJbnQzMihleGVj
LCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxOTcsNyArMjE5Nyw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSh2YWx1ZS50
b0Jvb2xlYW4oZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIyMTcsNyArMjIxNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
UmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBF
bmNvZGVkCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlVG9TdHJpbmdX
aXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjIzNyw3ICsyMjM3LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IGJhc2VPYmplY3QsIEVuY28KICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0aXZlVmFsdWUo
dmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgdmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0yMjU3LDcgKzIy
NTcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpbnQg
bmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAg
LTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjCiAgICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9v
bGVhbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgYm9vbCBuYXRpdmVWYWx1ZSh2YWx1ZS50b0Jvb2xlYW4oZXhlYykpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOTcs
NyArMjI5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFCiAgICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBjb25z
dCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMjMxNyw3ICsyMzE3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlMKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFy
cmF5QXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiBuYXRpdmVWYWx1ZSh0b0Zsb2F0MzJBcnJheSh2YWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIzMzcsNyArMjMzNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAg
ICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29u
dmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTIzNTcsNyArMjM1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwK
ICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbnQgbmF0aXZlVmFs
dWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCkBAIC0yMzc5LDcgKzIzNzksNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgbmF0
aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTIzOTksNyArMjM5OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
YmFzZU9iCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
Y29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKQEAgLTI0MTQsNyArMjQxNCw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
Q3VzdG9tQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWYWx1CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGJhc2VPYmpl
Y3QpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNl
T2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgY2FzdGVkVGhpcy0+c2V0Q3VzdG9tQXR0cihleGVjLCB2YWx1ZSk7CkBAIC0y
NDMzLDcgKzI0MzMsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI0NTMsMTEgKzI0NTMsMTEgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9X
cmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSkt
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKHNjcmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKQEAgLTI0NzYsNyArMjQ3Niw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VPCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFRlc3RPYmoqIG5h
dGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ5NiwxMSArMjQ5
NiwxMSBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICBpbXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNj
cmlwdENvbnRleHQsIG5hdGl2ZVZhbHVlKTsKQEAgLTI1MTksMTEgKzI1MTksMTEgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICBp
bXBsLnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
ZXhlYywgc2NyaXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwpAQCAtMjU0MiwxMSArMjU0MiwxMSBA
QCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBw
ZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47Ci0gICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyhleGVjLCBzY3JpcHRDb250ZXh0LCBuYXRpdmVWYWx1ZSk7CkBA
IC0yNTY1LDExICsyNTY1LDExIEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlCiAgICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byogc2NyaXB0Q29u
dGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICgh
c2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoZXhlYywgc2Ny
aXB0Q29udGV4dCwgbmF0aXZlVmFsdWUpOwpAQCAtMjU4OCw3ICsyNTg4LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmoKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYwOSw3ICsy
NjA5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWQKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIxIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1
ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzMSw3ICsy
NjMxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWQKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1
ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY1Myw3ICsy
NjUzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWQKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1
ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY2OCwxMCAr
MjY2OCwxMCBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZQogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBVTlVTRURfUEFSQU0oYmFzZU9iamVj
dCk7CiAgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Ci0gICAgYXV0byogY2FzdGVkVGhpcyA9
IGpzQ2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYmFzZU9iamVjdCk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVj
dG9yCiAgICAgY2FzdGVkVGhpcy0+cHV0RGlyZWN0KGV4ZWMtPnZtKCksIElkZW50aWZpZXIoZXhl
YywgImNvbmRpdGlvbmFsQXR0cjQiKSwgdmFsdWUpOwogfQogCkBAIC0yNjgzLDEwICsyNjgzLDEw
IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKICAg
ICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0
PEpTVGVzdE9iaio+KGJhc2VPYmplY3QpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1Rlc3RPYmoqPihiYXNlT2JqZWN0KTsKICAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVl
KTsKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4g
Y29uc3RydWN0b3IuCisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKICAg
ICBjYXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAiY29u
ZGl0aW9uYWxBdHRyNSIpLCB2YWx1ZSk7CiB9CiAKQEAgLTI2OTgsMTAgKzI2OTgsMTAgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZU9iamUKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwogICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOwotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oYmFzZU9iamVjdCk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdE9iaio+KGJhc2VPYmplY3QpOwogICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOwogICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKLSAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1
Y3Rvci4KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgogICAgIGNhc3Rl
ZFRoaXMtPnB1dERpcmVjdChleGVjLT52bSgpLCBJZGVudGlmaWVyKGV4ZWMsICJjb25kaXRpb25h
bEF0dHI2IiksIHZhbHVlKTsKIH0KIApAQCAtMjcxOSw3ICsyNzE5LDcgQEAgdm9pZCBzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwg
RW5jb2RlZEpTVmEKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgbmF0aXZlVmFsdWUoZXhl
Yy0+dm0oKSwgdmFsdWUpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTI3MzksNyArMjczOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
TXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29k
ZWRKU1ZhCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAibXV0YWJsZVBvaW50Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQb2ludD4qIG5hdGl2ZVZhbHVlKEpT
U1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3NTksNyArMjc1OSw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Piog
bmF0aXZlVmFsdWUoSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc3OSw3ICsy
Nzc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSh0b0lu
dDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjc5OSw3ICsyNzk5LDcg
QEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpY3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWwKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBmbG9hdCBuYXRpdmVWYWx1ZSh2YWx1ZS50
b0Zsb2F0KGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CkBAIC0yODE5LDcgKzI4MTksNyBAQCB2b2lkIHNldEpTVGVzdE9iaklk
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYQogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImlkIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjgzOSw3ICsyODM5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0
dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIFNoYWRvd2luZyBhIGJ1
aWx0LWluIG9iamVjdC4KKyAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBvYmplY3QKICAgICBj
YXN0ZWRUaGlzLT5wdXREaXJlY3QoZXhlYy0+dm0oKSwgSWRlbnRpZmllcihleGVjLCAicmVwbGFj
ZWFibGVBdHRyaWJ1dGUiKSwgdmFsdWUpOwogfQogCkBAIC0yODU2LDcgKzI4NTYsNyBAQCB2b2lk
IHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYgogICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1
ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3Niw3ICsy
ODc2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY28KICAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVW
YWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjg5Niw3
ICsyODk2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlw
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5MTgsNyArMjkxOCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kKEV4ZWNTdGF0ZSogZXhlCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidm9p
ZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNU
ZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpbXBsLnZvaWRNZXRo
b2QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAt
MjkzMCw3ICsyOTMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKICAgICBpbnQgbG9uZ0FyZyh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CkBAIC0yOTUzLDcgKzI5NTMsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZChF
eGVjU3RhdGUqIGV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImJ5dGVNZXRob2QiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJ5dGVNZXRob2QoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtMjk2NSw3ICsyOTY1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyhFeGVjU3QKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlTWV0aG9kV2l0aEFyZ3MiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpbnQ4X3QgYnl0ZUFyZyh0b0ludDgoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKTsKQEAgLTI5ODgsNyArMjk4OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
Y3RldE1ldGhvZChFeGVjU3RhdGUqIGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0
ZXRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwor
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTMwMDAsNyArMzAwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdz
KEV4ZWNTCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib2N0ZXRNZXRob2RXaXRoQXJncyIp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjpp
bmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJn
dW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIHVpbnQ4X3Qgb2N0ZXRBcmco
dG9VSW50OChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOwpAQCAt
MzAyMyw3ICszMDIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBleGUKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJsb25nTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
UyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0aG9kKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMwMzUsNyArMzAzNSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25n
TWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ01l
dGhvZFdpdGhBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgaW50
IGxvbmdBcmcodG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lv
bikpOwpAQCAtMzA1OCw3ICszMDU4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIGV4ZWMKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJvYmpNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLm9iak1ldGhvZCgpKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzA3MCw3ICszMDcwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdp
dGhBcmdzKEV4ZWNTdGEKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvYmpNZXRob2RXaXRo
QXJncyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGludCBsb25nQXJn
KHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKTsKQEAg
LTMwOTMsNyArMzA5Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAgICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPj4gc2VxdWVu
Y2VBcmcoKHRvUmVmUHRyTmF0aXZlQXJyYXk8U2NyaXB0UHJvZmlsZSwgSlNTY3JpcHRQcm9maWxl
PihleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgJkpTU2NyaXB0UHJvZmlsZTo6dG9XcmFwcGVkKSkp
OwpAQCAtMzExMCw3ICszMTEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEUKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGludCBsb25nQXJnKHRvSW50MzIoZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKTsKQEAgLTMxMjcsNyArMzEyNyw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0
aG9kV2l0aEVudW1BcmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBj
b25zdCBTdHJpbmcgZW51bUFyZyhleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CkBAIC0z
MTQ2LDcgKzMxNDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAg
LTMxNjksNyArMzE2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlCiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAic2VyaWFsaXplZFZhbHVlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFsaXplZEFy
ZyhTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSwg
MCwgMCkpOwpAQCAtMzE4Niw3ICszMTg2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoRXhlY1N0YXRlKgogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm9wdGlvbnNPYmplY3QiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBEaWN0aW9uYXJ5IG9vKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApKTsKQEAgLTMyMDYsNyArMzIwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBsLm1l
dGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CkBA
IC0zMjQwLDcgKzMyNDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImFkZEV2ZW50TGlzdGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5lciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlm
IChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zMjU1LDcgKzMyNTUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRM
aXN0ZW5lcihFeGVjUwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlbW92ZUV2ZW50TGlz
dGVuZXIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBsaXN0ZW5l
ciA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIGlmIChVTkxJS0VMWSghbGlzdGVuZXIuaXNPYmpl
Y3QoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC0zMjcwLDcgKzMyNzAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjUwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZVZvaWQiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaW1wbC53aXRoU2NyaXB0U3RhdGVWb2lkKGV4ZWMpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0zMjgyLDcgKzMyODIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndp
dGhTY3JpcHRTdGF0ZU9iaiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6
Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRlT2JqKGV4ZWMpKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKQEAgLTMyOTYsNyArMzI5Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhj
ZXB0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2Vw
dGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBpbXBsLndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24oZXhlYywgZWMpOwog
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CkBAIC0zMzEwLDcgKzMzMTAsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlT2JqRXhjZXB0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAg
ICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2Fz
dGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwud2l0aFNjcmlwdFN0YXRl
T2JqRXhjZXB0aW9uKGV4ZWMsIGVjKSkpOwogCkBAIC0zMzI3LDggKzMzMjcsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKLSAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3Jp
cHRDb250ZXh0KTsKQEAgLTMzNDIsOCArMzM0Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7Ci0gICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGltcGwud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZShleGVjLCBzY3JpcHRDb250ZXh0KTsKQEAgLTMzNTcsOSArMzM1Nyw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvKiBz
Y3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGV4ZWMsIHNjcmlwdENvbnRleHQsIGVjKSkp
OwpAQCAtMzM3Nyw4ICszMzc3LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXgKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlcyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7Ci0gICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhleGVjLCBzY3JpcHRDb250ZXh0KSkpOwpAQCAt
MzM5NCw3ICszMzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWwKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50
cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKGV4ZWMs
IDApKTsKICAgICBpbXBsLndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soc2NyaXB0QXJn
dW1lbnRzLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTM0MDcsNyArMzQwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CiAgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0g
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKQEAgLTM0MjksNyArMzQyOSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
bWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBpbnQgbm9uT3B0KHRvSW50MzIoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pKTsKQEAgLTM0NTYsNyArMzQ1Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTm9uT3B0aW9uYWxBcmdBCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiAgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CiAgICAgaW50IG5vbk9wdCh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CkBAIC0zNDkxLDcgKzM0OTEsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nKAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKIAogICAgIHNpemVfdCBh
cmdzQ291bnQgPSBleGVjLT5hcmd1bWVudENvdW50KCk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSAw
KSB7CkBAIC0zNTEzLDcgKzM1MTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyKGV4
ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwpAQCAtMzUyOCw3ICszNTI4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJp
bmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9i
ajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzdHIo
YXJndW1lbnRPck51bGwoZXhlYywgMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBhcmd1bWVudE9y
TnVsbChleGVjLCAwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNTQzLDcgKzM1NDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Fy
ZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2Jq
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJn
dW1lbnQoMCkuaXNGdW5jdGlvbigpKQpAQCAtMzU2MCw3ICszNTYwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25D
YWxsYmFja0FyZ0EKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1
cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwogICAgIGludCBub25DYWxsYmFjayh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBO
b3JtYWxDb252ZXJzaW9uKSk7CkBAIC0zNTgwLDcgKzM1ODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNr
QW5kT3B0aQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0
aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxU
ZXN0Q2FsbGJhY2s+IGNhbGxiYWNrOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRl
ZmluZWRPck51bGwoKSkgewogICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmlzRnVuY3Rpb24oKSkKQEAgLTM2MjIsNyArMzYyMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDEoRXhl
Y1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxNZXRob2QxIik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbC5jb25kaXRpb25hbE1ldGhvZDEoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMzYzNyw3ICszNjM3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFs
TWV0aG9kMihFeGVjU3QKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1l
dGhvZDIiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVz
dE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaW1wbC5jb25kaXRpb25h
bE1ldGhvZDIoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQpAQCAtMzY1Miw3ICszNjUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3QKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbE1ldGhvZDMiKTsKICAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaW1wbC5jb25kaXRpb25hbE1ldGhvZDMoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQpAQCAtMzY2Niw3ICszNjY2LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kMSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgVGVz
dE9iaiogb2JqQXJnKEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBA
IC0zNjg2LDcgKzM2ODYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKAogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKICAgICBUZXN0T2JqKiBvYmpBcmcoSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhl
Yy0+YXJndW1lbnQoMCkpKTsKQEAgLTM3MTMsNyArMzcxMyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDMoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGNvbnN0IFN0cmluZyYgc3RyQXJn
KGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTM3MzAsNyArMzczMCw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDQoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGludCBs
b25nQXJnKHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
KTsKQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoCiAgICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAgIEFTU0VSVF9HQ19P
QkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigp
KQpAQCAtMzc2NCw3ICszNzY0LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNigKICAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvdmVybG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7CiAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpc3RBcmcodG9ET01T
dHJpbmdMaXN0KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBAIC0zNzgxLDcgKzM3ODEsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92
ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBW
ZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PFN0cmluZz4oZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpKTsKQEAgLTM3OTgsNyArMzc5OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDgoCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIFRlc3RPYmoqIG9iakFyZyhKU1Rlc3RP
Ymo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSkpOwpAQCAtMzgxNSw3ICszODE1LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kOSgKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQog
ICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgVmVj
dG9yPFN0cmluZz4gYXJyYXlBcmcodG9OYXRpdmVBcnJheTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKSk7CkBAIC0zODMyLDcgKzM4MzIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
MAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1Ro
aXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJn
KHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBAIC0z
ODQ5LDcgKzM4NDksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMQogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm92ZXJsb2FkZWRNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKICAgICBjb25zdCBTdHJpbmcmIHN0ckFyZyhleGVjLT5hcmd1bWVudCgwKS5pc0Vt
cHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CkBAIC0zOTc0LDcgKzM5NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhlYwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7
Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENv
dW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgdW5zaWduZWQgc2hvcnQgb2JqQXJnc1No
b3J0ID0gMDsKQEAgLTQwMDQsNyArNDAwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgVmVjdG9yPHVuc2lnbmVk
PiB1bnNpZ25lZExvbmdTZXF1ZW5jZSh0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihleGVjLCBleGVj
LT5hcmd1bWVudCgwKSkpOwpAQCAtNDAyMSw3ICs0MDIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24o
RXhlY1MKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhy
b3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7
CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6Omlu
Zm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2Jq
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CkBAIC00MDQxLDcgKzQwNDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZQogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNDA2
MSw3ICs0MDYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UiKTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsK
LSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJn
KHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBAIC00
MDgxLDcgKzQwODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZTIiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5
QXJnKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBA
IC00MTAxLDcgKzQxMDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhlY1N0YXRlKgogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgImdldFNWR0RvY3VtZW50Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmICghc2hvdWxkQWxsb3dBY2Nl
c3NUb05vZGUoZXhlYywgaW1wbC5nZXRTVkdEb2N1bWVudChlYykpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKQEAgLTQxMTgsNyArNDExOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udmVydDEiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5m
bygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUoSlNU
ZXN0Tm9kZTo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBAIC00MTM1LDcgKzQxMzUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDIoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImNvbnZlcnQyIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgVGVzdE5v
ZGUqIHZhbHVlKEpTVGVzdE5vZGU6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSkpOwpAQCAt
NDE1Miw3ICs0MTUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJjb252ZXJ0NCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwogICAgIFRlc3ROb2RlKiB2YWx1ZShKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1l
bnQoMCkpKTsKQEAgLTQxNjksNyArNDE2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29udmVydDUiKTsKICAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGV4ZWMpKTsKICAgICBUZXN0Tm9kZSogdmFsdWUoSlNUZXN0Tm9kZTo6dG9XcmFwcGVk
KGV4ZWMtPmFyZ3VtZW50KDApKSk7CkBAIC00MTg2LDcgKzQxODYsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVu
Y3Rpb24oRXhlYwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVy
biB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludEZ1bmN0
aW9uIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RP
Ymo6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBU
ZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoU1ZHUHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24o
KSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC00MTk4LDcg
KzQxOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihFeAogICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImltbXV0YWJsZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+OjpjcmVhdGUo
aW1wbC5pbW11dGFibGVQb2ludEZ1bmN0aW9uKCkpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogfQpAQCAtNDIxMCw3ICs0MjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93
VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAib3JhbmdlIik7CiAgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8oKSk7Ci0gICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIGltcGwuYmFuYW5hKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTQyMjIsNyArNDIyMiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bihFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb24i
KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6
aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKQEAgLTQyNDgsNyArNDI0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiKTsKICAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygp
KTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
QEAgLTQyNzMsNyArNDI3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhBcnJheShFCiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
ZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkiKTsKICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTQyOTgs
NyArNDI5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZChFeGVjCiAgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KGV4ZWMpKTsKICAgICBjb25zdCBTdHJpbmcmIGhlYWQoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwpAQCAtNDMxOCw3ICs0MzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWMKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIGRvdWJsZSBoZWFkKGV4ZWMtPmFyZ3VtZW50
KDApLnRvTnVtYmVyKGV4ZWMpKTsKQEAgLTQzMzgsNyArNDMzOCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRo
b2QoRXhlY1N0CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidmFyaWFkaWNOb2RlTWV0aG9k
Iik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgTm9kZSogaGVhZChKU05v
ZGU6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSkpOwpAQCAtNDM2MSw3ICs0MzYxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFu
eShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAg
ICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYW55Iik7CiAg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RPYmo6OmluZm8o
KSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgZmxvYXQgYShleGVjLT5hcmd1bWVu
dCgwKS50b0Zsb2F0KGV4ZWMpKTsKQEAgLTQzNzYsNyArNDM3Niw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBl
eGVjKQogCiB2b2lkIEpTVGVzdE9iajo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0
T2JqKj4oY2VsbCk7CisgICAgSlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9i
aio+KGNlbGwpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5m
bygpKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhY2hlZEF0dHJpYnV0ZTEpOwpAQCAtNDM5
Miw4ICs0MzkyLDggQEAgYm9vbCBKU1Rlc3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUKIAogdm9pZCBKU1Rlc3RPYmpP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNv
bnRleHQpCiB7Ci0gICAgYXV0byoganNUZXN0T2JqID0ganNDYXN0PEpTVGVzdE9iaio+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01X
cmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBKU1Rlc3RPYmoqIGpzVGVzdE9iaiA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldv
cmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE9iai0+aW1wbCgpLCBqc1Rlc3RPYmopOwog
ICAgIGpzVGVzdE9iai0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAzMTE3NTJhYTdhMGUwNmZiODczZTg2YWJmN2Y5
ZWUwNjE2NTg2YWExLi45N2RjMDVhNmEzMDZlMzQxNDhlZTEwNTM0NDhmNzk0YTJhMjI0OTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC05MSw3
ICs5MSw3IEBAIHByb3RlY3RlZDoKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMxKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBhdXRvKiBjYXN0ZWRU
aGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4
ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVm
ZmVyKHRvQXJyYXlCdWZmZXIoZXhlYy0+YXJndW1lbnQoMCkpKTsKQEAgLTEwMyw3ICsxMDMsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczIoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGF1dG8qIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9y
Kj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBSZWZQdHI8QXJyYXlCdWZm
ZXJWaWV3PiBhcnJheUJ1ZmZlclZpZXcodG9BcnJheUJ1ZmZlclZpZXcoZXhlYy0+YXJndW1lbnQo
MCkpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczMoRXhlY1N0YXRl
KiBleGVjKQogewotICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMp
KTsKICAgICBCbG9iKiBibG9iKEpTQmxvYjo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKSk7
CkBAIC0xMjcsNyArMTI3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlm
IChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAg
ICAgY29uc3QgU3RyaW5nJiBzdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwpA
QCAtMjQxLDggKzI0MSw4IEBAIGJvb2wgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKCiAKIHZvaWQgSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqPiho
YW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycyoganNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LT5pbXBsKCksIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOwogICAgIGpzVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMtPnJlbGVhc2VJbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDg2NDYwYTRj
YmRlZWQwMDdkYTdiZDFlODIzYTMzNzA2YmRhMzU2MWUuLjIwNmYyZmZiNWFiZDA4NWJkZDFhYzc1
YzQ3ZTBiN2ViNGNkYzU3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgRW5jb2RlZEpT
VmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRl
KiBleGVjLCBKU09iamUKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVl
Iik7CiAgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKICAgICB9Ci0gICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0gaW1wbC52YWx1ZSgpID8gaW1wbC52YWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0xODYsNyArMTg2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUi
KTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7CiAgICAgfQotICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGltcGwucmVhZG9ubHlWYWx1ZSgpID8gaW1wbC5yZWFkb25seVZhbHVlKCktPmRl
c2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCAwKSA6IGpzTnVsbCgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTIwNSw3ICsyMDUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
YWNoZWRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsCiAgICAgfQogICAgIGlmIChKU1ZhbHVlIGNhY2hl
ZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5jYWNoZWRW
YWx1ZSgpID8gaW1wbC5jYWNoZWRWYWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICBjYXN0ZWRUaGlzLT5tX2NhY2hl
ZFZhbHVlLnNldChleGVjLT52bSgpLCBjYXN0ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQb3J0cyhFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZQogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsK
ICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJwb3J0cyIpOwogICAgIH0KLSAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c0FycmF5KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnBvcnRzKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI0Miw3ICsyNDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNo
ZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZQogICAgIH0KICAgICBpZiAoSlNWYWx1ZSBjYWNoZWRW
YWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkUmVhZG9ubHlWYWx1ZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gaW1wbC5j
YWNoZWRSZWFkb25seVZhbHVlKCkgPyBpbXBsLmNhY2hlZFJlYWRvbmx5VmFsdWUoKS0+ZGVzZXJp
YWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDoganNOdWxsKCk7CiAg
ICAgY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVlLnNldChleGVjLT52bSgpLCBjYXN0
ZWRUaGlzLCByZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTI2OSw3ICsyNjksNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhcwogICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIiwgInZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IG5hdGl2ZVZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMs
IHZhbHVlLCAwLCAwKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgc2V0SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkVmFsdWUiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIDAsIDApKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC0zMDQsNyArMzA0
LDcgQEAgSlNWYWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmdldENv
bnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmoKIAogdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKIHsKLSAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGNlbGwpOworICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqPihjZWxsKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRW
YWx1ZSk7CkBAIC0zMjAsOCArMzIwLDggQEAgYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjoKIAogdm9p
ZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0
byoganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0ganNDYXN0PEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsK
LSAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0
KTsKKyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGpzVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsK
ICAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS0+aW1wbCgpLCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpOwog
ICAgIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS0+cmVsZWFzZUltcGwoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCmluZGV4IDlhN2I1ZGNhMGI2Y2ZhOGY3NzdiMjkyMjczNmJk
MzVmYzkyYTYyY2UuLjYxNDIzZjY0YTc5ODUyZDFlYmFkMWNiNzRhNzJlZmZiYjI0ZTQ5ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6Y29u
c3RydWN0SlNUZXN0VHlwZWRlZnMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgp
KTsKKyAgICBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpT
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBjb25z
dCBTdHJpbmcmIGhlbGxvKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDog
ZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKQEAgLTI0Myw3
ICsyNDMsNyBAQCBKU1Rlc3RUeXBlZGVmczo6fkpTVGVzdFR5cGVkZWZzKCkKIAogYm9vbCBKU1Rl
c3RUeXBlZGVmczo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQog
ewotICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihvYmplY3Qp
OworICAgIEpTVGVzdFR5cGVkZWZzKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFR5cGVkZWZz
Kj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGlu
Zm8oKSk7CiAgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RUeXBlZGVmcywgQmFz
ZT4oZXhlYywgSlNUZXN0VHlwZWRlZnNUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KQEAgLTI1OSw3ICsyNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsbwogICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RU
eXBlZGVmcyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRMb25nTG9uZ0F0
dHIiKTsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBU
ZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI3Niw3ICsyNzYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTTwogICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWUiKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5
cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgIH0KLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwuaW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPyBpbXBsLmltbXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkg
OiBqc051bGwoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0y
ODcsNyArMjg3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRl
c3RTdWJPYmooRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2wKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHNsb3RCYXNlKTsKICAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKLSAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzKj4o
c2xvdEJhc2UpOworICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dFR5cGVkZWZzKj4oc2xvdEJhc2UpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0
U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQogCkBAIC0zMDQsNyArMzA0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0Kgog
ICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMi
LCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0VHlw
ZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBA
IC0zMjIsNyArMzIyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KgogICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0VHlw
ZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTM0MCw3ICszNDAsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYgogICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICB9CiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKKyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLnN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zNTgsNyArMzU4LDcgQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIEpTT2IKICAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNh
dGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAg
fQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdFR5cGVkZWZz
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5zdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zODQsNyArMzg0LDcg
QEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QKICAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgdW5zaWdu
ZWQgbG9uZyBsb25nIG5hdGl2ZVZhbHVlKHRvVUludDY0KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA0LDcgKzQwNCw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNJbW11
dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKICAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImlt
bXV0YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdFR5cGVkZWZzJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG5hdGl2ZVZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVl
LCAwLCAwKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDI0LDcgKzQyNCw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqCiAg
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgc2V0SlNU
ZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqCiAgICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVzdFR5
cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwogICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKQEAgLTQ2
Niw3ICs0NjYsNyBAQCB2b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYgogICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CkBAIC00ODYs
NyArNDg2LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGIKICAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgY29uc3QgU3RyaW5nJiBuYXRp
dmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
QEAgLTUwOCw3ICs1MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogZXhlYwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAKICAgICBzaXplX3QgYXJnc0NvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgp
OwogICAgIGlmIChhcmdzQ291bnQgPD0gMCkgewpAQCAtNTMwLDcgKzUzMCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNo
YWRvdyhFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzZXRTaGFk
b3ciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5
cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Cisg
ICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgZmxv
YXQgd2lkdGgoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7CkBAIC01NzEsNyArNTcx
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXIKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVk
ZWZzIiwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+IHNlcXVlbmNlQXJnKCh0b1JlZlB0ck5hdGl2ZUFycmF5PFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmSlNT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRvV3JhcHBlZCkpKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAi
bnVsbGFibGVBcnJheUFyZyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKKyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKICAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PFN0cmluZz4o
ZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKQEAgLTYwNSw3ICs2MDUsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0
aENsYW1wKEV4ZWNTdAogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJl
dHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiZnVuY1dpdGhD
bGFtcCIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
VHlwZWRlZnM6OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICB1
bnNpZ25lZCBsb25nIGxvbmcgYXJnMSA9IDA7CkBAIC02NDIsNyArNjQyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRh
YmxlUG9pbnRGdW5jdGkKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dUaGlzVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJs
ZVBvaW50RnVuY3Rpb24iKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRo
aXMsIEpTVGVzdFR5cGVkZWZzOjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CisgICAgVGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Pjo6Y3JlYXRlKGltcGwu
aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTY1NCw3ICs2NTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKAog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6
OmluZm8oKSk7Ci0gICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKKyAgICBUZXN0
VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKQEAgLTY3NCw3ICs2NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMgog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXJyYXlGdW5jdGlvbjIiKTsK
ICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpTVGVzdFR5cGVkZWZz
OjppbmZvKCkpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CisgICAgVGVz
dFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CkBAIC02OTQsNyArNjk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXQK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImNhbGxXaXRoU2VxdWVuY2VUaGF0UmVx
dWlyZXNJbmNsdWRlIik7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlz
LCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOworICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwogICAgIFZlY3RvcjxSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0Pj4gc2VxdWVuY2VBcmcoKHRvUmVm
UHRyTmF0aXZlQXJyYXk8VGVzdEV2ZW50VGFyZ2V0LCBKU1Rlc3RFdmVudFRhcmdldD4oZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCksICZKU1Rlc3RFdmVudFRhcmdldDo6dG9XcmFwcGVkKSkpOwpAQCAt
NzExLDcgKzcxMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24oCiAgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywg
IlRlc3RUeXBlZGVmcyIsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiAgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RUeXBlZGVmczo6aW5mbygpKTsKLSAgICBh
dXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpbXBs
Lm1ldGhvZFdpdGhFeGNlcHRpb24oZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CkBAIC03MjcsOCArNzI3LDggQEAgYm9vbCBKU1Rlc3RUeXBlZGVmc093bmVyOjppc1JlYWNoYWJs
ZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGgKIAogdm9pZCBKU1Rl
c3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRs
ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc1Rlc3RUeXBlZGVmcyA9IGpzQ2FzdDxK
U1Rlc3RUeXBlZGVmcyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKLSAgICBhdXRvJiB3b3Js
ZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAgICBKU1Rlc3RU
eXBlZGVmcyoganNUZXN0VHlwZWRlZnMgPSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKICAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdFR5cGVkZWZzLT5pbXBsKCksIGpzVGVzdFR5cGVkZWZzKTsKICAgICBqc1Rlc3RU
eXBlZGVmcy0+cmVsZWFzZUltcGwoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCmluZGV4IGM4OWNmN2U5ZDZj
MWJlZDE0MmRkZWEwMGEyNzc3MWQ3NmZhNjg2YzIuLjk1MTg4MjJhZWE2MWVkNzYzYmU5NGM2MTAy
ZDI0YmYwMWM3ODU3MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIGpzYXR0cmlidXRlUmVhZG9ubHkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKCiAgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgICAgIHJldHVy
biB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgImF0dHJpYnV0ZSIsICJyZWFkb25seSIpOwog
ICAgIH0KLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAgIGF0dHJpYnV0
ZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKGV4ZWMsIGltcGwucmVhZG9ubHkoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTgyLDggKzE4Miw4IEBAIGJvb2wgSlNhdHRyaWJ1dGVP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kCiAKIHZvaWQgSlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byoganNhdHRyaWJ1
dGUgPSBqc0Nhc3Q8SlNhdHRyaWJ1dGUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Cisg
ICAgSlNhdHRyaWJ1dGUqIGpzYXR0cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOworICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQgPSAqc3RhdGlj
X2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CiAgICAgdW5jYWNoZVdyYXBwZXIod29y
bGQsICZqc2F0dHJpYnV0ZS0+aW1wbCgpLCBqc2F0dHJpYnV0ZSk7CiAgICAganNhdHRyaWJ1dGUt
PnJlbGVhc2VJbXBsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKaW5kZXggYzg2MTMwNTU5MjQ0NWJjZDA3OTgy
NGM1Y2E5MmNkOTdkYzBhNTE2Ny4uMDhmYzQ5M2VlYjY5ZThmYmU4OGUxZjQzNGUyMzQzY2YxNGVm
Zjg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTcmVhZG9ubHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU3JlYWRvbmx5LmNwcApAQCAtMTYwLDggKzE2MCw4IEBAIGJvb2wgSlNyZWFkb25seU93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsCiAKIHZvaWQgSlNyZWFkb25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvKiBqc3JlYWRvbmx5
ID0ganNDYXN0PEpTcmVhZG9ubHkqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Ci0gICAgYXV0
byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CisgICAg
SlNyZWFkb25seSoganNyZWFkb25seSA9IGpzQ2FzdDxKU3JlYWRvbmx5Kj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOworICAgIERPTVdyYXBwZXJXb3JsZCYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8
RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7CiAgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZq
c3JlYWRvbmx5LT5pbXBsKCksIGpzcmVhZG9ubHkpOwogICAgIGpzcmVhZG9ubHktPnJlbGVhc2VJ
bXBsKCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>