<?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>145815</bug_id>
          
          <creation_ts>2015-06-09 14:17:08 -0700</creation_ts>
          <short_desc>REGRESSION(r185373): broke tests (Requested by alexchristensen on #webkit).</short_desc>
          <delta_ts>2015-06-09 20:12:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>145811</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>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1100782</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 14:17:08 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/185373 broke the build:
broke tests (Requested by alexchristensen 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>1100784</commentid>
    <comment_count>1</comment_count>
      <attachid>254601</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-09 14:17:39 -0700</bug_when>
    <thetext>Created attachment 254601
ROLLOUT of r185373

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>1100785</commentid>
    <comment_count>2</comment_count>
      <attachid>254601</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-09 14:18:56 -0700</bug_when>
    <thetext>Comment on attachment 254601
ROLLOUT of r185373

cq-. Darin says he&apos;s landing a fix soon.
Here&apos;s an example of the problems he&apos;s about to fix https://build.webkit.org/results/Apple%20Yosemite%20Release%20WK2%20(Tests)/r185373%20(5904)/results.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254601</attachid>
            <date>2015-06-09 14:17:39 -0700</date>
            <delta_ts>2015-06-09 14:18:56 -0700</delta_ts>
            <desc>ROLLOUT of r185373</desc>
            <filename>bug-145815-20150609141712.patch</filename>
            <type>text/plain</type>
            <size>89991</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1Mzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRiNGJlMmMwY2U5YmU3
MjI0NTg5MWU0NTNhYjdjZWFmYWQzNmE0OC4uNDFmNzcyZWU2YTQxNTJmYWZkMjUwZjVhOTc1MmY5
YTc3YmFiNzAxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA2LTA5ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTg1MzczLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ1ODE1CisKKyAgICAgICAgYnJva2UgdGVzdHMgKFJlcXVlc3RlZCBi
eSBhbGV4Y2hyaXN0ZW5zZW4gb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdl
c2V0OgorCisgICAgICAgICJKYXZhU2NyaXB0IGJpbmRpbmdzIGFyZSB1bm5lY2Vzc2FyaWx5IGNo
ZWNraW5nIGZvciBpbXBvc3NpYmxlCisgICAgICAgIGVtcHR5IEpTVmFsdWUgYXJndW1lbnRzIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1ODExCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4NTM3MworCiAyMDE1LTA2
LTA5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBKYXZhU2NyaXB0
IGJpbmRpbmdzIGFyZSB1bm5lY2Vzc2FyaWx5IGNoZWNraW5nIGZvciBpbXBvc3NpYmxlIGVtcHR5
IEpTVmFsdWUgYXJndW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA0NDAwNTc5ZTM2NDk3NzE3NzZjNjVkNmE0NmY1ZDgz
YjJlYTg2Y2M2Li5hM2FhYmE2NDQ0Njg2ZTg0NDU2Y2U1YmNiZWMzOGQzOTJkNWUyNTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0F1ZGlvVHJhY2tDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9UcmFja0N1c3RvbS5jcHAK
QEAgLTQzLDEwICs0MywxMCBAQCB2b2lkIEpTQXVkaW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hp
bGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB2b2lkIEpTQXVkaW9UcmFjazo6c2V0S2luZChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5n
KTsKKyAgICBpbXBsKCkuc2V0S2luZChuYXRpdmVWYWx1ZSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOwpAQCAtNTYsMTAgKzU2LDEwIEBA
IHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1
ZSkKIHZvaWQgSlNBdWRpb1RyYWNrOjpzZXRMYW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBhdXRvJiBzdHJpbmcg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBu
YXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm47Ci0gICAgaW1wbCgpLnNldExhbmd1YWdlKHN0cmluZyk7CisgICAgaW1wbCgpLnNl
dExhbmd1YWdlKG5hdGl2ZVZhbHVlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1RleHRUcmFja0N1c3RvbS5jcHAKaW5kZXggMTg4NWM1NzdlNTI1OGFlM2RlNWQyZDJkMmFk
ZmNiMzA5MzkxZmY3Ny4uYmI5NmMyMDFlMGQwNTNjMTRkZmYyOWIyMDNlOWMwM2YxYzY5Mzg2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VzdG9tLmNw
cApAQCAtNDMsMjcgKzQzLDI5IEBAIHZvaWQgSlNUZXh0VHJhY2s6OnZpc2l0QWRkaXRpb25hbENo
aWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB2b2lkIEpTVGV4dFRyYWNrOjpzZXRLaW5k
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1
ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47
Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5nKTsKKyAgICBpbXBsKCkuc2V0S2luZChuYXRpdmVW
YWx1ZSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOworICAgIHJldHVybjsKICNlbmRpZgogfQogCiB2b2lkIEpTVGV4dFRyYWNrOjpzZXRM
YW5ndWFnZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiB7CisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgYXV0byYgc3RyaW5nID0g
dmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyYgbmF0
aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS5zZXRMYW5ndWFnZShzdHJpbmcpOworICAgIGltcGwoKS5zZXRM
YW5ndWFnZShuYXRpdmVWYWx1ZSk7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNWaWRlb1RyYWNrQ3VzdG9tLmNwcAppbmRleCA5
NDg2Nzg4YTY2YjI0MjEzNzdkYWM1MTA2YjZiZjU1MjY3NjI3ZjAwLi5lN2JjYmEyMTVlNGY0YTg0
ZWU4ODQxY2NiMzI3ODk4YzZjODllOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1ZpZGVvVHJhY2tDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVmlkZW9UcmFja0N1c3RvbS5jcHAKQEAgLTQyLDI3ICs0MiwyOSBAQCB2b2lkIEpT
VmlkZW9UcmFjazo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAKIHZvaWQgSlNWaWRlb1RyYWNrOjpzZXRLaW5kKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLSAgICBhdXRvJiBzdHJpbmcgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgY29uc3QgU3RyaW5nJiBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLnNldEtpbmQoc3RyaW5n
KTsKKyAgICBpbXBsKCkuc2V0S2luZChuYXRpdmVWYWx1ZSk7CiAjZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBVTlVTRURfUEFSQU0odmFsdWUpOworICAgIHJldHVybjsKICNlbmRp
ZgogfQogCiB2b2lkIEpTVmlkZW9UcmFjazo6c2V0TGFuZ3VhZ2UoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQogeworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQotICAgIGF1dG8mIHN0cmluZyA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcmIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCkuc2V0TGFu
Z3VhZ2Uoc3RyaW5nKTsKKyAgICBpbXBsKCkuc2V0TGFuZ3VhZ2UobmF0aXZlVmFsdWUpOwogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKKyAg
ICByZXR1cm47CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCBjMTRkZWRhOWJmZWYxMzBkNmRjNzllNWE0
Y2Q3MmMyYzFjOTI2Yjk3Li44NDRmNjMwNzFhMmUxZTg2MDg1MGNjZDczYWRlZDhlYmZhY2MzMWRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQpAQCAtMjYzOCw3ICsyNjM4LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVy
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpIC4gIiBuYXRpdmVWYWx1ZSA9ICIgLiBKU1ZhbHVlVG9O
YXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiLCAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21T
aWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUoIiAuIEpTVmFs
dWVUb05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIC4gIik7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybjtcbiIpOwogCkBAIC0zMjk0LDExICszMjk0LDkgQEAgc3ViIEdl
bmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGlt
ZS9FcnJvci5oPiJ9ID0gMTsKIAogICAgICAgICAgICAgbXkgJGFyZ1ZhbHVlID0gImV4ZWMtPmFy
Z3VtZW50KCRhcmdzSW5kZXgpIjsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAvLyBLZWVwIHBvaW50ZXIgdG8gdGhlIEpTU3RyaW5nIGluIGEgbG9jYWwgc28gd2UgZG9uJ3Qg
bmVlZCB0byByZWYgdGhlIFN0cmluZy5cbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8qICR7bmFtZX1TdHJpbmcgPSAke2FyZ1ZhbHVlfS50b1N0cmluZyhleGVj
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGNvbnN0IFN0cmlu
ZyAke25hbWV9KCR7YXJnVmFsdWV9LmlzRW1wdHkoKSA/IFN0cmluZygpIDogJHthcmdWYWx1ZX0u
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8mICRuYW1lID0gJHtuYW1lfVN0cmluZy0+dmFsdWUoZXhlYyk7XG4iKTsK
IAogICAgICAgICAgICAgbXkgQGVudW1WYWx1ZXMgPSAkY29kZUdlbmVyYXRvci0+VmFsaWRFbnVt
VmFsdWVzKCRhcmdUeXBlKTsKICAgICAgICAgICAgIG15IEBlbnVtQ2hlY2tzID0gKCk7CkBAIC0z
MzMwLDEyICszMzI4LDEyIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IlJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmcifSkgewotICAgICAgICAgICAgICAgICMgRklY
TUU6IFRoaXMgY291bGQgYmUgbWFkZSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCBpZiB3ZSBhZGRl
ZCBhbiBBdG9taWNTdHJpbmcoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+JiYpIGNvbnN0cnVjdG9y
IGFuZCByZW1vdmVkIHRoZSBjYWxsIHRvIGdldCgpIGhlcmUuCi0gICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEF0b21pY1N0cmluZyAkbmFtZSA9IGV4ZWMtPmFyZ3VtZW50
KCRhcmdzSW5kZXgpLnRvU3RyaW5nKGV4ZWMpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMp
LmdldCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICgkbmFtZS5pc051bGwoKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdfJG5hbWUgPSBleGVjLT5h
cmd1bWVudCgkYXJnc0luZGV4KS5pc0VtcHR5KCkgPyBudWxscHRyIDogZXhlYy0+YXJndW1lbnQo
JGFyZ3NJbmRleCkudG9TdHJpbmcoZXhlYyktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYyk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFleGlz
dGluZ18kbmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bGwoKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3QgQXRvbWljU3RyaW5nICRuYW1lKCpl
eGlzdGluZ18kbmFtZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVy
ZSgkcGFyYW1ldGVyKSAuICIgJG5hbWUgPSAiIC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIs
ICRvcHRpb25hbCAmJiAkZGVmYXVsdEF0dHJpYnV0ZSAmJiAkZGVmYXVsdEF0dHJpYnV0ZSBlcSAi
TnVsbFN0cmluZyIgPyAiYXJndW1lbnRPck51bGwoZXhlYywgJGFyZ3NJbmRleCkiIDogImV4ZWMt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRwYXJh
bWV0ZXIpIC4gIiAkbmFtZSgiIC4gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICRvcHRpb25h
bCAmJiAkZGVmYXVsdEF0dHJpYnV0ZSAmJiAkZGVmYXVsdEF0dHJpYnV0ZSBlcSAiTnVsbFN0cmlu
ZyIgPyAiYXJndW1lbnRPck51bGwoZXhlYywgJGFyZ3NJbmRleCkiIDogImV4ZWMtPmFyZ3VtZW50
KCRhcmdzSW5kZXgpIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9KSAuICIpO1xuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
ICMgSWYgYSBwYXJhbWV0ZXIgaXMgImFuIGluZGV4IiBhbmQgaXQncyBuZWdhdGl2ZSBpdCBzaG91
bGQgdGhyb3cgYW4gSU5ERVhfU0laRV9FUlIgZXhjZXB0aW9uLgpAQCAtMzY3NCw3ICszNjcyLDcg
QEAgc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCiAKIG15ICVuYXRpdmVUeXBlID0gKAog
ICAgICJDb21wYXJlSG93IiA9PiAiUmFuZ2U6OkNvbXBhcmVIb3ciLAotICAgICJET01TdHJpbmci
ID0+ICJTdHJpbmciLAorICAgICJET01TdHJpbmciID0+ICJjb25zdCBTdHJpbmciLAogICAgICJO
b2RlRmlsdGVyIiA9PiAiUmVmUHRyPE5vZGVGaWx0ZXI+IiwKICAgICAiU2VyaWFsaXplZFNjcmlw
dFZhbHVlIiA9PiAiUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4iLAogICAgICJEYXRlIiA9
PiAiZG91YmxlIiwKQEAgLTM3MTMsNyArMzcxMSw3IEBAIHN1YiBHZXROYXRpdmVUeXBlCiAgICAg
cmV0dXJuICJWZWN0b3I8IiAuIEdldE5hdGl2ZVZlY3RvcklubmVyVHlwZSgkYXJyYXlPclNlcXVl
bmNlVHlwZSkgLiAiPiIgaWYgJGFycmF5T3JTZXF1ZW5jZVR5cGU7CiAKICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7Ci0gICAgICAgIHJldHVybiAiU3RyaW5nIjsK
KyAgICAgICAgcmV0dXJuICJjb25zdCBTdHJpbmciOwogICAgIH0KIAogICAgICMgRm9yIGFsbCBv
dGhlciB0eXBlcywgdGhlIG5hdGl2ZSB0eXBlIGlzIGEgcG9pbnRlciB3aXRoIHNhbWUgdHlwZSBu
YW1lIGFzIHRoZSBJREwgdHlwZS4KQEAgLTM4MjUsMTQgKzM4MjMsMTQgQEAgc3ViIEpTVmFsdWVU
b05hdGl2ZQogICAgICAgICAgICAgcmV0dXJuICJ2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhl
eGVjLCAkdmFsdWUpIgogICAgICAgICB9CiAgICAgICAgIGlmICgkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQXRvbWljU3RyaW5nIn0pIHsKLSAgICAgICAgICAgIHJldHVybiAiJHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT50b0F0b21pY1N0cmluZyhleGVjKSI7CisgICAgICAgICAgICBy
ZXR1cm4gIiR2YWx1ZS5pc0VtcHR5KCkgPyBBdG9taWNTdHJpbmcoKSA6ICR2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dG9BdG9taWNTdHJpbmcoZXhlYykiOwogICAgICAgICB9CiAgICAgICAgICMgRklY
TUU6IEFkZCB0aGUgY2FzZSBmb3IgJ2lmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVHJlYXRVbmRlZmluZWRBcyJ9IGFuZCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiVHJlYXRVbmRlZmluZWRBcyJ9IGVxICJOdWxsU3RyaW5nIikpJy4KLSAgICAgICAgcmV0dXJu
ICIkdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIjsKKyAgICAgICAgcmV0dXJuICIk
dmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAkdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEgImFueSIpIHsKLSAgICAgICAgcmV0
dXJuICJ7IGV4ZWMtPnZtKCksICR2YWx1ZSB9IjsKKyAgICAgICAgcmV0dXJuICJleGVjLT52bSgp
LCAkdmFsdWUiOwogICAgIH0KIAogICAgIGlmICgkdHlwZSBlcSAiTm9kZUZpbHRlciIpIHsKQEAg
LTM4NDcsNyArMzg0NSw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKIAogICAgIGlmICgkdHlwZSBl
cSAiRGljdGlvbmFyeSIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRpY3Rpb25hcnku
aCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgIHJldHVybiAieyBleGVjLCAkdmFsdWUgfSI7Cisg
ICAgICAgIHJldHVybiAiZXhlYywgJHZhbHVlIjsKICAgICB9CiAKICAgICBpZiAoJHR5cGUgZXEg
IkRPTVN0cmluZ0xpc3QiICkgewpAQCAtMzg3NSw3ICszODczLDcgQEAgc3ViIEpTVmFsdWVUb05h
dGl2ZQogICAgIH0KIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkp
IHsKLSAgICAgICAgcmV0dXJuICIkdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIjsK
KyAgICAgICAgcmV0dXJuICIkdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAkdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpIjsKICAgICB9CiAKICAgICAjIERlZmF1bHQsIGFzc3Vt
ZSBhdXRvZ2VuZXJhdGVkIHR5cGUgY29udmVyc2lvbiByb3V0aW5lcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcAppbmRleCAzNWU4YWQzNjk4NDk2ZGJjYzQxZWI5ZjYyMTNmYjkyOWZj
ODhhZDRkLi5kNGUzNjI5ZGNmNmEyODcyMGZiN2IxNzFjZjk0ZmQ5MzMyNzBjMGUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZl
RE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rp
b25FeGNpdGluZ0Z1bmN0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwotICAgIE5vZGUqIG5leHRDaGlsZCA9IEpTTm9kZTo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBOb2RlKiBuZXh0Q2hpbGQoSlNOb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1l
bnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwuZXhjaXRp
bmdGdW5jdGlvbihuZXh0Q2hpbGQpOwpAQCAtMjMxLDcgKzIzMSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0
TWVzc2FnZShFCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAg
IFN0cmluZyBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBtZXNzYWdlKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1w
dHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwucG9zdE1l
c3NhZ2UobWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRl
eCBiMGFkOWRjNmJkYWUzMDRiMDgwMTc4MjdkYjZiOTY3NmZlZWViNjY2Li4yNGUyNmEzMzRjYWFk
MWM4Y2EwMDQyNDc5ZTEzOGIwZDA5YWUyNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuYwog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBTdHJpbmcgc3Ry
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNv
bnN0IFN0cmluZyBzdHIoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5hbm90aGVyRnVuY3Rpb24oc3RyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDVkMTRjNGMwY2NhNjMyNDQ1YjRhZDMxMGE1MTgx
OGU4OWM0Mzg5MzIuLmIzMWFmZjAxY2JiMDdlOWVlM2RhZTJmOTJkN2VjYTU3OThmOTFlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0ZW0o
RXhlY1N0YXRlKiBlCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBp
ZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwot
ICAgIGludCBpbmRleCA9IHRvVUludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxD
b252ZXJzaW9uKTsKKyAgICBpbnQgaW5kZXgodG9VSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQo
MCksIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBJTkRFWF9TSVpFX0VSUik7CiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yOTUsNyArMjk1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uRGlz
cGF0Y2hFdmVudChFeGUKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEV2ZW50
KiBldnQgPSBKU0V2ZW50Ojp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEV2ZW50
KiBldnQoSlNFdmVudDo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9vbGVhbihpbXBs
LmRpc3BhdGNoRXZlbnQoZXZ0LCBlYykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBjYzAz
Y2I4YWEyY2JiZjNjNGRhMzczMDQ0NDZmMzYxMjk1ZDVjY2ZjLi5iNGExNzczMGI1MzYxMTkxMTZm
NGY5NTJhMDlkN2QwZjRkYjExYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcApAQCAtMjcyLDEw
ICsyNzIsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWMKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIFN0cmluZyBzdHIxID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHIxKGV4ZWMtPmFyZ3VtZW50
KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFN0
cmluZyBzdHIyID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIGNvbnN0IFN0cmluZyBzdHIyKGV4ZWMtPmFyZ3VtZW50KDEpLmlzRW1wdHkoKSA/IFN0
cmluZygpIDogZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC02
NjMsNyArNjYzLDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckltcGxlbWVu
dHNTdGF0aWNBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QKIHsKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJh
c2VPYmplY3QpOwotICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICBUZXN0SW50ZXJmYWNlOjpzZXRJbXBsZW1lbnRzU3RhdGljQXR0cihuYXRpdmVWYWx1ZSk7CkBA
IC02ODUsNyArNjg1LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFN0cmlu
ZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBj
b25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1
ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldEltcGxlbWVudHNT
dHIyKG5hdGl2ZVZhbHVlKTsKQEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3Qs
IEVuYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7Ci0gICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6OnRvV3JhcHBlZCh2YWx1
ZSk7CisgICAgTm9kZSogbmF0aXZlVmFsdWUoSlNOb2RlOjp0b1dyYXBwZWQodmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgaW1wbC5zZXRJbXBsZW1lbnRzTm9kZShuYXRpdmVWYWx1ZSk7CkBAIC03MzQsNyArNzM0LDcg
QEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvclN1cHBsZW1lbnRhbFN0YXRpY0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamUKIHsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOwot
ICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBUZXN0U3VwcGxl
bWVudGFsOjpzZXRTdXBwbGVtZW50YWxTdGF0aWNBdHRyKG5hdGl2ZVZhbHVlKTsKQEAgLTc1Niw3
ICs3NTYsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjIoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0
cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIFRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBs
ZW1lbnRhbFN0cjIoJmltcGwsIG5hdGl2ZVZhbHVlKTsKQEAgLTc5Miw3ICs3OTIsNyBAQCB2b2lk
IHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgTm9kZSogbmF0aXZlVmFsdWUgPSBKU05vZGU6
OnRvV3JhcHBlZCh2YWx1ZSk7CisgICAgTm9kZSogbmF0aXZlVmFsdWUoSlNOb2RlOjp0b1dyYXBw
ZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CiAgICAgVGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxlbWVudGFsTm9kZSgm
aW1wbCwgbmF0aXZlVmFsdWUpOwpAQCAtODM1LDEwICs4MzUsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QyKEUKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBTdHJpbmcgc3RyQXJnID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHJBcmco
ZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+
YXJndW1lbnQoMSkpOworICAgIFRlc3RPYmoqIG9iakFyZyhKU1Rlc3RPYmo6OnRvV3JhcHBlZChl
eGVjLT5hcmd1bWVudCgxKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBX
VEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNNZXRob2QyKHNjcmlwdENvbnRleHQsIHN0ckFyZywg
b2JqQXJnLCBlYykpKTsKQEAgLTkwMSwxMCArOTAxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRo
b2QyCiAgICAgYXV0byogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICBpZiAoIXNjcmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgU3RyaW5nIHN0ckFyZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgc3RyQXJnKGV4ZWMt
PmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3Vt
ZW50KDEpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcoSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+
YXJndW1lbnQoMSkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpn
ZXRQdHIoVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMigmaW1wbCwgc2NyaXB0
Q29udGV4dCwgc3RyQXJnLCBvYmpBcmcsIGVjKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IGZmN2FlNDE3ODY1YWE0ZDhhNjlmMmUyZGY3OTE0NGQxNzZmODZkNjku
LjYyZjg0MzIzNGJlMTFlYzUxMDI2MTc0ZjMyZjNiYmZmYTdlZjFmMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyOCwxMyArMTI4LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6
OmNvbnN0cnVjdEpTCiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcg
c3RyMSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBjb25zdCBTdHJpbmcgc3RyMShleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBTdHJpbmcgc3RyMiA9IGV4ZWMtPmFyZ3Vt
ZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgc3Ry
MihleGVjLT5hcmd1bWVudCgxKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50
KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLSAgICBTdHJpbmcgc3RyMyA9IGFyZ3VtZW50T3JOdWxsKGV4ZWMsIDIpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgc3RyMyhhcmd1bWVudE9y
TnVsbChleGVjLCAyKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGFyZ3VtZW50T3JOdWxsKGV4ZWMs
IDIpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBSZWZQdHI8VGVzdE5hbWVkQ29uc3RydWN0b3I+IG9iamVjdCA9IFRlc3RO
YW1lZENvbnN0cnVjdG9yOjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKCpjYXN0ZWRUaGlzLT5kb2N1
bWVudCgpLCBzdHIxLCBzdHIyLCBzdHIzLCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5jcHAKaW5kZXggY2ZmN2M3NjZiMGI5MTNmNThhM2FhM2FiOGQ1MWYxOWNkMmU0OGQ0Ni4u
N2U5NDZmNWEyODljNmUwYWRlYzllNTMwYTkzZDVjNjc0ZGFlZjQwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb25kZXRlcm1pbmlzdGljLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgc2V0SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKLSAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIG5hdGl2ZVZhbHVlKHZhbHVlLmlz
RW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgaW1wbC5zZXROb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihuYXRpdmVWYWx1ZSk7
CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY0V4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU08KICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFN0
cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAg
ICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2
YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldE5vbmRldGVy
bWluaXN0aWNFeGNlcHRpb25BdHRyKG5hdGl2ZVZhbHVlKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0
aW9uQXR0cihFeGVjU3RhdGUqIGV4ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBuYXRpdmVW
YWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlv
bkF0dHIobmF0aXZlVmFsdWUpOwpAQCAtNDM5LDcgKzQzOSw3IEBAIHZvaWQgc2V0SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0
ZSogZXhlCiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBuYXRpdmVWYWx1ZSh2
YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuOwogICAgIGltcGwuc2V0Tm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIo
bmF0aXZlVmFsdWUsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggMGU4YTNkZWEyZWM5MGYzMzU1YTlkZWMy
ZmJiYjQ1Zjc1M2E3MWY0Yi4uMjE5ZjM1ZjEwZmQzZTc3ZDQ3NjViNTFiMDZiMWJiODI4Y2JjMGZl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKQEAgLTE4OTQsNyArMTg5NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29u
c3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VP
YmplCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUp
OwogICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKLSAgICBTdHJpbmcgbmF0aXZlVmFsdWUg
PSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIG5h
dGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CiAgICAgVGVzdE9iajo6c2V0U3RhdGljU3RyaW5nQXR0cihuYXRp
dmVWYWx1ZSk7CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbHVlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKLSAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/IFN0
cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG5h
dGl2ZVZhbHVlICE9ICIiICYmIG5hdGl2ZVZhbHVlICE9ICJFbnVtVmFsdWUxIiAmJiBuYXRpdmVW
YWx1ZSAhPSAiRW51bVZhbHVlMiIgJiYgbmF0aXZlVmFsdWUgIT0gIkVudW1WYWx1ZTMiKQpAQCAt
MTk0OSw3ICsxOTQ5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpCeXRlQXR0cihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgaW50OF90
IG5hdGl2ZVZhbHVlID0gdG9JbnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAg
ICBpbnQ4X3QgbmF0aXZlVmFsdWUodG9JbnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuOwogICAgIGltcGwuc2V0Qnl0ZUF0dHIobmF0aXZlVmFsdWUpOwpAQCAtMTk2OSw3ICsxOTY5
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIHVpbnQ4X3QgbmF0aXZlVmFs
dWUgPSB0b1VJbnQ4KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICB1aW50OF90
IG5hdGl2ZVZhbHVlKHRvVUludDgoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgaW1wbC5zZXRPY3RldEF0dHIobmF0aXZlVmFsdWUpOwpAQCAtMTk4OSw3ICsxOTg5LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIGludDE2X3QgbmF0aXZlVmFsdWUgPSB0
b0ludDE2KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBpbnQxNl90IG5hdGl2
ZVZhbHVlKHRvSW50MTYoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1w
bC5zZXRTaG9ydEF0dHIobmF0aXZlVmFsdWUpOwpAQCAtMjAwOSw3ICsyMDA5LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBi
YXNlT2JqZWN0LCBFbmNvZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIHVpbnQxNl90IG5hdGl2ZVZhbHVlID0gdG9VSW50
MTYoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAgIHVpbnQxNl90IG5hdGl2ZVZh
bHVlKHRvVUludDE2KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwu
c2V0VW5zaWduZWRTaG9ydEF0dHIobmF0aXZlVmFsdWUpOwpAQCAtMjAyOSw3ICsyMDI5LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNl
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQz
MihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IG5hdGl2ZVZhbHVlKHRv
SW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRMb25n
QXR0cihuYXRpdmVWYWx1ZSk7CkBAIC0yMDQ5LDcgKzIwNDksNyBAQCB2b2lkIHNldEpTVGVzdE9i
akxvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNv
ZGVkSlNWYQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7Ci0gICAgbG9uZyBsb25nIG5hdGl2ZVZhbHVlID0gdG9JbnQ2NChleGVjLCB2
YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgbG9uZyBsb25nIG5hdGl2ZVZhbHVlKHRvSW50
NjQoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRMb25nTG9u
Z0F0dHIobmF0aXZlVmFsdWUpOwpAQCAtMjA2OSw3ICsyMDY5LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0LCBFbmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBuYXRpdmVWYWx1ZSA9IHRvVUlu
dDY0KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgbmF0aXZlVmFsdWUodG9VSW50NjQoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgaW1wbC5zZXRVbnNpZ25lZExvbmdMb25nQXR0cihuYXRpdmVWYWx1ZSk7CkBAIC0yMDg5
LDcgKzIwODksNyBAQCB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVj
LCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU3RyaW5nIG5h
dGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0
IFN0cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0U3RyaW5nQXR0cihuYXRp
dmVWYWx1ZSk7CkBAIC0yMTA5LDcgKzIxMDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhbAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7Ci0gICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CisgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CiAgICAgaW1wbC5zZXRUZXN0T2JqQXR0cihuYXRpdmVWYWx1ZSk7CkBAIC0yMTI5LDcgKzIx
MjksNyBAQCB2b2lkIHNldEpTVGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTVmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CisgICAgVGVzdE9iaiogbmF0aXZl
VmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRYTUxPYmpB
dHRyKG5hdGl2ZVZhbHVlKTsKQEAgLTIxNDksNyArMjE0OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
Q3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKLSAgICBib29sIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKGV4ZWMp
OworICAgIGJvb2wgbmF0aXZlVmFsdWUodmFsdWUudG9Cb29sZWFuKGV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1w
bC5zZXRDcmVhdGUobmF0aXZlVmFsdWUpOwpAQCAtMjE2OSw3ICsyMTY5LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJh
c2VPYmplY3QsIEVuY28KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJp
bmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKTsKKyAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFs
dWUodmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgdmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVm
bGVjdGVkc3RyaW5nYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKQEAgLTIxODksNyArMjE4OSw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIGJhc2VPYmplY3QsIEVuCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0
byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0lu
dDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBpbnQgbmF0aXZlVmFsdWUo
dG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldElu
dGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkaW50ZWdyYWxhdHRy
QXR0ciwgbmF0aXZlVmFsdWUpOwpAQCAtMjIwOSw3ICsyMjA5LDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBiYXNlT2IKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwotICAgIHVuc2lnbmVkIG5hdGl2ZVZhbHVlID0gdG9VSW50MzIoZXhlYywg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAgIHVuc2lnbmVkIG5hdGl2ZVZhbHVlKHRvVUlu
dDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0VW5zaWdu
ZWRJbnRlZ3JhbEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVuc2lnbmVk
aW50ZWdyYWxhdHRyQXR0ciwgbmF0aXZlVmFsdWUpOwpAQCAtMjIyOSw3ICsyMjI5LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIGJvb2wgbmF0aXZlVmFsdWUgPSB2YWx1ZS50
b0Jvb2xlYW4oZXhlYyk7CisgICAgYm9vbCBuYXRpdmVWYWx1ZSh2YWx1ZS50b0Jvb2xlYW4oZXhl
YykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBpbXBsLnNldEJvb2xlYW5BdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZWZsZWN0ZWRib29sZWFuYXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKQEAgLTIyNDksNyArMjI0OSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBTdHJpbmcgbmF0aXZlVmFsdWUg
PSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2YWx1ZSk7CisgICAgY29uc3QgU3Ry
aW5nIG5hdGl2ZVZhbHVlKHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihXZWJDb3JlOjpI
VE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyLCBuYXRpdmVWYWx1ZSk7CkBAIC0yMjY5LDcg
KzIyNjksNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jbwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU3RyaW5nIG5hdGl2
ZVZhbHVlID0gdmFsdWVUb1N0cmluZ1dpdGhOdWxsQ2hlY2soZXhlYywgdmFsdWUpOworICAgIGNv
bnN0IFN0cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCB2
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKICAgICBpbXBsLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oV2Vi
Q29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50U3RyaW5nQXR0ckF0dHIsIG5hdGl2ZVZhbHVl
KTsKQEAgLTIyODksNyArMjI4OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAg
ICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9u
KTsKKyAgICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVy
c2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybjsKICAgICBpbXBsLnNldEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1l
czo6Y3VzdG9tQ29udGVudEludGVncmFsQXR0ckF0dHIsIG5hdGl2ZVZhbHVlKTsKQEAgLTIzMDks
NyArMjMwOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBib29sIG5hdGl2
ZVZhbHVlID0gdmFsdWUudG9Cb29sZWFuKGV4ZWMpOworICAgIGJvb2wgbmF0aXZlVmFsdWUodmFs
dWUudG9Cb29sZWFuKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRCb29sZWFuQXR0cmlidXRlKFdlYkNv
cmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEJvb2xlYW5BdHRyQXR0ciwgbmF0aXZlVmFsdWUp
OwpAQCAtMjMyOSw3ICsyMzI5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21V
UkxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAg
IFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVlVG9TdHJpbmdXaXRoTnVsbENoZWNrKGV4ZWMsIHZh
bHVlKTsKKyAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFsdWUodmFsdWVUb1N0cmluZ1dpdGhOdWxs
Q2hlY2soZXhlYywgdmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudFVSTEF0dHJBdHRyLCBu
YXRpdmVWYWx1ZSk7CkBAIC0yMzQ5LDcgKzIzNDksNyBAQCB2b2lkIHNldEpTVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRK
UwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7Ci0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUgPSB0b0Zsb2F0MzJB
cnJheSh2YWx1ZSk7CisgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gbmF0aXZlVmFsdWUodG9GbG9h
dDMyQXJyYXkodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRUeXBlZEFycmF5QXR0cihuYXRpdmVWYWx1
ZS5nZXQoKSk7CkBAIC0yMzY5LDcgKzIzNjksNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKLSAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKTsKKyAgICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFs
Q29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldEF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKG5hdGl2
ZVZhbHVlKTsKQEAgLTIzOTAsNyArMjM5MCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAg
ICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKGV4ZWMsIHZhbHVlLCBO
b3JtYWxDb252ZXJzaW9uKTsKKyAgICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1
ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uKG5hdGl2ZVZhbHVlLCBlYyk7CkBAIC0yNDExLDcgKzI0MTEsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIGJhc2VPYgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7Ci0gICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZS5p
c0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0U3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24obmF0aXZlVmFsdWUp
OwpAQCAtMjQzMiw3ICsyNDMyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2IKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBTdHJpbmcgbmF0aXZlVmFsdWUgPSB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIG5hdGl2ZVZhbHVlKHZhbHVlLmlzRW1wdHkoKSA/
IFN0cmluZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1w
bC5zZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSwgZWMpOwpAQCAt
MjQ4MSw3ICsyNDgxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIGludCBu
YXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAg
IGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKGV4ZWMsIG5hdGl2ZVZhbHVl
KTsKQEAgLTI1MDEsNyArMjUwMSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCoKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOworICAg
IFRlc3RPYmoqIG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0yNTI0
LDcgKzI1MjQsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlTwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CisgICAgVGVzdE9iaiog
bmF0aXZlVmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgbmF0aXZlVmFsdWUpOwpAQCAtMjU0
NCw3ICsyNTQ0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2IKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpOworICAgIFRlc3RPYmoq
IG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8qIHNj
cmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0yNTY3LDcgKzI1Njcs
NyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1ZSk7CisgICAgVGVzdE9iaiogbmF0aXZlVmFs
dWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgYXV0byogc2NyaXB0Q29udGV4
dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKQEAgLTI1OTAsNyArMjU5MCw3IEBAIHZvaWQg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhFeGVjU3RhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZSA9IEpTVGVz
dE9iajo6dG9XcmFwcGVkKHZhbHVlKTsKKyAgICBUZXN0T2JqKiBuYXRpdmVWYWx1ZShKU1Rlc3RP
Ymo6OnRvV3JhcHBlZCh2YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvKiBzY3JpcHRDb250ZXh0ID0ganNDYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwpAQCAtMjYxMyw3ICsyNjEzLDcgQEAgdm9pZCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZShFeGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwotICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlID0gSlNUZXN0T2JqOjp0b1dy
YXBwZWQodmFsdWUpOworICAgIFRlc3RPYmoqIG5hdGl2ZVZhbHVlKEpTVGVzdE9iajo6dG9XcmFw
cGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGF1dG8qIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CkBAIC0yNjM2LDcgKzI2MzYsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iagog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7Ci0gICAgVGVzdE9iaiogbmF0aXZlVmFsdWUgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZCh2YWx1
ZSk7CisgICAgVGVzdE9iaiogbmF0aXZlVmFsdWUoSlNUZXN0T2JqOjp0b1dyYXBwZWQodmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm47CiAgICAgaW1wbC5zZXRXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KG5hdGl2ZVZhbHVlKTsKQEAgLTI2NTcsNyArMjY1Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNv
ZGVkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKLSAgICBpbnQgbmF0aXZlVmFsdWUgPSB0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKTsKKyAgICBpbnQgbmF0aXZlVmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwg
Tm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldENvbmRpdGlvbmFsQXR0cjEobmF0aXZl
VmFsdWUpOwpAQCAtMjY3OSw3ICsyNjc5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwotICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZl
cnNpb24pOworICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxD
b252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0Q29uZGl0aW9uYWxBdHRyMihuYXRpdmVWYWx1ZSk7
CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAg
aW50IG5hdGl2ZVZhbHVlID0gdG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7
CisgICAgaW50IG5hdGl2ZVZhbHVlKHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm47CiAgICAgaW1wbC5zZXRDb25kaXRpb25hbEF0dHIzKG5hdGl2ZVZhbHVlKTsKQEAgLTI3
NjcsNyArMjc2Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZSA9IHsgZXhlYy0+dm0oKSwgdmFsdWUgfTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBuYXRpdmVWYWx1ZShleGVjLT52bSgpLCB2YWx1ZSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGltcGwuc2V0QW55QXR0cmlidXRlKG5hdGl2ZVZhbHVlKTsKQEAgLTI3ODcsNyArMjc4
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGJhc2VPYmplY3QsIEVuY29kZWRKU1ZhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICBTVkdQcm9wZXJ0eVRlYXJP
ZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9pbnQ6OnRvV3JhcHBlZCh2YWx1ZSk7
CisgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiogbmF0aXZlVmFsdWUoSlNTVkdQb2lu
dDo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0TXV0YWJsZVBvaW50KG5hdGl2ZVZh
bHVlKTsKQEAgLTI4MDcsNyArMjgwNyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqSW1tdXRhYmxlUG9p
bnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpTCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
LSAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnQ+KiBuYXRpdmVWYWx1ZSA9IEpTU1ZHUG9p
bnQ6OnRvV3JhcHBlZCh2YWx1ZSk7CisgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50Piog
bmF0aXZlVmFsdWUoSlNTVkdQb2ludDo6dG9XcmFwcGVkKHZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0
SW1tdXRhYmxlUG9pbnQobmF0aXZlVmFsdWUpOwpAQCAtMjgyNyw3ICsyODI3LDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmpl
Y3QsIEVuY29kZWRKU1ZhbHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhl
YywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMy
KGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0Qmx1ZWJlcnJ5
KG5hdGl2ZVZhbHVlKTsKQEAgLTI4NDcsNyArMjg0Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3Ry
aWN0RmxvYXQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpT
VmFsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKLSAgICBmbG9hdCBuYXRpdmVWYWx1ZSA9IHZhbHVlLnRvRmxvYXQoZXhlYyk7Cisg
ICAgZmxvYXQgbmF0aXZlVmFsdWUodmFsdWUudG9GbG9hdChleGVjKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0
U3RyaWN0RmxvYXQobmF0aXZlVmFsdWUpOwpAQCAtMjg2Nyw3ICsyODY3LDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhlYywg
dmFsdWUsIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4
ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0SWQobmF0aXZlVmFs
dWUpOwpAQCAtMjkwNCw3ICsyOTA0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2IKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwot
ICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNp
b24pOworICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGltcGwuc2V0TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUobmF0
aXZlVmFsdWUpOwpAQCAtMjkyNCw3ICsyOTI0LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJs
ZVN0cmluZ1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYmplY3QsIEVuY28K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwotICAgIGludCBuYXRpdmVWYWx1ZSA9IHRvSW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENv
bnZlcnNpb24pOworICAgIGludCBuYXRpdmVWYWx1ZSh0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3Jt
YWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0TnVsbGFibGVTdHJpbmdWYWx1ZShuYXRpdmVW
YWx1ZSk7CkBAIC0yOTQ0LDcgKzI5NDQsNyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdp
dGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhc2VPYgogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
Ci0gICAgU3RyaW5nIG5hdGl2ZVZhbHVlID0gdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpOworICAgIGNvbnN0IFN0cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJp
bmcoKSA6IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChuYXRp
dmVWYWx1ZSAhPSAiIiAmJiBuYXRpdmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTEiICYmIG5hdGl2
ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMiIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFsVmFs
dWUzIikKQEAgLTI5ODAsMTMgKzI5ODAsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyhFeGVjU3QKICAg
ICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgaW50IGxvbmdBcmcg
PSB0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAg
ICBpbnQgbG9uZ0FyZyh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBTdHJpbmcgc3Ry
QXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMikpOworICAgIFRlc3RPYmoqIG9iakFyZyhK
U1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgyKSkpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC52b2lkTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3Ry
QXJnLCBvYmpBcmcpOwpAQCAtMzAxNSwxMyArMzAxNSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4
ZWNTdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpbnQ4
X3QgYnl0ZUFyZyA9IHRvSW50OChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVy
c2lvbik7CisgICAgaW50OF90IGJ5dGVBcmcodG9JbnQ4KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
LCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBTdHJpbmcgc3RyQXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0
eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2Jq
QXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMikpOworICAgIFRlc3RP
YmoqIG9iakFyZyhKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgyKSkpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBzdHJBcmcsIG9iakFyZykpOwpAQCAt
MzA1MCwxMyArMzA1MCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjUwogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICB1aW50OF90IG9jdGV0QXJnID0gdG9V
SW50OChleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgdWlu
dDhfdCBvY3RldEFyZyh0b1VJbnQ4KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252
ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBTdHJpbmcgc3Ry
QXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0
T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMikpOworICAgIFRlc3RPYmoqIG9iakFyZyhK
U1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgyKSkpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0
TWV0aG9kV2l0aEFyZ3Mob2N0ZXRBcmcsIHN0ckFyZywgb2JqQXJnKSk7CkBAIC0zMDg1LDEzICsz
MDg1LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgYXV0byYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoZXhlYykpOwotICAgIGludCBsb25nQXJnID0gdG9JbnQzMihleGVjLCBleGVj
LT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IGxvbmdBcmcodG9JbnQz
MihleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgU3RyaW5nIHN0ckFyZyA9IGV4ZWMtPmFyZ3VtZW50
KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgc3RyQXJn
KGV4ZWMtPmFyZ3VtZW50KDEpLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQo
MSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMt
PmFyZ3VtZW50KDIpKTsKKyAgICBUZXN0T2JqKiBvYmpBcmcoSlNUZXN0T2JqOjp0b1dyYXBwZWQo
ZXhlYy0+YXJndW1lbnQoMikpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5sb25nTWV0aG9kV2l0aEFyZ3MobG9uZ0Fy
Zywgc3RyQXJnLCBvYmpBcmcpKTsKQEAgLTMxMjAsMTMgKzMxMjAsMTMgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlm
IChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0g
ICAgaW50IGxvbmdBcmcgPSB0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxD
b252ZXJzaW9uKTsKKyAgICBpbnQgbG9uZ0FyZyh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBTdHJpbmcgc3RyQXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiog
b2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMikpOworICAgIFRl
c3RPYmoqIG9iakFyZyhKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgyKSkpOwog
ICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLm9iak1l
dGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgb2JqQXJnKSkpOwpAQCAtMzE0Myw3ICszMTQz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhFeGUKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7Ci0gICAgVmVjdG9yPFJlZlB0cjxTY3JpcHRQcm9maWxlPj4gc2VxdWVu
Y2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTY3JpcHRQcm9maWxlLCBKU1NjcmlwdFByb2Zp
bGU+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmSlNTY3JpcHRQcm9maWxlOjp0b1dyYXBwZWQp
KTsKKyAgICBWZWN0b3I8UmVmUHRyPFNjcmlwdFByb2ZpbGU+PiBzZXF1ZW5jZUFyZygodG9SZWZQ
dHJOYXRpdmVBcnJheTxTY3JpcHRQcm9maWxlLCBKU1NjcmlwdFByb2ZpbGU+KGV4ZWMsIGV4ZWMt
PmFyZ3VtZW50KDApLCAmSlNTY3JpcHRQcm9maWxlOjp0b1dyYXBwZWQpKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhzZXF1
ZW5jZUFyZyk7CkBAIC0zMTYwLDcgKzMxNjAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoRQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpbnQgbG9uZ0Fy
ZyA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOwor
ICAgIGludCBsb25nQXJnKHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNBcnJheShleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5t
ZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShsb25nQXJnKSk7CkBAIC0zMTc3LDExICszMTc3LDkgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7Ci0gICAgLy8gS2VlcCBwb2ludGVyIHRvIHRoZSBKU1N0cmluZyBpbiBhIGxvY2Fs
IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVmIHRoZSBTdHJpbmcuCi0gICAgYXV0byogZW51bUFyZ1N0
cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpOworICAgIGNvbnN0IFN0cmlu
ZyBlbnVtQXJnKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIGF1dG8mIGVudW1BcmcgPSBlbnVtQXJnU3RyaW5nLT52YWx1
ZShleGVjKTsKICAgICBpZiAoZW51bUFyZyAhPSAiIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUx
IiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUyIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUzIikK
ICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3IoKmV4ZWMsIDAsICJl
bnVtQXJnIiwgIlRlc3RPYmoiLCAibWV0aG9kV2l0aEVudW1BcmciLCAiXCJcIiwgXCJFbnVtVmFs
dWUxXCIsIFwiRW51bVZhbHVlMlwiLCBcIkVudW1WYWx1ZTNcIiIpOwogICAgIGltcGwubWV0aG9k
V2l0aEVudW1BcmcoZW51bUFyZyk7CkBAIC0zMTk5LDEwICszMTk3LDEwIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzCiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBTdHJpbmcg
c3RyQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwor
ICAgIGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3Ry
aW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVGVzdE9iaiogb2JqQXJnID0gSlNU
ZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFRlc3RPYmoqIG9iakFy
ZyhKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgxKSkpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLm1ldGhvZFRoYXRSZXF1aXJl
c0FsbEFyZ3NBbmRUaHJvd3Moc3RyQXJnLCBvYmpBcmcsIGVjKSkpOwpAQCAtMzIyMSw3ICszMjE5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihleGVjKSk7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc2VyaWFs
aXplZEFyZyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3Vt
ZW50KDApLCAwLCAwKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxp
emVkQXJnKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCAwLCAwKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLnNl
cmlhbGl6ZWRWYWx1ZShzZXJpYWxpemVkQXJnKTsKQEAgLTMyMzgsMTAgKzMyMzYsMTAgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlv
bnNPYmplY3QoRXhlY1N0YXRlKgogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKLSAgICBEaWN0aW9uYXJ5IG9vID0geyBleGVjLCBleGVjLT5hcmd1bWVudCgwKSB9Owor
ICAgIERpY3Rpb25hcnkgb28oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgRGljdGlvbmFyeSBvb28gPSB7IGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDEpIH07CisgICAgRGljdGlvbmFyeSBvb28oZXhlYywgZXhlYy0+YXJndW1lbnQoMSkp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5vcHRpb25zT2JqZWN0
KG9vLCBvb28pOwpAQCAtMzQ2NCw3ICszNDYyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhFeGUK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAK
LSAgICBpbnQgb3B0ID0gdG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29u
dmVyc2lvbik7CisgICAgaW50IG9wdCh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBO
b3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBp
bXBsLm1ldGhvZFdpdGhPcHRpb25hbEFyZyhvcHQpOwpAQCAtMzQ4MSw3ICszNDc5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7Ci0gICAgaW50IG5vbk9wdCA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCks
IE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBub25PcHQodG9JbnQzMihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5o
YWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiAKQEAgLTM0OTEsNyArMzQ4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogCi0g
ICAgaW50IG9wdCA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIE5vcm1hbENvbnZl
cnNpb24pOworICAgIGludCBvcHQodG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgTm9y
bWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1w
bC5tZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhub25PcHQsIG9wdCk7CkBA
IC0zNTA4LDcgKzM1MDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpbnQgbm9uT3B0ID0gdG9JbnQzMihl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IG5vbk9w
dCh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIApAQCAtMzUxOCw3ICszNTE2LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBpbnQgb3B0MSA9IHRvSW50MzIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBvcHQxKHRvSW50MzIoZXhl
YywgZXhlYy0+YXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIGlmIChhcmdzQ291bnQgPD0gMikgewpAQCAtMzUyNiw3ICsz
NTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0EKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBpbnQgb3B0MiA9IHRvSW50MzIo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBvcHQy
KHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMiksIE5vcm1hbENvbnZlcnNpb24pKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzKG5vbk9wdCwgb3B0MSwgb3B0Mik7CkBAIC0zNTQ4LDcg
KzM1NDYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKAogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFN0cmluZyBzdHIgPSBleGVj
LT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3Ry
aW5nIHN0cihleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyhzdHIpOwpA
QCAtMzU2Myw3ICszNTYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0kKICAgICAgICAgcmV0
dXJuIHRocm93VGhpc1R5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibWV0aG9kV2l0aE9wdGlv
bmFsU3RyaW5nSXNVbmRlZmluZWQiKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNh
c3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwotICAgIFN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIHN0cihleGVjLT5hcmd1bWVudCgw
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBs
Lm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKHN0cik7CkBAIC0zNTc4LDcgKzM1
NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSQogICAgICAgICByZXR1cm4gdGhyb3dUaGlz
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051
bGxTdHJpbmciKTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsIEpT
VGVzdE9iajo6aW5mbygpKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwot
ICAgIFN0cmluZyBzdHIgPSBhcmd1bWVudE9yTnVsbChleGVjLCAwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIHN0cihhcmd1bWVudE9yTnVsbChleGVjLCAw
KS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGFyZ3VtZW50T3JOdWxsKGV4ZWMsIDApLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyhzdHIpOwpAQCAtMzYx
Miw3ICszNjEwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBhdXRvJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50
KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQzMihl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IG5vbkNh
bGxiYWNrKHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
KTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlmICghZXhlYy0+YXJndW1l
bnQoMSkuaXNGdW5jdGlvbigpKQpAQCAtMzcxOCwxMCArMzcxNiwxMCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QxKAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAg
ICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgVGVzdE9iaiogb2JqQXJnKEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3Vt
ZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBTdHJpbmcgc3Ry
QXJnID0gZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAg
IGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMSkuaXNFbXB0eSgpID8gU3RyaW5n
KCkgOiBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKG9i
akFyZywgc3RyQXJnKTsKQEAgLTM3MzgsNyArMzczNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDIoCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFRlc3RP
YmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBUZXN0T2JqKiBvYmpBcmcoSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkp
KTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCkBAIC0zNzQ4LDcgKzM3NDYsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIGludCBsb25nQXJnID0gdG9JbnQzMihleGVj
LCBleGVjLT5hcmd1bWVudCgxKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IGxvbmdBcmco
dG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAg
IGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKG9i
akFyZywgbG9uZ0FyZyk7CkBAIC0zNzY1LDcgKzM3NjMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QzKAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBTdHJp
bmcgc3RyQXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMp
OworICAgIGNvbnN0IFN0cmluZyBzdHJBcmcoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8g
U3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykp
OwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0
aG9kKHN0ckFyZyk7CkBAIC0zNzgyLDcgKzM3ODAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0
KAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpbnQgbG9u
Z0FyZyA9IHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24p
OworICAgIGludCBsb25nQXJnKHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIE5vcm1h
bENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwu
b3ZlcmxvYWRlZE1ldGhvZChsb25nQXJnKTsKQEAgLTM4MTYsNyArMzgxNCw3IEBAIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDYoCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBsaXN0QXJnID0gdG9ET01TdHJpbmdMaXN0KGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gbGlzdEFy
Zyh0b0RPTVN0cmluZ0xpc3QoZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChsaXN0QXJnKTsK
QEAgLTM4MzMsNyArMzgzMSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoCiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5
QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PFN0cmluZz4oZXhlYywgZXhl
Yy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlt
cGwub3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CkBAIC0zODUwLDcgKzM4NDgsNyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2Q4KAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKLSAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5h
cmd1bWVudCgwKSk7CisgICAgVGVzdE9iaiogb2JqQXJnKEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4
ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBp
bXBsLm92ZXJsb2FkZWRNZXRob2Qob2JqQXJnKTsKQEAgLTM4NjcsNyArMzg2NSw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDkoCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhl
YykpOwotICAgIFZlY3RvcjxTdHJpbmc+IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBhcnJheUFyZyh0
b05hdGl2ZUFycmF5PFN0cmluZz4oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChhcnJheUFy
Zyk7CkBAIC0zODg0LDcgKzM4ODIsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMAogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBWZWN0b3I8dW5zaWduZWQ+
IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oZXhlYywgZXhlYy0+YXJndW1lbnQo
MCkpOworICAgIFZlY3Rvcjx1bnNpZ25lZD4gYXJyYXlBcmcodG9OYXRpdmVBcnJheTx1bnNpZ25l
ZD4oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChhcnJheUFyZyk7CkBAIC0zOTAxLDcgKzM4
OTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBTdHJpbmcgc3RyQXJnID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHJBcmcoZXhl
Yy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKHN0ckFyZyk7CkBAIC0zOTU1LDcgKzM5NTMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbAogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgaW50IGFyZyA9IHRvSW50MzIoZXhlYywgZXhlYy0+
YXJndW1lbnQoMCksIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBhcmcodG9JbnQzMihleGVj
LCBleGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0T2JqOjpj
bGFzc01ldGhvZFdpdGhPcHRpb25hbChhcmcpKTsKQEAgLTM5NzQsNyArMzk3Miw3IEBAIHN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kCiB7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpbnQgYXJnID0gdG9JbnQzMihleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IGFyZyh0b0ludDMy
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBUZXN0T2JqOjpvdmVybG9hZGVkTWV0aG9kMShhcmcp
OwpAQCAtMzk4OCw3ICszOTg2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QKIHsKICAgICBp
ZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwot
ICAgIFN0cmluZyB0eXBlID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyB0eXBlKGV4ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHko
KSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFRlc3RPYmo6Om92ZXJs
b2FkZWRNZXRob2QxKHR5cGUpOwpAQCAtNDA1Niw3ICs0MDU0LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25l
ZExvbmdTZXEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAg
VmVjdG9yPHVuc2lnbmVkPiB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dW5z
aWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IHVu
c2lnbmVkTG9uZ1NlcXVlbmNlKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZSh1bnNpZ25lZExvbmdTZXF1ZW5jZSk7CkBAIC00
MDc0LDcgKzQwNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjUwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXModG9OYXRpdmVBcnJheTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJy
YXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuc3RyaW5nQXJyYXlGdW5j
dGlvbih2YWx1ZXMsIGVjKSk7CkBAIC00MDk0LDcgKzQwOTIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlzdEZ1bmN0
aW9uKEV4ZQogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IHZhbHVlcyA9IHRvRE9NU3RyaW5nTGlzdChleGVjLCBleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHZhbHVlcyh0b0RPTVN0cmluZ0xpc3QoZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC5kb21TdHJpbmdMaXN0RnVuY3Rpb24odmFsdWVzLCBlYykpKTsK
QEAgLTQxMTMsMTAgKzQxMTEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGEKICAgICBhdXRv
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1
bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBh
cnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBWZWN0b3I8dW5zaWduZWQ+IGFycmF5QXJnKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+
KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBWZWN0b3I8dW5zaWduZWQ+IG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5
PHVuc2lnbmVkPihleGVjLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgVmVjdG9yPHVuc2lnbmVk
PiBudWxsYWJsZUFycmF5QXJnKHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDEpKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1l
dGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZShhcnJheUFyZywgbnVsbGFibGVBcnJh
eUFyZyk7CkBAIC00MTMzLDEwICs0MTMxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhCiAg
ICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMikpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFZlY3Rvcjx1bnNp
Z25lZD4gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihleGVjLCBleGVjLT5hcmd1
bWVudCgwKSk7CisgICAgVmVjdG9yPHVuc2lnbmVkPiBhcnJheUFyZyh0b05hdGl2ZUFycmF5PHVu
c2lnbmVkPihleGVjLCBleGVjLT5hcmd1bWVudCgwKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgVmVjdG9yPHVuc2lnbmVkPiBudWxsYWJsZUFycmF5QXJnID0gdG9OYXRp
dmVBcnJheTx1bnNpZ25lZD4oZXhlYywgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbnVsbGFibGVBcnJheUFyZyh0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihleGVjLCBl
eGVjLT5hcmd1bWVudCgxKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKGFycmF5QXJnLCBudWxs
YWJsZUFycmF5QXJnKTsKQEAgLTQxNzAsNyArNDE2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtF
TFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFRlc3RO
b2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgVGVzdE5vZGUqIHZhbHVlKEpTVGVzdE5vZGU6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgw
KSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5jb252ZXJ0MSh2
YWx1ZSk7CkBAIC00MTg3LDcgKzQxODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBleGVjKQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBUZXN0Tm9kZSogdmFs
dWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFRlc3RO
b2RlKiB2YWx1ZShKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpKTsKICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwuY29udmVydDIodmFsdWUpOwpA
QCAtNDIwNCw3ICs0MjAyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0KEV4ZWNTdGF0ZSogZXhlYykKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgVGVzdE5vZGUqIHZhbHVlID0gSlNU
ZXN0Tm9kZTo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBUZXN0Tm9kZSogdmFs
dWUoSlNUZXN0Tm9kZTo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLmNvbnZlcnQ0KHZhbHVlKTsKQEAgLTQyMjEs
NyArNDIxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0NShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFRlc3ROb2RlKiB2YWx1ZSA9IEpTVGVzdE5vZGU6
OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSk7CisgICAgVGVzdE5vZGUqIHZhbHVlKEpTVGVz
dE5vZGU6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSkpOwogICAgIGlmIChVTkxJS0VMWShl
eGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgaW1wbC5jb252ZXJ0NSh2YWx1ZSk7CkBAIC00Mjc1LDEzICs0Mjcz
LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25TdHJpY3RGdW5jdGlvbihFeGVjU3RhdGUqCiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDMpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBzdHIoZXhlYy0+YXJndW1lbnQoMCkuaXNF
bXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgZmxvYXQgYSA9
IGV4ZWMtPmFyZ3VtZW50KDEpLnRvRmxvYXQoZXhlYyk7CisgICAgZmxvYXQgYShleGVjLT5hcmd1
bWVudCgxKS50b0Zsb2F0KGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwot
ICAgIGludCBiID0gdG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgTm9ybWFsQ29udmVy
c2lvbik7CisgICAgaW50IGIodG9JbnQzMihleGVjLCBleGVjLT5hcmd1bWVudCgyKSwgTm9ybWFs
Q29udmVyc2lvbikpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLnN0cmljdEZ1bmN0aW9uKHN0ciwgYSwgYiwgZWMpKSk7CkBAIC00MzAzLDEwICs0
MzAxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFl
eGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpleGVjLCAwLCAib2JqQXJnIiwgIlRlc3RPYmoi
LCAic3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2UiLCAiVGVzdE9iaiIpOwotICAgIFRlc3RPYmoq
IG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBU
ZXN0T2JqKiBvYmpBcmcoSlNUZXN0T2JqOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpKTsK
ICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gYSA9
IHRvTmF0aXZlQXJyYXk8dW5zaWduZWQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBW
ZWN0b3I8dW5zaWduZWQ+IGEodG9OYXRpdmVBcnJheTx1bnNpZ25lZD4oZXhlYywgZXhlYy0+YXJn
dW1lbnQoMSkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQ
dHIoaW1wbC5zdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jZShvYmpBcmcsIGEsIGVjKSkpOwpAQCAt
NDMyOCwxMCArNDMyNiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoRQogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51
bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKQog
ICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqZXhlYywgMCwgIm9iakFyZyIs
ICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5IiwgIlRlc3RPYmoiKTsKLSAgICBU
ZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgVGVzdE9iaiogb2JqQXJnKEpTVGVzdE9iajo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50
KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8aW50PiBh
cnJheSA9IHRvTmF0aXZlQXJyYXk8aW50PihleGVjLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAg
VmVjdG9yPGludD4gYXJyYXkodG9OYXRpdmVBcnJheTxpbnQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDEpKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwuc3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkob2JqQXJnLCBhcnJheSwgZWMpKSk7CkBAIC00MzUw
LDcgKzQzNDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBTdHJpbmcgaGVhZCA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgaGVhZChl
eGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBWZWN0b3I8U3RyaW5nPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8U3RyaW5n
PihleGVjLCAxKTsKQEAgLTQzNzAsNyArNDM2OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVj
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIGRvdWJsZSBo
ZWFkID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYyk7CisgICAgZG91YmxlIGhlYWQo
ZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiAgICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRv
dWJsZT4oZXhlYywgMSk7CkBAIC00MzkwLDcgKzQzODgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0aG9kKEV4
ZWNTdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElL
RUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBOb2Rl
KiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIE5vZGUq
IGhlYWQoSlNOb2RlOjp0b1dyYXBwZWQoZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKQEAgLTQ0MTMsMTAg
KzQ0MTEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkFueShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3IoZXhlYykpOwotICAgIGZsb2F0IGEgPSBleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0
KGV4ZWMpOworICAgIGZsb2F0IGEoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpbnQgYiA9IHRvSW50MzIoZXhlYywg
ZXhlYy0+YXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pOworICAgIGludCBiKHRvSW50MzIo
ZXhlYywgZXhlYy0+YXJndW1lbnQoMSksIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwuYW55KGEsIGIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDM2MDNmNWY1MWFmNjQ2ZWViNTk5
YWI4ZTYxZTkxNDg2YWQ5YTIzZTEuLmUyZmEyMTIwYWEwOGZhODYxNTFhODA1MzUxYTM0ODViNTRh
ZTA3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEoKICAgICBhdXRvKiBjYXN0
ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcio+
KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IHRv
QXJyYXlCdWZmZXIoZXhlYy0+YXJndW1lbnQoMCkpOworICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1
ZmZlcih0b0FycmF5QnVmZmVyKGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IG9i
amVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwpA
QCAtMTA2LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKCiAgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Iq
PihleGVjLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJh
eUJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhleGVjLT5hcmd1bWVudCgwKSk7CisgICAg
UmVmUHRyPEFycmF5QnVmZmVyVmlldz4gYXJyYXlCdWZmZXJWaWV3KHRvQXJyYXlCdWZmZXJWaWV3
KGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKQEAgLTExOCw3ICsxMTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nh
c3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihleGVjKSk7Ci0gICAgQmxvYiogYmxvYiA9IEpTQmxvYjo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKKyAgICBCbG9iKiBibG9iKEpTQmxvYjo6dG9XcmFwcGVkKGV4ZWMtPmFyZ3VtZW50
KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUoYmxvYik7CkBAIC0xMzAsNyArMTMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dEoKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFN0cmluZyBzdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAg
Y29uc3QgU3RyaW5nIHN0cmluZyhleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmco
KSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM+IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoc3Ry
aW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAKaW5kZXggNDY1ZGVjMjU1M2M4NjI3ZDY2OTA0NjJiMzM4YjAyZTU2MTAyNGNj
OS4uYzJmZTBjMDZmZmY0MzlmNzc3MzBjYjE1YmZiMTg3MTA2NTY4MTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAg
LTI3MCw3ICsyNzAsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGJhcwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbmF0aXZlVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShleGVjLCB2YWx1ZSwgMCwgMCk7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbmF0aXZlVmFsdWUoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywg
dmFsdWUsIDAsIDApKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRWYWx1ZShuYXRpdmVWYWx1ZSk7CkBAIC0yOTAs
NyArMjkwLDcgQEAgdm9pZCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
YWNoZWRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoZXhlYywgdmFsdWUsIDAsIDApOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG5hdGl2ZVZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVl
LCAwLCAwKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGltcGwuc2V0Q2FjaGVkVmFsdWUobmF0aXZlVmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAKaW5kZXggM2Y1ZDBkOWEyYmQ3MTFkYzg5MjYwNWJhNTRlZjEwOTFkYjE1YWNm
Yy4uMjlkMDEzYzlmNjJlYmEzN2JmYjg2NzFkYTM2YWIyYmVlMWMxYjZkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RUeXBlZGVmcygKICAg
ICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IqPihl
eGVjLT5jYWxsZWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBTdHJpbmcgaGVsbG8gPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3QgU3RyaW5nIGhlbGxvKGV4
ZWMtPmFyZ3VtZW50KDApLmlzRW1wdHkoKSA/IFN0cmluZygpIDogZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKQpAQCAtMzg1LDcg
KzM4NSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKLSAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbmF0aXZlVmFsdWUgPSB0b1VJbnQ2NChleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lv
bik7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG5hdGl2ZVZhbHVlKHRvVUludDY0KGV4ZWMsIHZh
bHVlLCBOb3JtYWxDb252ZXJzaW9uKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0VW5zaWduZWRMb25nTG9uZ0F0
dHIobmF0aXZlVmFsdWUpOwpAQCAtNDA1LDcgKzQwNSw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRl
ZnNJbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCoKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwotICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZXhlYywgdmFsdWUsIDAsIDApOworICAgIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG5hdGl2ZVZhbHVlKFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKGV4ZWMsIHZhbHVlLCAwLCAwKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGltcGwuc2V0SW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKG5hdGl2ZVZhbHVlKTsKQEAgLTQyNSw3ICs0MjUsNyBAQCB2
b2lkIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogYmFzZU9iagogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7Ci0gICAgaW50IG5hdGl2ZVZhbHVlID0gdG9JbnQz
MihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbik7CisgICAgaW50IG5hdGl2ZVZhbHVlKHRv
SW50MzIoZXhlYywgdmFsdWUsIE5vcm1hbENvbnZlcnNpb24pKTsKICAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaW1wbC5zZXRBdHRy
V2l0aEdldHRlckV4Y2VwdGlvbihuYXRpdmVWYWx1ZSk7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGJhc2VPYmoKICAgICB9CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpbnQgbmF0aXZlVmFsdWUg
PSB0b0ludDMyKGV4ZWMsIHZhbHVlLCBOb3JtYWxDb252ZXJzaW9uKTsKKyAgICBpbnQgbmF0aXZl
VmFsdWUodG9JbnQzMihleGVjLCB2YWx1ZSwgTm9ybWFsQ29udmVyc2lvbikpOwogICAgIGlmIChV
TkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBs
LnNldEF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5hdGl2ZVZhbHVlLCBlYyk7CkBAIC00NjcsNyAr
NDY3LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGIKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwotICAgIFN0cmluZyBuYXRpdmVW
YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJp
bmcgbmF0aXZlVmFsdWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uKG5hdGl2ZVZhbHVlKTsKQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIHNldEpTVGVz
dFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogYgogICAgIH0KICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFN0cmluZyBuYXRpdmVWYWx1ZSA9IHZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBjb25zdCBTdHJpbmcgbmF0aXZlVmFs
dWUodmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybjsKICAgICBpbXBsLnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKG5h
dGl2ZVZhbHVlLCBlYyk7CkBAIC01MTYsNyArNTE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIGV4
ZWMKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CiAKLSAgICBWZWN0b3I8aW50PiB4ID0gdG9OYXRpdmVBcnJheTxpbnQ+KGV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApKTsKKyAgICBWZWN0b3I8aW50PiB4KHRvTmF0aXZlQXJyYXk8aW50PihleGVjLCBl
eGVjLT5hcmd1bWVudCgwKSkpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
aW1wbC5mdW5jKHgpOwpAQCAtNTMzLDEzICs1MzMsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0
ZSoKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAzKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgZmxvYXQg
d2lkdGggPSBleGVjLT5hcmd1bWVudCgwKS50b0Zsb2F0KGV4ZWMpOworICAgIGZsb2F0IHdpZHRo
KGV4ZWMtPmFyZ3VtZW50KDApLnRvRmxvYXQoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVj
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgZmxvYXQgaGVpZ2h0ID0gZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChl
eGVjKTsKKyAgICBmbG9hdCBoZWlnaHQoZXhlYy0+YXJndW1lbnQoMSkudG9GbG9hdChleGVjKSk7
CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBmbG9hdCBibHVyID0gZXhlYy0+
YXJndW1lbnQoMikudG9GbG9hdChleGVjKTsKKyAgICBmbG9hdCBibHVyKGV4ZWMtPmFyZ3VtZW50
KDIpLnRvRmxvYXQoZXhlYykpOwogICAgIGlmIChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24o
KSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKQEAg
LTU0OSw3ICs1NDksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKgogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KIAotICAgIFN0cmluZyBjb2xv
ciA9IGV4ZWMtPmFyZ3VtZW50KDMpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBj
b25zdCBTdHJpbmcgY29sb3IoZXhlYy0+YXJndW1lbnQoMykuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiBleGVjLT5hcmd1bWVudCgzKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlm
IChVTkxJS0VMWShleGVjLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA8PSA0KSB7CkBAIC01
NTcsNyArNTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSoKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBmbG9hdCBhbHBoYSA9
IGV4ZWMtPmFyZ3VtZW50KDQpLnRvRmxvYXQoZXhlYyk7CisgICAgZmxvYXQgYWxwaGEoZXhlYy0+
YXJndW1lbnQoNCkudG9GbG9hdChleGVjKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBpbXBsLnNldFNoYWRvdyh3aWR0aCwgaGVpZ2h0LCBibHVyLCBjb2xvciwgYWxwaGEp
OwpAQCAtNTc0LDcgKzU3NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyCiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFZlY3RvcjxSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRpdmVBcnJheTxTZXJp
YWxpemVkU2NyaXB0VmFsdWUsIEpTU2VyaWFsaXplZFNjcmlwdFZhbHVlPihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgJkpTU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1dyYXBwZWQpKTsKKyAgICBW
ZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IHNlcXVlbmNlQXJnKCh0b1JlZlB0
ck5hdGl2ZUFycmF5PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgSlNTZXJpYWxpemVkU2NyaXB0VmFs
dWU+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCAmSlNTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRv
V3JhcHBlZCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoaW1wbC5tZXRob2RXaXRoU2VxdWVuY2VBcmcoc2VxdWVuY2VBcmcp
KTsKQEAgLTU5MSw3ICs1OTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBWZWN0b3I8U3RyaW5nPiBhcnJh
eUFyZyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gYXJyYXlBcmcodG9OYXRpdmVBcnJheTxTdHJpbmc+KGV4ZWMsIGV4
ZWMtPmFyZ3VtZW50KDApKSk7CiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBp
bXBsLm51bGxhYmxlQXJyYXlBcmcoYXJyYXlBcmcpOwpAQCAtNjU4LDcgKzY1OCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0
cmluZ0FycmF5RnVuY3Rpb24oCiAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBW
ZWN0b3I8U3RyaW5nPiB2YWx1ZXMgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oZXhlYywgZXhlYy0+
YXJndW1lbnQoMCkpOworICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlcyh0b05hdGl2ZUFycmF5PFN0
cmluZz4oZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpKTsKICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNBcnJheShleGVjLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSwgaW1wbC5zdHJpbmdBcnJheUZ1bmN0aW9uKHZhbHVlcywgZWMpKTsKQEAg
LTY3OCw3ICs2NzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMgogICAgIGlmIChVTkxJS0VM
WShleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgVmVjdG9yPFN0cmluZz4gdmFsdWVzID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBWZWN0b3I8U3RyaW5nPiB2
YWx1ZXModG9OYXRpdmVBcnJheTxTdHJpbmc+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKSk7CiAg
ICAgaWYgKFVOTElLRUxZKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJy
YXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuc3RyaW5nQXJyYXlGdW5j
dGlvbjIodmFsdWVzLCBlYykpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVu
Y2VUaGF0CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBpZiAoVU5M
SUtFTFkoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwotICAgIFZl
Y3RvcjxSZWZQdHI8VGVzdEV2ZW50VGFyZ2V0Pj4gc2VxdWVuY2VBcmcgPSAodG9SZWZQdHJOYXRp
dmVBcnJheTxUZXN0RXZlbnRUYXJnZXQsIEpTVGVzdEV2ZW50VGFyZ2V0PihleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgJkpTVGVzdEV2ZW50VGFyZ2V0Ojp0b1dyYXBwZWQpKTsKKyAgICBWZWN0b3I8
UmVmUHRyPFRlc3RFdmVudFRhcmdldD4+IHNlcXVlbmNlQXJnKCh0b1JlZlB0ck5hdGl2ZUFycmF5
PFRlc3RFdmVudFRhcmdldCwgSlNUZXN0RXZlbnRUYXJnZXQ+KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50
KDApLCAmSlNUZXN0RXZlbnRUYXJnZXQ6OnRvV3JhcHBlZCkpKTsKICAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuY2FsbFdp
dGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoc2VxdWVuY2VBcmcpKTsK
</data>
<flag name="review"
          id="279583"
          type_id="1"
          status="-"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="279582"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>