<?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>245315</bug_id>
          
          <creation_ts>2022-09-17 09:02:38 -0700</creation_ts>
          <short_desc>REGRESSION(254576@main): symbolic-breakpoint-intrinsic-js-regex-case-sensitive.html is consistently crashing</short_desc>
          <delta_ts>2022-09-17 09:07:18 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>243994</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>hi</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1899209</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-09-17 09:02:38 -0700</bug_when>
    <thetext>https://commits.webkit.org/254576@main introduced a regression:
symbolic-breakpoint-intrinsic-js-regex-case-sensitive.html is consistently crashing

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>1899211</commentid>
    <comment_count>1</comment_count>
      <attachid>462417</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-09-17 09:02:42 -0700</bug_when>
    <thetext>Created attachment 462417
REVERT of 254576@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>1899212</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-09-17 09:06:10 -0700</bug_when>
    <thetext>Committed 254588@main (0a41ae67f755): &lt;https://commits.webkit.org/254588@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462417.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1899213</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-09-17 09:07:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/100070082&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462417</attachid>
            <date>2022-09-17 09:02:42 -0700</date>
            <delta_ts>2022-09-17 09:06:10 -0700</delta_ts>
            <desc>REVERT of 254576@main</desc>
            <filename>bug-245315-20220917090242.patch</filename>
            <type>text/plain</type>
            <size>132383</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA4YjljN2QyMjRkMGE4YjRhNGZmOWZiN2YzYzBmNTE3YzZkYTk4MzdiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBTYXQsIDE3IFNlcCAyMDIyIDA5OjAyOjQxIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTQ1NzZAbWFpbi4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNDUzMTUKCnN5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2lj
LWpzLXJlZ2V4LWNhc2Utc2Vuc2l0aXZlLmh0bWwgaXMgY29uc2lzdGVudGx5IGNyYXNoaW5nCgpS
ZXZlcnRlZCBjaGFuZ2VzZXQ6CgoiV2ViIEluc3BlY3RvcjogRGVidWdnZXI6IHN5bWJvbGljIGJy
ZWFrcG9pbnRzIHNob3VsZCB3b3JrIHdpdGggaW50cmluc2ljIGZ1bmN0aW9ucyIKaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0Mzk5NApodHRwczovL2NvbW1pdHMud2Vi
a2l0Lm9yZy8yNTQ1NzZAbWFpbgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVGh1
bmtzLmNwcCAgICAgICB8ICAgOCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuaCAgICAgICAgIHwgICA1ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5r
cy5jcHAgICAgICAgfCAgIDggKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtz
LmggICAgICAgICB8ICAgNSArLQogLi4uL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cCAgICAgICAgIHwgIDczICsrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCAg
ICAgICAgICAgICB8ICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCAgICAg
ICAgICAgICAgIHwgIDQ5ICsrLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNw
cCAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuY3Bw
ICAgICAgICAgfCAgMTQgLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmggICAg
ICAgICAgIHwgICA5ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
ICAgICAgfCAgMjAgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwICB8ICA2MCArLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5jcHAg
ICAgICAgfCAgNjMgKystLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaCAg
ICAgICAgIHwgIDIwICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmggICAgfCAgMTAgLQogLi4uL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklU
LmggIHwgIDEyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9yLmgg
ICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cCB8IDMyNSArKysrKystLS0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1
bmtHZW5lcmF0b3JzLmggICB8ICA2OSArKy0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgICAgICAgICAgfCAgMTAgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggICAgICAgICAgICB8ICAgMSAtCiAuLi5zaWMtanMtZXhhY3QtY2FzZS1pbnNlbnNpdGl2
ZS1leHBlY3RlZC50eHQgfCAxNjUgLS0tLS0tLS0tCiAuLi50LWludHJpbnNpYy1qcy1leGFjdC1j
YXNlLWluc2Vuc2l0aXZlLmh0bWwgfCAxMDIgLS0tLS0tCiAuLi5pbnNpYy1qcy1leGFjdC1jYXNl
LXNlbnNpdGl2ZS1leHBlY3RlZC50eHQgfCAxNjUgLS0tLS0tLS0tCiAuLi5pbnQtaW50cmluc2lj
LWpzLWV4YWN0LWNhc2Utc2Vuc2l0aXZlLmh0bWwgfCAxMDIgLS0tLS0tCiAuLi5zaWMtanMtcmVn
ZXgtY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQgfCAxNjUgLS0tLS0tLS0tCiAuLi50LWlu
dHJpbnNpYy1qcy1yZWdleC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgfCAxMDIgLS0tLS0tCiAuLi5p
bnNpYy1qcy1yZWdleC1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQgfCAxNjUgLS0tLS0tLS0t
CiAuLi5pbnQtaW50cmluc2ljLWpzLXJlZ2V4LWNhc2Utc2Vuc2l0aXZlLmh0bWwgfCAxMDIgLS0t
LS0tCiAuLi5vaW50LW5hdGl2ZS1qcy1leGFjdC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgfCAgIDQg
Ky0KIDMwIGZpbGVzIGNoYW5nZWQsIDI4OSBpbnNlcnRpb25zKCspLCAxNTU2IGRlbGV0aW9ucygt
KQogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1i
b2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1leGFjdC1jYXNlLWluc2Vuc2l0aXZlLWV4cGVj
dGVkLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1leGFjdC1jYXNlLWluc2Vuc2l0aXZl
Lmh0bWwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtZXhhY3QtY2FzZS1zZW5zaXRpdmUtZXhw
ZWN0ZWQudHh0CiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3N5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLWV4YWN0LWNhc2Utc2Vuc2l0aXZl
Lmh0bWwKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtcmVnZXgtY2FzZS1pbnNlbnNpdGl2ZS1l
eHBlY3RlZC50eHQKIGRlbGV0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtcmVnZXgtY2FzZS1pbnNlbnNp
dGl2ZS5odG1sCiBkZWxldGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3N5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLXJlZ2V4LWNhc2Utc2Vuc2l0aXZl
LWV4cGVjdGVkLnR4dAogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1yZWdleC1jYXNlLXNlbnNp
dGl2ZS5odG1sCgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVu
a3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuY3BwCmluZGV4IGVk
OTRkMWI4MmRjNS4uMjljODhhMzA3YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
aHVua3MuY3BwCkBAIC00MSwxMCArNDEsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhpdEdl
bmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVk
ZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3Ny
RXhpdEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNF
RChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1
Z2dlckhvb2s6Ok5vKTsKLQogICAgIENDYWxsSGVscGVycyBqaXQobnVsbHB0cik7CiAKICAgICAv
LyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgd2UgdXNlIHRoZSBzY3JhdGNoIGJ1ZmZlciBi
ZWNhdXNlIHRoaXMgZnVuY3Rpb24gYWxzbyB1c2VzIHRoZSBzY3JhdGNoIGJ1ZmZlci4KQEAgLTEz
MiwxMCArMTMwLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JF
eGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW4KICAgICByZXR1cm4gRklOQUxJ
WkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiREZHIE9TUiBleGl0IGdlbmVy
YXRpb24gdGh1bmsiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvc3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNs
dWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGluY2x1
ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9v
azo6Tm8pOwotCiAgICAgQXNzZW1ibHlIZWxwZXJzIGppdChudWxscHRyKTsKIAogICAgIC8vIFdl
IGdldCBwYXNzZWQgdGhlIGFkZHJlc3Mgb2YgYSBzY3JhdGNoIGJ1ZmZlciBpbiBHUFJJbmZvOjpy
ZXR1cm5WYWx1ZUdQUjIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RodW5rcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUaHVua3MuaAppbmRleCAw
NTY2ZGU0OTAyNDAuLjhiNWMzZjAxYTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdUaHVua3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ro
dW5rcy5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKLSNpbmNsdWRlICJUaHVua0dlbmVyYXRvci5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzYsOCArMzUsOCBAQCBjbGFzcyBWTTsKIAogbmFtZXNw
YWNlIERGRyB7CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRXhp
dEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFbnRyeVRodW5rR2VuZXJhdG9y
KFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IG9zckV4aXRHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3NyRW50cnlUaHVua0dlbmVyYXRvcihWTSYp
OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMVGh1bmtzLmNwcAppbmRleCBkYmM4Y2E4MjYyMjAuLjRkNTZhNGExOTUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExUaHVua3MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmNwcApAQCAtMTI0LDE5ICsxMjQsMTUgQEAgc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJpY0dlbmVyYXRp
b25UaHVua0dlbmVyYXRvcigKICAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIs
IEpJVFRodW5rUHRyVGFnLCAiJXMiLCBuYW1lKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSwg
SW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZN
JiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVE
ZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgdW5zaWduZWQg
ZXh0cmFQb3BzVG9SZXN0b3JlID0gMDsKICAgICByZXR1cm4gZ2VuZXJpY0dlbmVyYXRpb25UaHVu
a0dlbmVyYXRvcigKICAgICAgICAgdm0sIG9wZXJhdGlvbkNvbXBpbGVGVExPU1JFeGl0LCBPU1JF
eGl0UHRyVGFnLCAiRlRMIE9TUiBleGl0IGdlbmVyYXRpb24gdGh1bmsiLCBleHRyYVBvcHNUb1Jl
c3RvcmUsIEZyYW1lQW5kU3RhY2tBZGp1c3RtZW50UmVxdWlyZW1lbnQ6Ok5lZWRlZCk7CiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGF6eVNsb3dQYXRoR2VuZXJh
dGlvblRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVi
dWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsYXp5U2xv
d1BhdGhHZW5lcmF0aW9uVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVT
RUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVi
dWdnZXJIb29rOjpObyk7Ci0KICAgICB1bnNpZ25lZCBleHRyYVBvcHNUb1Jlc3RvcmUgPSAxOwog
ICAgIHJldHVybiBnZW5lcmljR2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKAogICAgICAgICB2bSwg
b3BlcmF0aW9uQ29tcGlsZUZUTExhenlTbG93UGF0aCwgSklUU3R1YlJvdXRpbmVQdHJUYWcsICJG
VEwgbGF6eSBzbG93IHBhdGggZ2VuZXJhdGlvbiB0aHVuayIsIGV4dHJhUG9wc1RvUmVzdG9yZSwg
RnJhbWVBbmRTdGFja0FkanVzdG1lbnRSZXF1aXJlbWVudDo6Tm90TmVlZGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCmluZGV4IGEwYjhiNTUyNGYzOC4uM2ZhOWU4NzNlZWQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFRodW5rcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVGh1bmtzLmgKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJGVExMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkZUTFNsb3dQYXRoQ2FsbEtleS5o
IgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgotI2luY2x1ZGUgIlRodW5rR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0zOSw4ICszOCw4IEBAIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgRlRMIHsKIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJh
dG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGxhenlTbG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRvcihWTSYsIElu
Y2x1ZGVEZWJ1Z2dlckhvb2spOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBvc3JFeGl0R2VuZXJhdGlvblRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxhenlTbG93UGF0aEdlbmVyYXRpb25UaHVua0dlbmVyYXRv
cihWTSYpOwogTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93UGF0aENh
bGxUaHVua0dlbmVyYXRvcihWTSYsIGNvbnN0IFNsb3dQYXRoQ2FsbEtleSYpOwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlUeXBlQXJndW1lbnQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IGYwNTZlOTQ2NzIwNi4uMDY3YWU0ZDVkZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcApAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIlJlZ3VsYXJFeHBy
ZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIgotI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiV2Vhay5oIgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24u
aD4KQEAgLTY3OCw3ICs2NzcsNyBAQCBzdGF0aWMgU3RyaW5nIGZ1bmN0aW9uTmFtZShKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZSYgZnVuY3Rpb25FeGVjdXRhYmxlKQogCiBzdGF0aWMgU3RyaW5nIGZ1
bmN0aW9uTmFtZShKU0M6OkNvZGVCbG9jayYgY29kZUJsb2NrKQogewotICAgIGlmIChhdXRvKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBjb2RlQmxvY2sub3duZXJFeGVjdXRhYmxlKCkgPyBKU0M6Ompz
RHluYW1pY0Nhc3Q8SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlQmxvY2sub3duZXJFeGVj
dXRhYmxlKCkpIDogbnVsbHB0cikKKyAgICBpZiAoYXV0byogZnVuY3Rpb25FeGVjdXRhYmxlID0g
SlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZUJsb2NrLm93
bmVyRXhlY3V0YWJsZSgpKSkKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uTmFtZSgqZnVuY3Rpb25F
eGVjdXRhYmxlKTsKIAogICAgIHJldHVybiBudWxsU3RyaW5nKCk7CkBAIC02ODYsMTQgKzY4NSwx
NCBAQCBzdGF0aWMgU3RyaW5nIGZ1bmN0aW9uTmFtZShKU0M6OkNvZGVCbG9jayYgY29kZUJsb2Nr
KQogCiBzdGF0aWMgU3RyaW5nIGZ1bmN0aW9uTmFtZShKU0M6OkNhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIGlmIChhdXRvKiBqc0Z1bmN0aW9uID0gY2FsbEZyYW1lLT5qc0NhbGxlZSgpID8g
SlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6SlNGdW5jdGlvbio+KGNhbGxGcmFtZS0+anNDYWxsZWUo
KSkgOiBudWxscHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0ganNG
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpID8gSlNDOjpqc0R5bmFtaWNDYXN0PEpTQzo6TmF0aXZlRXhl
Y3V0YWJsZSo+KGpzRnVuY3Rpb24tPmV4ZWN1dGFibGUoKSkgOiBudWxscHRyKQotICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uTmFtZSgqbmF0aXZlRXhlY3V0YWJsZSk7Ci0gICAgfQotCiAgICAg
aWYgKGF1dG8qIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkpCiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbk5hbWUoKmNvZGVCbG9jayk7CiAKKyAgICBpZiAoYXV0byoganNGdW5jdGlv
biA9IEpTQzo6anNEeW5hbWljQ2FzdDxKU0M6OkpTRnVuY3Rpb24qPihjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBuYXRpdmVFeGVjdXRhYmxlID0gSlNDOjpqc0R5
bmFtaWNDYXN0PEpTQzo6TmF0aXZlRXhlY3V0YWJsZSo+KGpzRnVuY3Rpb24tPmV4ZWN1dGFibGUo
KSkpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25OYW1lKCpuYXRpdmVFeGVjdXRhYmxlKTsK
KyAgICB9CisKICAgICByZXR1cm4gbnVsbFN0cmluZygpOwogfQogCkBAIC03MTMsMzAgKzcxMiwy
MSBAQCBzdHJ1Y3QgUmVwbGFjZWRUaHVuayB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgICAgICBKU0M6OkpJVENvZGU6OkNvZGVSZWY8SlNDOjpKU0VudHJ5UHRyVGFnPiBvbGRK
SVRDb2RlUmVmOwotICAgICAgICAgICAgQ29kZVB0cjxKU0M6OkpTRW50cnlQdHJUYWc+IG9sZFdp
dGhBcml0eUNoZWNrSklUQ29kZVB0cjsKLSAgICAgICAgICAgIENvZGVQdHI8SlNDOjpKU0VudHJ5
UHRyVGFnPiBvbGROYXRpdmVFeGVjdXRhYmxlV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyOwotCisg
ICAgICAgICAgICBDb2RlUHRyPEpTQzo6SlNFbnRyeVB0clRhZz4gb2xkQXJpdHlKSVRDb2RlUmVm
OwogICAgICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAgICAgICBjYXNlIEpTQzo6Q29k
ZUZvckNhbGw6CiAgICAgICAgICAgICAgICAgb2xkSklUQ29kZVJlZiA9IFdURk1vdmUoY2FsbFRo
dW5rKTsKLSAgICAgICAgICAgICAgICBvbGRXaXRoQXJpdHlDaGVja0pJVENvZGVQdHIgPSBXVEZN
b3ZlKGNhbGxXaXRoQXJpdHlDaGVja1RodW5rKTsKLSAgICAgICAgICAgICAgICBvbGROYXRpdmVF
eGVjdXRhYmxlV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyID0gV1RGTW92ZShuYXRpdmVFeGVjdXRh
YmxlQ2FsbFdpdGhBcml0eUNoZWNrVGh1bmspOworICAgICAgICAgICAgICAgIG9sZEFyaXR5SklU
Q29kZVJlZiA9IFdURk1vdmUoY2FsbEFyaXR5VGh1bmspOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgICAgICBjYXNlIEpTQzo6Q29kZUZvckNvbnN0cnVjdDoKICAgICAgICAgICAg
ICAgICBvbGRKSVRDb2RlUmVmID0gV1RGTW92ZShjb25zdHJ1Y3RUaHVuayk7Ci0gICAgICAgICAg
ICAgICAgb2xkV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyID0gV1RGTW92ZShjb25zdHJ1Y3RXaXRo
QXJpdHlDaGVja1RodW5rKTsKLSAgICAgICAgICAgICAgICBvbGROYXRpdmVFeGVjdXRhYmxlV2l0
aEFyaXR5Q2hlY2tKSVRDb2RlUHRyID0gV1RGTW92ZShuYXRpdmVFeGVjdXRhYmxlQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2tUaHVuayk7CisgICAgICAgICAgICAgICAgb2xkQXJpdHlKSVRDb2RlUmVm
ID0gV1RGTW92ZShjb25zdHJ1Y3RBcml0eVRodW5rKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaml0Q29kZS0+c3dhcENvZGVSZWZGb3JEZWJ1
Z2dlcihXVEZNb3ZlKG9sZEpJVENvZGVSZWYpKTsKLSAgICAgICAgICAgIGlmIChqaXRDb2RlLT5j
YW5Td2FwQ29kZVB0cldpdGhBcml0eUNoZWNrRm9yRGVidWdnZXIoKSkKLSAgICAgICAgICAgICAg
ICBqaXRDb2RlLT5zd2FwQ29kZVB0cldpdGhBcml0eUNoZWNrRm9yRGVidWdnZXIoV1RGTW92ZShv
bGRXaXRoQXJpdHlDaGVja0pJVENvZGVQdHIpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVCghb2xkV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyKTsKLQot
ICAgICAgICAgICAgbmF0aXZlRXhlY3V0YWJsZS0+c3dhcEdlbmVyYXRlZEpJVENvZGVXaXRoQXJp
dHlDaGVja0ZvckRlYnVnZ2VyKGtpbmQsIG9sZE5hdGl2ZUV4ZWN1dGFibGVXaXRoQXJpdHlDaGVj
a0pJVENvZGVQdHIpOworICAgICAgICAgICAgbmF0aXZlRXhlY3V0YWJsZS0+c3dhcEdlbmVyYXRl
ZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvckRlYnVnZ2VyKGtpbmQsIG9sZEFyaXR5SklUQ29kZVJl
Zik7CiAgICAgICAgIH07CiAKICAgICAgICAgcmVzdG9yZVRodW5rcyhKU0M6OkNvZGVGb3JDYWxs
KTsKQEAgLTc0NiwxMiArNzM2LDEwIEBAIHN0cnVjdCBSZXBsYWNlZFRodW5rIHsKICAgICBKU0M6
OldlYWs8SlNDOjpOYXRpdmVFeGVjdXRhYmxlPiBuYXRpdmVFeGVjdXRhYmxlOwogCiAgICAgSlND
OjpKSVRDb2RlOjpDb2RlUmVmPEpTQzo6SlNFbnRyeVB0clRhZz4gY2FsbFRodW5rOwotICAgIENv
ZGVQdHI8SlNDOjpKU0VudHJ5UHRyVGFnPiBjYWxsV2l0aEFyaXR5Q2hlY2tUaHVuazsKLSAgICBD
b2RlUHRyPEpTQzo6SlNFbnRyeVB0clRhZz4gbmF0aXZlRXhlY3V0YWJsZUNhbGxXaXRoQXJpdHlD
aGVja1RodW5rOworICAgIENvZGVQdHI8SlNDOjpKU0VudHJ5UHRyVGFnPiBjYWxsQXJpdHlUaHVu
azsKIAogICAgIEpTQzo6SklUQ29kZTo6Q29kZVJlZjxKU0M6OkpTRW50cnlQdHJUYWc+IGNvbnN0
cnVjdFRodW5rOwotICAgIENvZGVQdHI8SlNDOjpKU0VudHJ5UHRyVGFnPiBjb25zdHJ1Y3RXaXRo
QXJpdHlDaGVja1RodW5rOwotICAgIENvZGVQdHI8SlNDOjpKU0VudHJ5UHRyVGFnPiBuYXRpdmVF
eGVjdXRhYmxlQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2tUaHVuazsKKyAgICBDb2RlUHRyPEpTQzo6
SlNFbnRyeVB0clRhZz4gY29uc3RydWN0QXJpdHlUaHVuazsKIAogICAgIHNpemVfdCBtYXRjaENv
dW50IHsgMCB9OwogCkBAIC04MzYsNiArODI0LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8
dm9pZD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YWRkU3ltYm9saWNCcmVha3BvaW50KGNvbnMK
ICAgICB9CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjQz
OTk0PiBXZWIgSW5zcGVjdG9yOiBEZWJ1Z2dlcjogc3ltYm9saWMgYnJlYWtwb2ludHMgc2hvdWxk
IHdvcmsgd2l0aCBpbnRyaW5zaWMgZnVuY3Rpb25zCiAgICAgLy8gRklYTUU6IDxodHRwczovL3dl
YmtpdC5vcmcvYi8yNDM3MTc+IFdlYiBJbnNwZWN0b3I6IERlYnVnZ2VyOiBzeW1ib2xpYyBicmVh
a3BvaW50cyBzaG91bGQgd29yayB3aGVuIGZ1bmN0aW9ucyBjaGFuZ2UgdGhlaXIgYG5hbWVgCiAK
ICAgICByZXR1cm4geyB9OwpAQCAtMTQ0Nyw1NiArMTQzNiwzOCBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZU5hdGl2ZUV4ZWN1dGFibGUoSlNDOjpOYXRpdmVFeGVjdXRh
YmxlJiBuYQogICAgICAgICBDb2RlUHRyPEpTQzo6SklUVGh1bmtQdHJUYWc+IHRodW5rOwogICAg
ICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAgY2FzZSBKU0M6OkNvZGVGb3JDYWxsOgotICAg
ICAgICAgICAgaWYgKGF1dG8gdGh1bmtHZW5lcmF0b3IgPSB2bS50aHVua0dlbmVyYXRvckZvcklu
dHJpbnNpYyhqaXRDb2RlLT5pbnRyaW5zaWMoKSkpCi0gICAgICAgICAgICAgICAgdGh1bmsgPSB0
aHVua0dlbmVyYXRvcih2bSwgSlNDOjpJbmNsdWRlRGVidWdnZXJIb29rOjpZZXMpLmNvZGUoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aHVuayA9IHZtLmppdFN0dWJzLT5j
dGlOYXRpdmVDYWxsKHZtLCBKU0M6OkluY2x1ZGVEZWJ1Z2dlckhvb2s6Olllcyk7CisgICAgICAg
ICAgICB0aHVuayA9IHZtLmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsV2l0aERlYnVnZ2VySG9vayh2
bSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEpTQzo6Q29kZUZvckNvbnN0
cnVjdDoKLSAgICAgICAgICAgIHRodW5rID0gdm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNvbnN0cnVj
dCh2bSwgSlNDOjpJbmNsdWRlRGVidWdnZXJIb29rOjpZZXMpOworICAgICAgICAgICAgdGh1bmsg
PSB2bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ29uc3RydWN0V2l0aERlYnVnZ2VySG9vayh2bSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5h
dGl2ZUV4ZWN1dGFibGUuZ2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpID09
IGppdENvZGUtPmFkZHJlc3NGb3JDYWxsKEpTQzo6TXVzdENoZWNrQXJpdHkpKTsKIAogICAgICAg
ICBhdXRvIG9sZEpJVENvZGVSZWYgPSBqaXRDb2RlLT5zd2FwQ29kZVJlZkZvckRlYnVnZ2VyKGNy
ZWF0ZUpJVENvZGVSZWYodGh1bmspKTsKLSAgICAgICAgYXV0byBvbGRXaXRoQXJpdHlDaGVja0pJ
VENvZGVQdHIgPSBqaXRDb2RlLT5jYW5Td2FwQ29kZVB0cldpdGhBcml0eUNoZWNrRm9yRGVidWdn
ZXIoKSA/IGppdENvZGUtPnN3YXBDb2RlUHRyV2l0aEFyaXR5Q2hlY2tGb3JEZWJ1Z2dlcih0aHVu
ay5yZXRhZ2dlZDxKU0M6OkpTRW50cnlQdHJUYWc+KCkpIDogQ29kZVB0cjxKU0M6OkpTRW50cnlQ
dHJUYWc+KCk7Ci0gICAgICAgIGF1dG8gb2xkTmF0aXZlRXhlY3V0YWJsZVdpdGhBcml0eUNoZWNr
SklUQ29kZVB0ciA9IG5hdGl2ZUV4ZWN1dGFibGUuc3dhcEdlbmVyYXRlZEpJVENvZGVXaXRoQXJp
dHlDaGVja0ZvckRlYnVnZ2VyKGtpbmQsIGppdENvZGUtPmFkZHJlc3NGb3JDYWxsKEpTQzo6TXVz
dENoZWNrQXJpdHkpKTsKLQotICAgICAgICBSRUxFQVNFX0FTU0VSVCghaml0Q29kZS0+Y2FuU3dh
cENvZGVQdHJXaXRoQXJpdHlDaGVja0ZvckRlYnVnZ2VyKCkgfHwgb2xkSklUQ29kZVJlZi5jb2Rl
KCkgPT0gb2xkV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyKTsKKyAgICAgICAgYXV0byBvbGRBcml0
eUpJVENvZGVSZWYgPSBuYXRpdmVFeGVjdXRhYmxlLnN3YXBHZW5lcmF0ZWRKSVRDb2RlV2l0aEFy
aXR5Q2hlY2tGb3JEZWJ1Z2dlcihraW5kLCBqaXRDb2RlLT5hZGRyZXNzRm9yQ2FsbChKU0M6Ok11
c3RDaGVja0FyaXR5KSk7CiAKICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAgIGNhc2Ug
SlNDOjpDb2RlRm9yQ2FsbDoKICAgICAgICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+Y2Fs
bFRodW5rKTsKICAgICAgICAgICAgIHJlcGxhY2VkVGh1bmstPmNhbGxUaHVuayA9IFdURk1vdmUo
b2xkSklUQ29kZVJlZik7CiAKLSAgICAgICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+Y2Fs
bFdpdGhBcml0eUNoZWNrVGh1bmspOwotICAgICAgICAgICAgaWYgKG9sZFdpdGhBcml0eUNoZWNr
SklUQ29kZVB0cikKLSAgICAgICAgICAgICAgICByZXBsYWNlZFRodW5rLT5jYWxsV2l0aEFyaXR5
Q2hlY2tUaHVuayA9IFdURk1vdmUob2xkV2l0aEFyaXR5Q2hlY2tKSVRDb2RlUHRyKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+Y2FsbEFyaXR5VGh1bmspOworICAgICAgICAg
ICAgcmVwbGFjZWRUaHVuay0+Y2FsbEFyaXR5VGh1bmsgPSBXVEZNb3ZlKG9sZEFyaXR5SklUQ29k
ZVJlZik7CiAKLSAgICAgICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+bmF0aXZlRXhlY3V0
YWJsZUNhbGxXaXRoQXJpdHlDaGVja1RodW5rKTsKLSAgICAgICAgICAgIHJlcGxhY2VkVGh1bmst
Pm5hdGl2ZUV4ZWN1dGFibGVDYWxsV2l0aEFyaXR5Q2hlY2tUaHVuayA9IFdURk1vdmUob2xkTmF0
aXZlRXhlY3V0YWJsZVdpdGhBcml0eUNoZWNrSklUQ29kZVB0cik7Ci0KLSAgICAgICAgICAgIGlm
ICh2bS50aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhqaXRDb2RlLT5pbnRyaW5zaWMoKSkpIHsK
LSAgICAgICAgICAgICAgICAvLyBJbnRyaW5zaWMgdGh1bmtzIGFyZSBub3QgY2FjaGVkLCBzbyB3
ZSBjYW5ub3QgY29tcGFyZSB0aGUgb2xkIHRodW5rIHdpdGggdGhlCi0gICAgICAgICAgICAgICAg
Ly8gcmVzdWx0IG9mIHRoZSBnZW5lcmF0b3IgKHdpdGhvdXQgZGVidWdnZXIgaG9va3MpIHRvIG1h
a2Ugc3VyZSBpdCBtYXRjaGVzLgotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob2xkSklUQ29kZVJlZi5jb2RlKCkgPT0gY3JlYXRlSklUQ29kZVJlZih2
bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSwgSlNDOjpJbmNsdWRlRGVidWdnZXJIb29rOjpO
bykpLmNvZGUoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvbGRKSVRDb2RlUmVmLmNv
ZGUoKSA9PSBjcmVhdGVKSVRDb2RlUmVmKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSku
Y29kZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSlNDOjpDb2RlRm9y
Q29uc3RydWN0OgogICAgICAgICAgICAgQVNTRVJUKCFyZXBsYWNlZFRodW5rLT5jb25zdHJ1Y3RU
aHVuayk7CiAgICAgICAgICAgICByZXBsYWNlZFRodW5rLT5jb25zdHJ1Y3RUaHVuayA9IFdURk1v
dmUob2xkSklUQ29kZVJlZik7CiAKLSAgICAgICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+
Y29uc3RydWN0V2l0aEFyaXR5Q2hlY2tUaHVuayk7Ci0gICAgICAgICAgICBpZiAob2xkV2l0aEFy
aXR5Q2hlY2tKSVRDb2RlUHRyKQotICAgICAgICAgICAgICAgIHJlcGxhY2VkVGh1bmstPmNvbnN0
cnVjdFdpdGhBcml0eUNoZWNrVGh1bmsgPSBXVEZNb3ZlKG9sZFdpdGhBcml0eUNoZWNrSklUQ29k
ZVB0cik7Ci0KLSAgICAgICAgICAgIEFTU0VSVCghcmVwbGFjZWRUaHVuay0+bmF0aXZlRXhlY3V0
YWJsZUNvbnN0cnVjdFdpdGhBcml0eUNoZWNrVGh1bmspOwotICAgICAgICAgICAgcmVwbGFjZWRU
aHVuay0+bmF0aXZlRXhlY3V0YWJsZUNvbnN0cnVjdFdpdGhBcml0eUNoZWNrVGh1bmsgPSBXVEZN
b3ZlKG9sZE5hdGl2ZUV4ZWN1dGFibGVXaXRoQXJpdHlDaGVja0pJVENvZGVQdHIpOworICAgICAg
ICAgICAgQVNTRVJUKCFyZXBsYWNlZFRodW5rLT5jb25zdHJ1Y3RBcml0eVRodW5rKTsKKyAgICAg
ICAgICAgIHJlcGxhY2VkVGh1bmstPmNvbnN0cnVjdEFyaXR5VGh1bmsgPSBXVEZNb3ZlKG9sZEFy
aXR5SklUQ29kZVJlZik7CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9sZEpJVENvZGVS
ZWYuY29kZSgpID09IGNyZWF0ZUpJVENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNvbnN0
cnVjdCh2bSwgSlNDOjpJbmNsdWRlRGVidWdnZXJIb29rOjpObykpLmNvZGUoKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChvbGRKSVRDb2RlUmVmLmNvZGUoKSA9PSBjcmVhdGVKSVRDb2Rl
UmVmKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVDb25zdHJ1Y3Qodm0pKS5jb2RlKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4
IDc2M2Q3NzVkMjc2OC4uNWVlMmQwY2E3NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC02NzUsMTAgKzY3NSw4IEBAIHZvaWQgSklUOjplbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCkK
IH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IEpJVDo6Y29uc2lzdGVuY3lDaGVja0dlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dl
ckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpjb25zaXN0ZW5jeUNoZWNrR2VuZXJhdG9yKFZNJikKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5j
bHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAgIGNv
bnN0ZXhwciBHUFJSZWcgc3RhY2tPZmZzZXRHUFIgPSByZWdUMDsgLy8gSW5jb21pbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGM4NGYyZGQxM2ZlMy4uOGU0NGQ0NzlhOWVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTY1MiwzNCArNjUyLDMzIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGVtaXRNYXRoSUNTbG93KEpJVFVuYXJ5TWF0aElDPEdlbmVyYXRvcj4qLCBj
b25zdCBKU0luc3RydWN0aW9uKiwgUHJvZmlsZWRSZXBhdGNoRnVuY3Rpb24sIFByb2ZpbGVkRnVu
Y3Rpb24sIFJlcGF0Y2hGdW5jdGlvbik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJldHVybkZyb21CYXNlbGluZUdl
bmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOworICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZXR1cm5Gcm9tQmFzZWxpbmVHZW5lcmF0
b3IoVk0mKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dl
ckhvb2spOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlv
bkdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotICAgICAgICBzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVi
dWdnZXJIb29rKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gc2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRp
YyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3ByaXZh
dGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYs
IEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJiwg
SW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mLCBJbmNsdWRl
RGVidWdnZXJIb29rKTsKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYsIEluY2x1ZGVE
ZWJ1Z2dlckhvb2spOwotCi0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5
X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiwgSW5j
bHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlvblRoZW5D
aGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotICAgICAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dl
dF9ieV92YWxfd2l0aF90aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2Vu
ZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYsIEluY2x1ZGVE
ZWJ1Z2dlckhvb2spOwotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURl
YnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfcmVzb2x2ZV9zY29wZUdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1
Z2dlckhvb2spOwotCisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRo
ZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV9pZF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2RlbF9ieV92YWxf
Y2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mKTsKKyAgICAg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc2xvd19vcF9w
dXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZN
Jik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHNsb3dfb3BfcHV0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYpOworCisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X3RvX3Njb3BlR2VuZXJhdG9yKFZNJik7Cisg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9wX3Ro
cm93X2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihW
TSYpOworCisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IHNsb3dfb3BfZ2V0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09wZXJhdGlv
blRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzbG93X29wX2dldF9ieV92YWxfd2l0aF90
aGlzX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7Cisg
ICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3df
b3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdl
bmVyYXRvcihWTSYpOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzbG93X29wX2dldF9mcm9tX3Njb3BlR2VuZXJhdG9yKFZNJik7CisgICAgICAg
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHNsb3dfb3BfcmVz
b2x2ZV9zY29wZUdlbmVyYXRvcihWTSYpOwogICAgICAgICB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGU+
Ci0gICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGdl
bmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOworICAg
ICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBnZW5lcmF0
ZU9wR2V0RnJvbVNjb3BlVGh1bmsoVk0mKTsKICAgICAgICAgdGVtcGxhdGUgPFJlc29sdmVUeXBl
PgotICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBn
ZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLSAg
ICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gb3BfZW50
ZXJfaGFuZGxlckdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotICAgICAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1ZUlzVHJ1dGh5
R2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgICAgIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZhbHVlSXNGYWxzZXlHZW5lcmF0b3Io
Vk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gZ2VuZXJhdGVPcFJlc29sdmVTY29wZVRodW5rKFZNJik7
CisgICAgICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG9w
X2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mKTsKKyAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmFsdWVJc1RydXRoeUdlbmVyYXRvcihWTSYpOwor
ICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2YWx1
ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJik7CiAKICAgICAgICAgSnVtcCBnZXRTbG93Q2FzZShWZWN0
b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgICAgICB7CkBAIC04ODgsNyAr
ODg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFJlc3RvcmVDYWxsZWVT
YXZlcygpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgc3RhdGljIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY29uc2lzdGVuY3lDaGVja0dlbmVyYXRvcihWTSYs
IEluY2x1ZGVEZWJ1Z2dlckhvb2spOworICAgICAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBjb25zaXN0ZW5jeUNoZWNrR2VuZXJhdG9yKFZNJik7CiAgICAg
ICAgIHZvaWQgZW1pdENvbnNpc3RlbmN5Q2hlY2soKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsLmNwcAppbmRleCBiMThkZjQ5ZWZjMzYuLjdkNDcyYzFiNDVkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC01MywxMCArNTMsOCBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9yZXQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogICAgIGVtaXROYWtlZE5lYXJKdW1wKHZtKCkuZ2V0Q1RJU3R1YihyZXR1cm5Gcm9tQmFzZWxp
bmVHZW5lcmF0b3IpLmNvZGUoKSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gSklUOjpyZXR1cm5Gcm9tQmFzZWxpbmVHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVi
dWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IEpJVDo6cmV0dXJuRnJvbUJhc2VsaW5lR2VuZXJhdG9yKFZNJikKIHsKLSAg
ICBBU1NFUlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sg
PT0gSW5jbHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAog
ICAgIGppdC5jaGVja1N0YWNrUG9pbnRlckFsaWdubWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5jcHAKaW5kZXggMjgzM2I5OWIyMjI0Li45MjQ5NzI5OWY4OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcApAQCAtMTQ0LDExICsxNDQsNiBAQCBKSVRDb2Rl
OjpDb2RlUmVmPEpTRW50cnlQdHJUYWc+IEpJVENvZGU6OnN3YXBDb2RlUmVmRm9yRGVidWdnZXIo
SklUQ29kZTo6Q29kZVJlZgogICAgIHJldHVybiBDb2RlUmVmPEpTRW50cnlQdHJUYWc+KCk7CiB9
CiAKLUNvZGVQdHI8SlNFbnRyeVB0clRhZz4gSklUQ29kZTo6c3dhcENvZGVQdHJXaXRoQXJpdHlD
aGVja0ZvckRlYnVnZ2VyKENvZGVQdHI8SlNFbnRyeVB0clRhZz4pCi17Ci0gICAgcmV0dXJuIENv
ZGVQdHI8SlNFbnRyeVB0clRhZz4oKTsKLX0KLQogSklUQ29kZVdpdGhDb2RlUmVmOjpKSVRDb2Rl
V2l0aENvZGVSZWYoSklUVHlwZSBqaXRUeXBlKQogICAgIDogSklUQ29kZShqaXRUeXBlKQogewpA
QCAtMjYzLDE1ICsyNTgsNiBAQCBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IERpcmVjdEpJVENvZGU6
OmFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2RlIGFyaXR5KQogICAgIHJldHVybiBDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KCk7CiB9CiAKLUNvZGVQdHI8SlNFbnRyeVB0clRhZz4gRGlyZWN0SklU
Q29kZTo6c3dhcENvZGVQdHJXaXRoQXJpdHlDaGVja0ZvckRlYnVnZ2VyKENvZGVQdHI8SlNFbnRy
eVB0clRhZz4gd2l0aEFyaXR5Q2hlY2spCi17Ci0gICAgUkVMRUFTRV9BU1NFUlQobV93aXRoQXJp
dHlDaGVjayk7Ci0gICAgUkVMRUFTRV9BU1NFUlQod2l0aEFyaXR5Q2hlY2spOwotICAgIGF1dG8g
b2xkID0gbV93aXRoQXJpdHlDaGVjazsKLSAgICBtX3dpdGhBcml0eUNoZWNrID0gd2l0aEFyaXR5
Q2hlY2s7Ci0gICAgcmV0dXJuIG9sZDsKLX0KLQogTmF0aXZlSklUQ29kZTo6TmF0aXZlSklUQ29k
ZShKSVRUeXBlIGppdFR5cGUpCiAgICAgOiBKSVRDb2RlV2l0aENvZGVSZWYoaml0VHlwZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKaW5kZXggMzYxMDFlYmI3Y2E1Li5lMTQ2Nzc0
MzUwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC0xNjQsOSArMTY0LDYg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGNhblN3YXBDb2RlUmVmRm9yRGVidWdnZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPiBzd2FwQ29kZVJlZkZvckRlYnVnZ2VyKENvZGVSZWY8SlNFbnRyeVB0clRhZz4pOwotCi0g
ICAgdmlydHVhbCBib29sIGNhblN3YXBDb2RlUHRyV2l0aEFyaXR5Q2hlY2tGb3JEZWJ1Z2dlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBDb2RlUHRyPEpTRW50cnlQdHJU
YWc+IHN3YXBDb2RlUHRyV2l0aEFyaXR5Q2hlY2tGb3JEZWJ1Z2dlcihDb2RlUHRyPEpTRW50cnlQ
dHJUYWc+KTsKICAgICAKICAgICBlbnVtIGNsYXNzIFNoYXJlQXR0cmlidXRlIDogdWludDhfdCB7
CiAgICAgICAgIE5vdFNoYXJlZCwKQEAgLTI1Miw3ICsyNDksNiBAQCBwdWJsaWM6CiAgICAgc2l6
ZV90IHNpemUoKSBvdmVycmlkZTsKICAgICBib29sIGNvbnRhaW5zKHZvaWQqKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgY2FuU3dhcENvZGVSZWZGb3JEZWJ1Z2dlcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICBDb2RlUmVmPEpTRW50cnlQdHJUYWc+IHN3YXBDb2RlUmVmRm9y
RGVidWdnZXIoQ29kZVJlZjxKU0VudHJ5UHRyVGFnPikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoK
QEAgLTI3MCw5ICsyNjYsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgQ29kZVB0cjxKU0VudHJ5UHRy
VGFnPiBhZGRyZXNzRm9yQ2FsbChBcml0eUNoZWNrTW9kZSkgb3ZlcnJpZGU7CiAKLSAgICBib29s
IGNhblN3YXBDb2RlUHRyV2l0aEFyaXR5Q2hlY2tGb3JEZWJ1Z2dlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICBDb2RlUHRyPEpTRW50cnlQdHJUYWc+IHN3YXBDb2RlUHRy
V2l0aEFyaXR5Q2hlY2tGb3JEZWJ1Z2dlcihDb2RlUHRyPEpTRW50cnlQdHJUYWc+KSBvdmVycmlk
ZTsKLQogcHJvdGVjdGVkOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVSZWZGb3JERkcoQ29kZVJl
ZjxKU0VudHJ5UHRyVGFnPiwgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiB3aXRoQXJpdHlDaGVjayk7
CiAKQEAgLTI4Nyw2ICsyODAsOCBAQCBwdWJsaWM6CiAgICAgfk5hdGl2ZUpJVENvZGUoKSBvdmVy
cmlkZTsKIAogICAgIENvZGVQdHI8SlNFbnRyeVB0clRhZz4gYWRkcmVzc0ZvckNhbGwoQXJpdHlD
aGVja01vZGUpIG92ZXJyaWRlOworCisgICAgYm9vbCBjYW5Td2FwQ29kZVJlZkZvckRlYnVnZ2Vy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgTmF0aXZlRE9N
SklUQ29kZSBmaW5hbCA6IHB1YmxpYyBOYXRpdmVKSVRDb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGM3YzVkNzQxZjMyZC4uZjgxN2IwOWE2YzRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTQ0NSwxMCArNDQ1
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamZhbHNlKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICBhZGRKdW1wKGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCks
IHRhcmdldCk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklU
Ojp2YWx1ZUlzRmFsc2V5R2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNs
dWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnZhbHVlSXNGYWxzZXlHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVTRUQo
aW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdn
ZXJIb29rOjpObyk7Ci0KICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rp
b24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAg
ICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBi
ZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIC8vIERGRy9G
VEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMs
IHdoaWNoIG1heSBub3QgbWF0Y2gKQEAgLTYzMywxMCArNjMxLDggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfanRydWUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFk
ZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnZhbHVlSXNUcnV0aHlHZW5lcmF0
b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6dmFsdWVJc1RydXRoeUdlbmVy
YXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBp
bmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIC8v
IFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGgg
dGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0
aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENh
bGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9u
cyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaApA
QCAtNzAzLDEwICs2OTksOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhjb25zdCBKU0luc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ha2VkTmVhckp1bXAodm0oKS5n
ZXRDVElTdHViKG9wX3Rocm93X2hhbmRsZXJHZW5lcmF0b3IpLmNvZGUoKSk7CiB9CiAKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpvcF90aHJvd19oYW5kbGVyR2Vu
ZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX3Rocm93X2hhbmRs
ZXJHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2Vy
SG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0K
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgdXNpbmcgQmFzZWxpbmVKSVRSZWdpc3RlcnM6
OlRocm93OjpnbG9iYWxPYmplY3RHUFI7CkBAIC0xMjE1LDEwICsxMjA5LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZW50ZXIoY29uc3QgSlNJbnN0cnVjdGlvbiopCiAgICAgZW1pdE5ha2VkTmVhckNh
bGwodm0oKS5nZXRDVElTdHViKG9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxOb1B0clRhZz4oKSk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gSklUOjpvcF9lbnRlcl9oYW5kbGVyR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2Vy
SG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6Om9wX2VudGVyX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFT
U0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJ
bmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAg
aml0LmVtaXRDVElUaHVua1Byb2xvZ3VlKCk7CkBAIC0xNTQ1LDEwICsxNTM3LDggQEAgdm9pZCBK
SVQ6OmVtaXRTbG93X29wX2NoZWNrX3RyYXBzKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46OmkKICAgICBlbWl0TmFrZWROZWFyQ2FsbCh2bSgpLmdldENUSVN0dWIo
b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcikucmV0YWdnZWRDb2RlPE5vUHRyVGFnPigp
KTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6Om9wX2No
ZWNrX3RyYXBzX2hhbmRsZXJHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGlu
Y2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IEpJVDo6b3BfY2hlY2tfdHJhcHNfaGFuZGxlckdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IElu
Y2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAKICAgICB1
c2luZyBCYXNlbGluZUpJVFJlZ2lzdGVyczo6Q2hlY2tUcmFwczo6Ynl0ZWNvZGVPZmZzZXRHUFI7
IC8vIEluY29taW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCmluZGV4IDkxN2IxYzYyNzU3YS4uNTI5Y2Y3OTQxYTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtMTI4LDEwICsx
MjgsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChjb25zdCBKU0luc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcgogICAgIGdlbmVyYXRlR2V0QnlWYWxTbG93
Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlWYWw+KCksIGl0ZXIpOwogfQogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfYnlf
dmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSwg
SW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X3ZhbF9jYWxsU2xvd09w
ZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1
ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhp
cyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJl
Y2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFs
T2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAg
Ly8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFs
T2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaApAQCAtMjIxLDEwICsyMTksOCBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZShjb25zdCBKU0luc3RydWN0aW9uKiwgVmVj
dG9yPFNsb3dDYXNlRW50cgogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdp
biwgQ2FsbCgpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBK
SVQ6OnNsb3dfb3BfZ2V0X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4
Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVn
Z2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93
X29wX2dldF9wcml2YXRlX25hbWVfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25H
ZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9v
aywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAg
ICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3
aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNz
dW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJv
bSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5j
dGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0
Y2gKQEAgLTQzMSwxMCArNDI3LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV92YWwo
Y29uc3QgSlNJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXQKICAgICBnZW4u
cmVwb3J0U2xvd1BhdGhDYWxsKGNvbGRQYXRoQmVnaW4sIENhbGwoKSk7CiB9CiAKLU1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3B1dF9ieV92YWxfY2Fs
bFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRl
RGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9wdXRfYnlfdmFsX2NhbGxTbG93T3BlcmF0aW9u
VGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVn
Z2VySG9vazo6Tm8pOwotCiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0
aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQog
ICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3Qg
YmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICAvLyBERkcv
RlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3Rz
LCB3aGljaCBtYXkgbm90IG1hdGNoCkBAIC01MjUsMTAgKzUxOSw4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9wdXRfcHJpdmF0ZV9uYW1lKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyCiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxs
KCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9wdXRfcHJpdmF0ZV9uYW1lX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9u
R2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29r
KQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfcHV0
X3ByaXZhdGVfbmFtZV9jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRv
cihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNs
dWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIC8vIFRo
ZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhl
IExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9u
cyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxG
cmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBi
ZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaApAQCAt
NzAyLDEwICs2OTQsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZGVsX2J5X2lkKGNvbnN0IEpT
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPAogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3Bl
cmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2Vy
SG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNr
RXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGluY2x1ZGVE
ZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6
Tm8pOwotCiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBv
bmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0
IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZh
aWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICAvLyBERkcvRlRMIG1heSBp
bmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBt
YXkgbm90IG1hdGNoCkBAIC04MTAsMTAgKzgwMCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9k
ZWxfYnlfdmFsKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0aEJlZ2luLCBDYWxsKCkpOwogfQog
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9kZWxf
YnlfdmFsX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2
bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZGVsX2J5X3ZhbF9jYWxsU2xv
d09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNT
RVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IElu
Y2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkg
dGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklU
IGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xv
YmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAg
ICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xv
YmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRjaApAQCAtMTAyNywxMCArMTAxNSw4IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8CiAgICAgZ2VuLnJlcG9ydFNsb3dQYXRoQ2FsbChjb2xkUGF0
aEJlZ2luLCBDYWxsKCkpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IEpJVDo6c2xvd19vcF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNl
cHRpb25HZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dl
ckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19v
cF9nZXRfYnlfaWRfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3Io
Vk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVk
ZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICAvLyBUaGUg
dGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBM
TEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMg
YWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJh
bWU6OmNvZGVCbG9jaygpLgogICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVs
b25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKQEAgLTEx
MjQsMTAgKzExMTAsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhp
cyhjb25zdCBKU0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3RpbwogICAgIGdlbi5yZXBvcnRT
bG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpc19j
YWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2VwdGlvbkdlbmVyYXRvcihWTSYgdm0sIEluY2x1
ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX2dldF9ieV9pZF93aXRoX3RoaXNfY2FsbFNs
b3dPcGVyYXRpb25UaGVuQ2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFT
U0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJ
bmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5
IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJ
VCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGds
b2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgog
ICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGds
b2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKQEAgLTEyMjgsMTAgKzEyMTIsOCBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKGNvbnN0IEpTSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbiwgVmVjdG9yPAogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBh
dGhCZWdpbiwgQ2FsbCgpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBKSVQ6OnNsb3dfb3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhj
ZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdn
ZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3df
b3BfcHV0X2J5X2lkX2NhbGxTbG93T3BlcmF0aW9uVGhlbkNoZWNrRXhjZXB0aW9uR2VuZXJhdG9y
KFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1
ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgLy8gVGhl
IHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUg
TExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25z
IGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZy
YW1lOjpjb2RlQmxvY2soKS4KICAgICAvLyBERkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJl
bG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCkBAIC0x
NTEwLDEwICsxNDkyLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBK
U0luc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB9CiAKIHRlbXBsYXRlIDxSZXNvbHZl
VHlwZSBwcm9maWxlZFJlc29sdmVUeXBlPgotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BSZXNvbHZlU2NvcGVUaHVuayhWTSYgdm0sIEluY2x1ZGVE
ZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wUmVzb2x2ZVNjb3BlVGh1bmsoVk0mIHZtKQog
ewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2Vy
SG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICAvLyBUaGUgdGh1bmsgZ2Vu
ZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJh
c2VsaW5lIEpJVCBiZWNhdXNlCiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhl
IHJpZ2h0IGdsb2JhbE9iamVjdCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVC
bG9jaygpLgogICAgIC8vIERGRy9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRv
IG90aGVyIGdsb2JhbE9iamVjdHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKQEAgLTE2NDcsMTAgKzE2
MjcsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJh
dGVPcFJlc29sdmVTY29wZVRodW5rKFZNJiB2bSwgSQogICAgIHJldHVybiBGSU5BTElaRV9USFVO
SyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJyZXNvbHZlX3Njb3BlIHRodW5rIik7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpzbG93X29wX3Jl
c29sdmVfc2NvcGVHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVE
ZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9yZXNvbHZlX3Njb3BlR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURl
YnVnZ2VySG9vazo6Tm8pOwotCiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1
bmN0aW9uIGNhbiBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVz
ZQogICAgIC8vIGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmpl
Y3QgYmVpbmcgYXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICAvLyBE
RkcvRlRMIG1heSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmpl
Y3RzLCB3aGljaCBtYXkgbm90IG1hdGNoCkBAIC0xNzMxLDEwICsxNzA5LDggQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfZ2V0X2Zyb21fc2NvcGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogfQogCiB0ZW1wbGF0ZSA8UmVzb2x2ZVR5cGUgcHJvZmlsZWRSZXNvbHZlVHlwZT4K
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUOjpnZW5lcmF0ZU9wR2V0
RnJvbVNjb3BlVGh1bmsoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dl
ckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6Z2VuZXJh
dGVPcEdldEZyb21TY29wZVRodW5rKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGluY2x1
ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9v
azo6Tm8pOwotCiAgICAgLy8gVGhlIHRodW5rIGdlbmVyYXRlZCBieSB0aGlzIGZ1bmN0aW9uIGNh
biBvbmx5IHdvcmsgd2l0aCB0aGUgTExJbnQgLyBCYXNlbGluZSBKSVQgYmVjYXVzZQogICAgIC8v
IGl0IG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSByaWdodCBnbG9iYWxPYmplY3QgYmVpbmcg
YXZhaWxhYmxlIGZyb20gQ2FsbEZyYW1lOjpjb2RlQmxvY2soKS4KICAgICAvLyBERkcvRlRMIG1h
eSBpbmxpbmUgZnVuY3Rpb25zIGJlbG9uZ2luZyB0byBvdGhlciBnbG9iYWxPYmplY3RzLCB3aGlj
aCBtYXkgbm90IG1hdGNoCkBAIC0xODY3LDEwICsxODQzLDggQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6OmdlbmVyYXRlT3BHZXRGcm9tU2NvcGVUaHVuayhWTSYg
dm0sIEkKICAgICByZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRy
VGFnLCAiZ2V0X2Zyb21fc2NvcGUgdGh1bmsiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVQ6OnNsb3dfb3BfZ2V0X2Zyb21fc2NvcGVHZW5lcmF0b3IoVk0m
IHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9nZXRfZnJvbV9zY29wZUdl
bmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29r
LCBpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAg
IC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3b3JrIHdp
dGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtlcyBhc3N1
bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJsZSBmcm9t
IENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5lIGZ1bmN0
aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5vdCBtYXRj
aApAQCAtMjA4NCwxMCArMjA1OCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfdG9fc2Nv
cGUoY29uc3QgSlNJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0CiAgICAgfQog
fQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xvd19vcF9w
dXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVE
ZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6
c2xvd19vcF9wdXRfdG9fc2NvcGVHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVT
RUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVi
dWdnZXJIb29rOjpObyk7Ci0KICAgICAvLyBUaGUgdGh1bmsgZ2VuZXJhdGVkIGJ5IHRoaXMgZnVu
Y3Rpb24gY2FuIG9ubHkgd29yayB3aXRoIHRoZSBMTEludCAvIEJhc2VsaW5lIEpJVCBiZWNhdXNl
CiAgICAgLy8gaXQgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHJpZ2h0IGdsb2JhbE9iamVj
dCBiZWluZyBhdmFpbGFibGUgZnJvbSBDYWxsRnJhbWU6OmNvZGVCbG9jaygpLgogICAgIC8vIERG
Ry9GVEwgbWF5IGlubGluZSBmdW5jdGlvbnMgYmVsb25naW5nIHRvIG90aGVyIGdsb2JhbE9iamVj
dHMsIHdoaWNoIG1heSBub3QgbWF0Y2gKQEAgLTIyNTAsMTAgKzIyMjIsOCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoY29uc3QgSlNJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aQogICAgIGdlbi5yZXBvcnRTbG93UGF0aENhbGwoY29sZFBhdGhCZWdpbiwg
Q2FsbCgpKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVQ6
OnNsb3dfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXNfY2FsbFNsb3dPcGVyYXRpb25UaGVuQ2hlY2tF
eGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1
Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVDo6c2xv
d19vcF9nZXRfYnlfdmFsX3dpdGhfdGhpc19jYWxsU2xvd09wZXJhdGlvblRoZW5DaGVja0V4Y2Vw
dGlvbkdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdn
ZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsK
LQogICAgIC8vIFRoZSB0aHVuayBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbiBjYW4gb25seSB3
b3JrIHdpdGggdGhlIExMSW50IC8gQmFzZWxpbmUgSklUIGJlY2F1c2UKICAgICAvLyBpdCBtYWtl
cyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmlnaHQgZ2xvYmFsT2JqZWN0IGJlaW5nIGF2YWlsYWJs
ZSBmcm9tIENhbGxGcmFtZTo6Y29kZUJsb2NrKCkuCiAgICAgLy8gREZHL0ZUTCBtYXkgaW5saW5l
IGZ1bmN0aW9ucyBiZWxvbmdpbmcgdG8gb3RoZXIgZ2xvYmFsT2JqZWN0cywgd2hpY2ggbWF5IG5v
dCBtYXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3Mu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCmluZGV4IDdlODUy
YWEzZWQ4Yy4uYmExNjNhM2Y2M2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFRodW5rcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVu
a3MuY3BwCkBAIC05Myw0OSArOTMsNTkgQEAgaW5saW5lIGJvb2wgSklUVGh1bmtzOjpXZWFrTmF0
aXZlRXhlY3V0YWJsZUhhc2g6OmVxdWFsKGNvbnN0IFdlYWs8TmF0aXZlRXhlY3V0YWIKICAgICBy
ZXR1cm4gYUV4ZWN1dGFibGUuZnVuY3Rpb24oKSA9PSBzdGQ6OmdldDwwPihiKSAmJiBhRXhlY3V0
YWJsZS5jb25zdHJ1Y3RvcigpID09IHN0ZDo6Z2V0PDE+KGIpICYmIGFFeGVjdXRhYmxlLmltcGxl
bWVudGF0aW9uVmlzaWJpbGl0eSgpID09IHN0ZDo6Z2V0PDI+KGIpICYmIGFFeGVjdXRhYmxlLm5h
bWUoKSA9PSBzdGQ6OmdldDwzPihiKTsKIH0KIAotQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklU
VGh1bmtzOjpjdGlOYXRpdmVDYWxsKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRl
RGVidWdnZXJIb29rKQorQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlOYXRp
dmVDYWxsKFZNJiB2bSkKIHsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAgIHJl
dHVybiBjdGlTdHViKHZtLCBuYXRpdmVDYWxsR2VuZXJhdG9yLCBpbmNsdWRlRGVidWdnZXJIb29r
KS5jb2RlKCk7CisgICAgcmV0dXJuIGN0aVN0dWIodm0sIG5hdGl2ZUNhbGxHZW5lcmF0b3IpLmNv
ZGUoKTsKIH0KIAotQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlOYXRpdmVD
b25zdHJ1Y3QoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2sp
CitDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aU5hdGl2ZUNhbGxXaXRoRGVi
dWdnZXJIb29rKFZNJiB2bSkKIHsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwotICAg
IHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1Y3RHZW5lcmF0b3IsIGluY2x1ZGVEZWJ1
Z2dlckhvb2spLmNvZGUoKTsKKyAgICByZXR1cm4gY3RpU3R1Yih2bSwgbmF0aXZlQ2FsbFdpdGhE
ZWJ1Z2dlckhvb2tHZW5lcmF0b3IpLmNvZGUoKTsKIH0KIAotQ29kZVB0cjxKSVRUaHVua1B0clRh
Zz4gSklUVGh1bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbChWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhv
b2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK0NvZGVQdHI8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5r
czo6Y3RpTmF0aXZlQ29uc3RydWN0KFZNJiB2bSkKIHsKICAgICBBU1NFUlQoT3B0aW9uczo6dXNl
SklUKCkpOwotICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvciwg
aW5jbHVkZURlYnVnZ2VySG9vaykuY29kZSgpOworICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRp
dmVDb25zdHJ1Y3RHZW5lcmF0b3IpLmNvZGUoKTsKIH0KIAotQ29kZVB0cjxKSVRUaHVua1B0clRh
Zz4gSklUVGh1bmtzOjpjdGlOYXRpdmVUYWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3MoVk0mIHZtLCBJ
bmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitDb2RlUHRyPEpJVFRodW5r
UHRyVGFnPiBKSVRUaHVua3M6OmN0aU5hdGl2ZUNvbnN0cnVjdFdpdGhEZWJ1Z2dlckhvb2soVk0m
IHZtKQogewogICAgIEFTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7Ci0gICAgcmV0dXJuIGN0aVN0
dWIodm0sIG5hdGl2ZVRhaWxDYWxsV2l0aG91dFNhdmVkVGFnc0dlbmVyYXRvciwgaW5jbHVkZURl
YnVnZ2VySG9vaykuY29kZSgpOworICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVDb25zdHJ1
Y3RXaXRoRGVidWdnZXJIb29rR2VuZXJhdG9yKS5jb2RlKCk7CiB9CiAKLUNvZGVQdHI8SklUVGh1
bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpSW50ZXJuYWxGdW5jdGlvbkNhbGwoVk0mIHZtLCBJbmNs
dWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitDb2RlUHRyPEpJVFRodW5rUHRy
VGFnPiBKSVRUaHVua3M6OmN0aU5hdGl2ZVRhaWxDYWxsKFZNJiB2bSkKIHsKICAgICBBU1NFUlQo
T3B0aW9uczo6dXNlSklUKCkpOwotICAgIHJldHVybiBjdGlTdHViKHZtLCBpbnRlcm5hbEZ1bmN0
aW9uQ2FsbEdlbmVyYXRvciwgaW5jbHVkZURlYnVnZ2VySG9vaykuY29kZSgpOworICAgIHJldHVy
biBjdGlTdHViKHZtLCBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcikuY29kZSgpOwogfQogCi1Db2Rl
UHRyPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aUludGVybmFsRnVuY3Rpb25Db25zdHJ1
Y3QoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitDb2Rl
UHRyPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aU5hdGl2ZVRhaWxDYWxsV2l0aG91dFNh
dmVkVGFncyhWTSYgdm0pCiB7CiAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKLSAgICBy
ZXR1cm4gY3RpU3R1Yih2bSwgaW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdEdlbmVyYXRvciwgaW5j
bHVkZURlYnVnZ2VySG9vaykuY29kZSgpOworICAgIHJldHVybiBjdGlTdHViKHZtLCBuYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IpLmNvZGUoKTsKK30KKworQ29kZVB0cjxK
SVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlJbnRlcm5hbEZ1bmN0aW9uQ2FsbChWTSYgdm0p
Cit7CisgICAgQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKKyAgICByZXR1cm4gY3RpU3R1Yih2
bSwgaW50ZXJuYWxGdW5jdGlvbkNhbGxHZW5lcmF0b3IpLmNvZGUoKTsKK30KKworQ29kZVB0cjxK
SVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpjdGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZN
JiB2bSkKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOworICAgIHJldHVybiBjdGlT
dHViKHZtLCBpbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0R2VuZXJhdG9yKS5jb2RlKCk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0ZVRodW5rPgotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVN0dWJJbXBsKFRodW5rR2VuZXJhdG9yIGtl
eSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rLCBHZW5lcmF0ZVRodW5r
IGdlbmVyYXRlVGh1bmspCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJ
VFRodW5rczo6Y3RpU3R1YkltcGwoVGh1bmtHZW5lcmF0b3Iga2V5LCBHZW5lcmF0ZVRodW5rIGdl
bmVyYXRlVGh1bmspCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCi0gICAgYXV0
byYgY3RpU3R1Yk1hcCA9IGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9v
azo6WWVzID8gbV9jdGlTdHViSW5jbHVkaW5nRGVidWdnZXJIb29rTWFwIDogbV9jdGlTdHViTWFw
OwotCiAgICAgYXV0byBoYW5kbGVFbnRyeSA9IFsmXSAoRW50cnkmIGVudHJ5KSB7CiAgICAgICAg
IGlmIChlbnRyeS5uZWVkc0Nyb3NzTW9kaWZ5aW5nQ29kZUZlbmNlICYmICFpc0NvbXBpbGF0aW9u
VGhyZWFkKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBtYWluIHRocmVhZCB3aWxsIGlzc3VlIGEg
Y3Jvc3NNb2RpZnlpbmdDb2RlRmVuY2UgYmVmb3JlIHJ1bm5pbmcKQEAgLTE1Miw4ICsxNjIsOCBA
QCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1
YkltcGwoVGh1bmtHZW5lcmF0b3Iga2V5LAogICAgIH07CiAKICAgICB7Ci0gICAgICAgIGF1dG8g
aXRlciA9IGN0aVN0dWJNYXAuZmluZChrZXkpOwotICAgICAgICBpZiAoaXRlciAhPSBjdGlTdHVi
TWFwLmVuZCgpKQorICAgICAgICBhdXRvIGl0ZXIgPSBtX2N0aVN0dWJNYXAuZmluZChrZXkpOwor
ICAgICAgICBpZiAoaXRlciAhPSBtX2N0aVN0dWJNYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1
cm4gaGFuZGxlRW50cnkoaXRlci0+dmFsdWUpOwogICAgIH0KIApAQCAtMTYxLDIyICsxNzEsMjIg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVN0
dWJJbXBsKFRodW5rR2VuZXJhdG9yIGtleSwKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGNvZGVSZWYgPSBnZW5lcmF0ZVRodW5rKCk7CiAKICAgICBib29sIG5lZWRz
Q3Jvc3NNb2RpZnlpbmdDb2RlRmVuY2UgPSBpc0NvbXBpbGF0aW9uVGhyZWFkKCk7Ci0gICAgYXV0
byBhZGRSZXN1bHQgPSBjdGlTdHViTWFwLmFkZChrZXksIEVudHJ5IHsgUGFja2VkUmVmUHRyPEV4
ZWN1dGFibGVNZW1vcnlIYW5kbGU+KGNvZGVSZWYuZXhlY3V0YWJsZU1lbW9yeSgpKSwgbmVlZHND
cm9zc01vZGlmeWluZ0NvZGVGZW5jZSB9KTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fY3RpU3R1
Yk1hcC5hZGQoa2V5LCBFbnRyeSB7IFBhY2tlZFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5SGFuZGxl
Pihjb2RlUmVmLmV4ZWN1dGFibGVNZW1vcnkoKSksIG5lZWRzQ3Jvc3NNb2RpZnlpbmdDb2RlRmVu
Y2UgfSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOyAvLyBUaHVu
a3MgYXJlbid0IHJlY3Vyc2l2ZSwgc28gYW55dGhpbmcgd2UgZ2VuZXJhdGVkIHRyYW5zaXRpdmVs
eSBzaG91bGRuJ3QgaGF2ZSBnZW5lcmF0ZWQgJ2tleScuCiAgICAgcmV0dXJuIGhhbmRsZUVudHJ5
KGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IEpJVFRodW5rczo6Y3RpU3R1YihWTSYgdm0sIFRodW5rR2VuZXJhdG9y
IGdlbmVyYXRvciwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBKSVRUaHVua3M6OmN0aVN0dWIoVk0m
IHZtLCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGN0aVN0dWJJbXBs
KGdlbmVyYXRvciwgaW5jbHVkZURlYnVnZ2VySG9vaywgWyZdIHsKLSAgICAgICAgcmV0dXJuIGdl
bmVyYXRvcih2bSwgaW5jbHVkZURlYnVnZ2VySG9vayk7CisgICAgcmV0dXJuIGN0aVN0dWJJbXBs
KGdlbmVyYXRvciwgWyZdIHsKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvcih2bSk7CiAgICAgfSk7
CiB9CiAKIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gSklUVGh1bmtzOjpj
dGlTbG93UGF0aEZ1bmN0aW9uU3R1YihWTSYgdm0sIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhG
dW5jdGlvbikKIHsKICAgICBhdXRvIGtleSA9IGJpdHdpc2VfY2FzdDxUaHVua0dlbmVyYXRvcj4o
c2xvd1BhdGhGdW5jdGlvbik7Ci0gICAgcmV0dXJuIGN0aVN0dWJJbXBsKGtleSwgSW5jbHVkZURl
YnVnZ2VySG9vazo6Tm8sIFsmXSB7CisgICAgcmV0dXJuIGN0aVN0dWJJbXBsKGtleSwgWyZdIHsK
ICAgICAgICAgcmV0dXJuIEpJVFNsb3dQYXRoQ2FsbDo6Z2VuZXJhdGVUaHVuayh2bSwgc2xvd1Bh
dGhGdW5jdGlvbik7CiAgICAgfSk7CiB9CkBAIC0yMzMsMTUgKzI0MywxNCBAQCBOYXRpdmVFeGVj
dXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIoVk0mIHZtLCBUYWdnZWROYXRpdmVG
dW5jdGlvbiBmdW5jdAogCiAgICAgUmVmUHRyPEpJVENvZGU+IGZvckNhbGw7CiAgICAgaWYgKGdl
bmVyYXRvcikgewotICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yID09IHZtLnRodW5rR2VuZXJhdG9y
Rm9ySW50cmluc2ljKGludHJpbnNpYykpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SlNFbnRyeVB0clRhZz4gZW50cnkgPSBnZW5lcmF0b3Iodm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2s6
Ok5vKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz4gZW50cnkgPSBnZW5lcmF0b3Iodm0pLnJldGFnZ2VkPEpTRW50
cnlQdHJUYWc+KCk7CiAgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgRGlyZWN0SklUQ29k
ZShlbnRyeSwgZW50cnkuY29kZSgpLCBKSVRUeXBlOjpIb3N0Q2FsbFRodW5rLCBpbnRyaW5zaWMp
KTsKICAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSkKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVm
KG5ldyBOYXRpdmVET01KSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNhbGwodm0sIEluY2x1ZGVEZWJ1
Z2dlckhvb2s6Ok5vKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUVHlwZTo6SG9zdENh
bGxUaHVuaywgaW50cmluc2ljLCBzaWduYXR1cmUpKTsKKyAgICAgICAgZm9yQ2FsbCA9IGFkb3B0
UmVmKG5ldyBOYXRpdmVET01KSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRy
VGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNhbGwodm0pLnJldGFnZ2Vk
PEpTRW50cnlQdHJUYWc+KCkpLCBKSVRUeXBlOjpIb3N0Q2FsbFRodW5rLCBpbnRyaW5zaWMsIHNp
Z25hdHVyZSkpOwogICAgIGVsc2UKLSAgICAgICAgZm9yQ2FsbCA9IGFkb3B0UmVmKG5ldyBOYXRp
dmVKSVRDb2RlKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNhbGwodm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5v
KS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgaW50
cmluc2ljKSk7CisgICAgICAgIGZvckNhbGwgPSBhZG9wdFJlZihuZXcgTmF0aXZlSklUQ29kZShN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihjdGlOYXRpdmVDYWxsKHZtKS5yZXRhZ2dlZDxKU0VudHJ5UHRyVGFnPigpKSwgSklUVHlw
ZTo6SG9zdENhbGxUaHVuaywgaW50cmluc2ljKSk7CiAgICAgCi0gICAgUmVmPEpJVENvZGU+IGZv
ckNvbnN0cnVjdCA9IGFkb3B0UmVmKCpuZXcgTmF0aXZlSklUQ29kZShNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SlNFbnRyeVB0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihjdGlOYXRpdmVD
b25zdHJ1Y3Qodm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKS5yZXRhZ2dlZDxKU0VudHJ5UHRy
VGFnPigpKSwgSklUVHlwZTo6SG9zdENhbGxUaHVuaywgTm9JbnRyaW5zaWMpKTsKKyAgICBSZWY8
SklUQ29kZT4gZm9yQ29uc3RydWN0ID0gYWRvcHRSZWYoKm5ldyBOYXRpdmVKSVRDb2RlKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKU0VudHJ5UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGN0aU5hdGl2ZUNvbnN0cnVjdCh2bSkucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKSksIEpJVFR5
cGU6Okhvc3RDYWxsVGh1bmssIE5vSW50cmluc2ljKSk7CiAgICAgCiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogbmF0aXZlRXhlY3V0YWJsZSA9IE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZSh2bSwgZm9y
Q2FsbC5yZWxlYXNlTm9uTnVsbCgpLCBmdW5jdGlvbiwgV1RGTW92ZShmb3JDb25zdHJ1Y3QpLCBj
b25zdHJ1Y3RvciwgaW1wbGVtZW50YXRpb25WaXNpYmlsaXR5LCBuYW1lKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAppbmRleCA2ODMxMzg3YjYwZWIuLjE4MjM0N2U2
ZDc2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCkBAIC0zNiw3ICszNiw2
IEBACiAjaW5jbHVkZSAiV2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgogI2lu
Y2x1ZGUgPHR1cGxlPgotI2luY2x1ZGUgPHd0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9QYWNrZWRSZWZQdHIuaD4KQEAgLTU3LDE0ICs1NiwxNiBAQCBwdWJsaWM6CiAgICAgSklU
VGh1bmtzKCk7CiAgICAgfkpJVFRodW5rcygpIGZpbmFsOwogCi0gICAgQ29kZVB0cjxKSVRUaHVu
a1B0clRhZz4gY3RpTmF0aXZlQ2FsbChWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotICAgIENv
ZGVQdHI8SklUVGh1bmtQdHJUYWc+IGN0aU5hdGl2ZUNvbnN0cnVjdChWTSYsIEluY2x1ZGVEZWJ1
Z2dlckhvb2spOwotICAgIENvZGVQdHI8SklUVGh1bmtQdHJUYWc+IGN0aU5hdGl2ZVRhaWxDYWxs
KFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci0gICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4g
Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9v
ayk7Ci0gICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxGdW5jdGlvbkNhbGwo
Vk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLSAgICBDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBj
dGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Cisg
ICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpTmF0aXZlQ2FsbChWTSYpOworICAgIENvZGVQ
dHI8SklUVGh1bmtQdHJUYWc+IGN0aU5hdGl2ZUNhbGxXaXRoRGVidWdnZXJIb29rKFZNJik7Cisg
ICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpTmF0aXZlQ29uc3RydWN0KFZNJik7CisgICAg
Q29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpTmF0aXZlQ29uc3RydWN0V2l0aERlYnVnZ2VySG9v
ayhWTSYpOworICAgIENvZGVQdHI8SklUVGh1bmtQdHJUYWc+IGN0aU5hdGl2ZVRhaWxDYWxsKFZN
Jik7CisgICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpTmF0aXZlVGFpbENhbGxXaXRob3V0
U2F2ZWRUYWdzKFZNJik7CisgICAgQ29kZVB0cjxKSVRUaHVua1B0clRhZz4gY3RpSW50ZXJuYWxG
dW5jdGlvbkNhbGwoVk0mKTsKKyAgICBDb2RlUHRyPEpJVFRodW5rUHRyVGFnPiBjdGlJbnRlcm5h
bEZ1bmN0aW9uQ29uc3RydWN0KFZNJik7CiAKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGN0aVN0dWIoVk0mLCBUaHVua0dlbmVyYXRvciwgSW5jbHVkZURlYnVnZ2Vy
SG9vayk7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjdGlTdHVi
KFZNJiwgVGh1bmtHZW5lcmF0b3IpOwogICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gY3RpU2xvd1BhdGhGdW5jdGlvblN0dWIoVk0mLCBTbG93UGF0aEZ1bmN0aW9uKTsK
IAogICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGhvc3RGdW5jdGlvblN0dWIoVk0mLCBUYWdnZWROYXRp
dmVGdW5jdGlvbiwgVGFnZ2VkTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IsIEltcGxlbWVudGF0
aW9uVmlzaWJpbGl0eSwgY29uc3QgU3RyaW5nJiBuYW1lKTsKQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0ZVRodW5rPgot
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY3RpU3R1YkltcGwoVGh1
bmtHZW5lcmF0b3Iga2V5LCBJbmNsdWRlRGVidWdnZXJIb29rLCBHZW5lcmF0ZVRodW5rKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGN0aVN0dWJJbXBsKFRodW5r
R2VuZXJhdG9yIGtleSwgR2VuZXJhdGVUaHVuayk7CiAKICAgICB2b2lkIGZpbmFsaXplKEhhbmRs
ZTxVbmtub3duPiwgdm9pZCogY29udGV4dCkgZmluYWw7CiAgICAgCkBAIC04Myw3ICs4NCw2IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICB1c2luZyBDVElTdHViTWFwID0gSGFzaE1hcDxUaHVua0dl
bmVyYXRvciwgRW50cnk+OwogICAgIENUSVN0dWJNYXAgbV9jdGlTdHViTWFwOwotICAgIENUSVN0
dWJNYXAgbV9jdGlTdHViSW5jbHVkaW5nRGVidWdnZXJIb29rTWFwOwogCiAgICAgdXNpbmcgSG9z
dEZ1bmN0aW9uS2V5ID0gc3RkOjp0dXBsZTxUYWdnZWROYXRpdmVGdW5jdGlvbiwgVGFnZ2VkTmF0
aXZlRnVuY3Rpb24sIEltcGxlbWVudGF0aW9uVmlzaWJpbGl0eSwgU3RyaW5nPjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IGFlMGFkMjFkNWYzYS4u
ZGZhZmE5YzQ4Y2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiR1BSSW5mby5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgotI2luY2x1ZGUgIkxpbmtCdWZmZXIu
aCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTUw
LDE1ICs0OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbmxpbmUgSnVtcCBlbWl0TG9h
ZEludDMyKFZpcnR1YWxSZWdpc3RlciwgUmVnaXN0ZXJJRCBkc3QpOwogICAgICAgICBpbmxpbmUg
SnVtcCBlbWl0TG9hZERvdWJsZShWaXJ0dWFsUmVnaXN0ZXIsIEZQUmVnaXN0ZXJJRCBkc3QsIFJl
Z2lzdGVySUQgc2NyYXRjaCk7CiAKLSAgICAgICAgaW5saW5lIHZvaWQgZW1pdERlYnVnZ2VySG9v
aygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1vdmUoTWFjcm9Bc3NlbWJsZXI6OmZyYW1lUG9p
bnRlclJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwotICAgICAgICAgICAgYXV0byBk
ZWJ1Z2dlcldpbGxDYWxsTmF0aXZlRXhlY3V0YWJsZSA9IGNhbGwoT3BlcmF0aW9uUHRyVGFnKTsK
LSAgICAgICAgICAgIGFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewot
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubGluazxPcGVyYXRpb25QdHJUYWc+KGRlYnVnZ2Vy
V2lsbENhbGxOYXRpdmVFeGVjdXRhYmxlLCBvcGVyYXRpb25EZWJ1Z2dlcldpbGxDYWxsTmF0aXZl
RXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotCiAgICAgICAgIFZNKiB2
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdm07IH0KIAogICAgICAgICBWTSogY29uc3QgbV92bTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgKaW5kZXgg
Zjk4MjMwOTgyNjU4Li5mOGJkYjkyZDU0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCkBAIC0zNywxNiArMzcsMjAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgU3BlY2lhbGl6ZWRUaHVua0pJVCA6IHB1YmxpYyBKU0ludGVyZmFj
ZUpJVCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3RleHByIGludCBUaGlzQXJn
dW1lbnQgPSAtMTsKLSAgICAgICAgZXhwbGljaXQgU3BlY2lhbGl6ZWRUaHVua0pJVChWTSYgdm0p
CisgICAgICAgIFNwZWNpYWxpemVkVGh1bmtKSVQoVk0mIHZtLCBpbnQgZXhwZWN0ZWRBcmdDb3Vu
dCkKICAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQoJnZtKQogICAgICAgICB7CiAgICAgICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwogICAgICAgICAgICAgZW1pdFNhdmVUaGVuTWF0
ZXJpYWxpemVUYWdSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgaGF2
ZSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cworICAgICAgICAgICAgbV9mYWlsdXJl
cy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHBheWxvYWRGb3IoQ2FsbEZyYW1lU2xvdDo6YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpLCBUcnVzdGVkSW1tMzIoZXhwZWN0ZWRBcmdDb3VudCAr
IDEpKSk7CiAgICAgICAgIH0KLQotICAgICAgICB2b2lkIGNoZWNrQXJnQ291bnQoaW50IGV4cGVj
dGVkQXJnQ291bnQpCisgICAgICAgIAorICAgICAgICBleHBsaWNpdCBTcGVjaWFsaXplZFRodW5r
SklUKFZNJiB2bSkKKyAgICAgICAgICAgIDogSlNJbnRlcmZhY2VKSVQoJnZtKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtX2ZhaWx1cmVzLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcGF5bG9h
ZEZvcihDYWxsRnJhbWVTbG90Ojphcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyksIFRydXN0ZWRJ
bW0zMihleHBlY3RlZEFyZ0NvdW50ICsgMSkpKTsKKyAgICAgICAgICAgIGVtaXRGdW5jdGlvblBy
b2xvZ3VlKCk7CisgICAgICAgICAgICBlbWl0U2F2ZVRoZW5NYXRlcmlhbGl6ZVRhZ1JlZ2lzdGVy
cygpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGxvYWREb3VibGVBcmd1bWVu
dChpbnQgYXJndW1lbnQsIEZQUmVnaXN0ZXJJRCBkc3QsIFJlZ2lzdGVySUQgc2NyYXRjaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3IuaAppbmRleCA4YmNkNmQxNGZk
ZGEuLjg0ZGU2MzA5ZGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3IuaApAQCAtMzMsOSArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIFZNOwogdGVt
cGxhdGU8UHRyVGFnPiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CiAKLWVudW0gY2xhc3Mg
SW5jbHVkZURlYnVnZ2VySG9vayA6IGJvb2wgeyBObywgWWVzIH07Ci0KLXVzaW5nIFRodW5rR2Vu
ZXJhdG9yID0gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiAoKikoVk0mLCBJ
bmNsdWRlRGVidWdnZXJIb29rKTsKK3VzaW5nIFRodW5rR2VuZXJhdG9yID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiAoKikoVk0mKTsKIAogI2RlZmluZSBGSU5BTElaRV9U
SFVOSyhsaW5rQnVmZmVyUmVmZXJlbmNlLCByZXN1bHRQdHJUYWcsIC4uLikgXAogICAgIChsaW5r
QnVmZmVyUmVmZXJlbmNlLnNldElzVGh1bmsoKSwgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyUmVm
ZXJlbmNlLCByZXN1bHRQdHJUYWcsIF9fVkFfQVJHU19fKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAppbmRleCBkODFiNjk5M2U1MGIuLjYyYzc4M2M1
OTUyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNw
cApAQCAtNDMsMTAgKzQzLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSwg
SW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtKQog
ewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2Vy
SG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICBDQ2FsbEhlbHBlcnMgaml0
OwogCiAgICAgaml0LmNvcHlDYWxsZWVTYXZlc1RvRW50cnlGcmFtZUNhbGxlZVNhdmVzQnVmZmVy
KHZtLnRvcEVudHJ5RnJhbWUsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CkBAIC02MSwxMCArNTks
OCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhhbmRsZUV4Y2VwdGlv
bkdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZQogICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhw
YXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJoYW5kbGVFeGNlcHRpb24iKTsKIH0KIAotTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2Fs
bEZyYW1lUm9sbGJhY2tHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1
ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhh
bmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29r
ID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIENDYWxsSGVscGVycyBqaXQ7CiAK
ICAgICBqaXQuY29weUNhbGxlZVNhdmVzVG9FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0u
dG9wRW50cnlGcmFtZSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKQEAgLTc5LDEwICs3NSw4IEBA
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uV2l0
aENhbGxGcmFtZVJvbGxiYWNrR2VuZXJhCiAgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNo
QnVmZmVyLCBKSVRUaHVua1B0clRhZywgImhhbmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xs
YmFjayIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRo
dW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtLCBJbmNs
dWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRp
b25HZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2Vy
SG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0K
ICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgaml0LmVtaXRDVElUaHVua0VwaWxvZ3VlKCk7
CkBAIC05OCwxMCArOTIsOCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
IHBvcFRodW5rU3RhY2tQcmVzZXJ2ZXNBbmRIYW5kbGVFeGNlcHRpb25HZQogICAgIHJldHVybiBG
SU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1bmtQdHJUYWcsICJwb3BUaHVua1N0YWNr
UHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gY2hlY2tFeGNlcHRpb25HZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRl
RGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBB
U1NFUlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0g
SW5jbHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKIAogICAg
IC8vIFRoaXMgdGh1bmsgaXMgdGFpbCBjYWxsZWQgZnJvbSBvdGhlciB0aHVua3MsIGFuZCB0aGUg
cmV0dXJuIGFkZHJlc3MgaXMgYWx3YXlzIGFscmVhZHkgdGFnZ2VkCkBAIC0xNTQsMTAgKzE0Niw4
IEBAIGlubGluZSB2b2lkIGVtaXRQb2ludGVyVmFsaWRhdGlvbihDQ2FsbEhlbHBlcnMmIGppdCwg
R1BSUmVnIHBvaW50ZXJHUFIsIFRhZ1R5cGUKIAogLy8gV2Ugd2lsbCBqdW1wIGhlcmUgaWYgdGhl
IEpJVCBjb2RlIHRyaWVzIHRvIG1ha2UgYSBjYWxsLCBidXQgdGhlCiAvLyBsaW5raW5nIGhlbHBl
ciAoQysrIGNvZGUpIGRlY2lkZXMgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQuCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxT
bG93UGF0aEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVn
Z2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdGhyb3dFeGNl
cHRpb25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5V
U0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURl
YnVnZ2VySG9vazo6Tm8pOwotCiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICAKICAgICAvLyBU
aGUgY2FsbCBwdXNoZWQgYSByZXR1cm4gYWRkcmVzcywgc28gd2UgbmVlZCB0byBwb3AgaXQgYmFj
ayBvZmYgdG8gcmUtYWxpZ24gdGhlIHN0YWNrLApAQCAtMjMxLDEwICsyMjEsOCBAQCBzdGF0aWMg
dm9pZCBzbG93UGF0aEZvcihDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBTcHJ0X0pJVE9wZXJh
dGlvbl9FR0NsaSBzbG93UAogICAgIGppdC5mYXJKdW1wKEdQUkluZm86OnJldHVyblZhbHVlR1BS
LCBKU0VudHJ5UHRyVGFnKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBp
bmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGlu
Y2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2Vy
SG9vazo6Tm8pOwotCiAgICAgLy8gVGhlIHJldHVybiBhZGRyZXNzIGlzIG9uIHRoZSBzdGFjayBv
ciBpbiB0aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQogICAgIC8vIHNhdmUgdGhlIHJl
dHVybiBhZGRyZXNzIHRvIHRoZSBjYWxsIGZyYW1lIHdoaWxlIHdlIG1ha2UgYSBDKysgZnVuY3Rp
b24gY2FsbAogICAgIC8vIHRvIHBlcmZvcm0gbGlua2luZyBhbmQgbGF6eSBjb21waWxhdGlvbiBp
ZiBuZWNlc3NhcnkuIFdlIGV4cGVjdCB0aGUgY2FsbGVlCkBAIC0yNTAsMTAgKzIzOCw4IEBAIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGlua0NhbGxUaHVua0dlbmVyYXRv
cihWTSYgdm0sIEluY2x1ZGVEZWJ1CiAKIC8vIEZvciBjbG9zdXJlIG9wdGltaXphdGlvbnMsIHdl
IG9ubHkgaW5jbHVkZSBjYWxscywgc2luY2UgaWYgeW91J3JlIHVzaW5nIGNsb3N1cmVzIGZvcgog
Ly8gb2JqZWN0IGNvbnN0cnVjdGlvbiB0aGVuIHlvdSdyZSBnb2luZyB0byBsb3NlIGJpZyB0aW1l
IGFueXdheS4KLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGlua1BvbHlt
b3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNs
dWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBs
aW5rUG9seW1vcnBoaWNDYWxsVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIEFTU0VSVF9V
TlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRl
RGVidWdnZXJIb29rOjpObyk7Ci0KICAgICBDQ2FsbEhlbHBlcnMgaml0OwogCiAgICAgc2xvd1Bh
dGhGb3Ioaml0LCB2bSwgb3BlcmF0aW9uTGlua1BvbHltb3JwaGljQ2FsbCk7CkBAIC0yNjYsMTAg
KzI1Miw4IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbGlua1BvbHlt
b3JwaGljQ2FsbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwKIC8vIHBhdGggdmlydHVhbCBjYWxsIHNv
IHRoYXQgd2UgY2FuIGVuYWJsZSBmYXN0IHRhaWwgY2FsbHMgZm9yIG1lZ2Ftb3JwaGljCiAvLyB2
aXJ0dWFsIGNhbGxzIGJ5IHVzaW5nIHRoZSBzaHVmZmxlci4KIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg4MzEKLXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vZGUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRl
RGVidWdnZXJIb29rKQorc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gdmlydHVhbFRodW5rRm9yKFZNJiB2bSwgQ2FsbE1vZGUgbW9kZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQogewotICAgIEFTU0VSVF9VTlVTRUQoaW5jbHVkZURlYnVnZ2VySG9vaywg
aW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpObyk7Ci0KICAgICAv
LyBUaGUgY2FsbGVlIGlzIGluIHJlZ1QwIChmb3IgSlNWQUxVRTMyXzY0LCB0aGUgdGFnIGlzIGlu
IHJlZ1QxKS4KICAgICAvLyBUaGUgcmV0dXJuIGFkZHJlc3MgaXMgb24gdGhlIHN0YWNrLCBvciBp
biB0aGUgbGluayByZWdpc3Rlci4gV2Ugd2lsbCBoZW5jZQogICAgIC8vIGp1bXAgdG8gdGhlIGNh
bGxlZSwgb3Igc2F2ZSB0aGUgcmV0dXJuIGFkZHJlc3MgdG8gdGhlIGNhbGwgZnJhbWUgd2hpbGUg
d2UKQEAgLTM1NiwxOSArMzQwLDE5IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvcihWTSYgdm0sIENhbGxNb2RlIG1vCiAgICAgICAg
IG1vZGUgPT0gQ2FsbE1vZGU6OlJlZ3VsYXIgPyAiY2FsbCIgOiBtb2RlID09IENhbGxNb2RlOjpU
YWlsID8gInRhaWwgY2FsbCIgOiAiY29uc3RydWN0Iik7CiB9CiAKLXN0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHZpcnR1YWxUaHVua0ZvclJlZ3VsYXJDYWxsKFZN
JiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorc3RhdGljIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRodW5rRm9yUmVndWxh
ckNhbGwoVk0mIHZtKQogewotICAgIHJldHVybiB2aXJ0dWFsVGh1bmtGb3Iodm0sIENhbGxNb2Rl
OjpSZWd1bGFyLCBDb2RlRm9yQ2FsbCwgaW5jbHVkZURlYnVnZ2VySG9vayk7CisgICAgcmV0dXJu
IHZpcnR1YWxUaHVua0Zvcih2bSwgQ2FsbE1vZGU6OlJlZ3VsYXIsIENvZGVGb3JDYWxsKTsKIH0K
IAotc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdmlydHVhbFRo
dW5rRm9yVGFpbENhbGwoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dl
ckhvb2spCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2aXJ0
dWFsVGh1bmtGb3JUYWlsQ2FsbChWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIHZpcnR1YWxUaHVua0Zv
cih2bSwgQ2FsbE1vZGU6OlRhaWwsIENvZGVGb3JDYWxsLCBpbmNsdWRlRGVidWdnZXJIb29rKTsK
KyAgICByZXR1cm4gdmlydHVhbFRodW5rRm9yKHZtLCBDYWxsTW9kZTo6VGFpbCwgQ29kZUZvckNh
bGwpOwogfQogCi1zdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB2
aXJ0dWFsVGh1bmtGb3JDb25zdHJ1Y3RDb25zdHJ1Y3QoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJI
b29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiB2aXJ0dWFsVGh1bmtGb3JDb25zdHJ1Y3RDb25zdHJ1Y3QoVk0mIHZtKQog
ewotICAgIHJldHVybiB2aXJ0dWFsVGh1bmtGb3Iodm0sIENhbGxNb2RlOjpDb25zdHJ1Y3QsIENv
ZGVGb3JDb25zdHJ1Y3QsIGluY2x1ZGVEZWJ1Z2dlckhvb2spOworICAgIHJldHVybiB2aXJ0dWFs
VGh1bmtGb3Iodm0sIENhbGxNb2RlOjpDb25zdHJ1Y3QsIENvZGVGb3JDb25zdHJ1Y3QpOwogfQog
CiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1YWxUaHVu
a0ZvcihWTSYgdm0sIENhbGxNb2RlIGNhbGxNb2RlKQpAQCAtMzg5LDggKzM3Myw5IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRTdHViUm91dGluZVB0clRhZz4gdmlydHVhbFRodW5rRm9yKFZN
JiB2bSwgQ2FsbE1vZGUgY2FsCiAKIGVudW0gVGh1bmtFbnRyeVR5cGUgeyBFbnRlclZpYUNhbGws
IEVudGVyVmlhSnVtcFdpdGhTYXZlZFRhZ3MsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3Mg
fTsKIGVudW0gY2xhc3MgVGh1bmtGdW5jdGlvblR5cGUgeyBKU0Z1bmN0aW9uLCBJbnRlcm5hbEZ1
bmN0aW9uIH07CitlbnVtIGNsYXNzIEluY2x1ZGVEZWJ1Z2dlckhvb2sgeyBObywgWWVzIH07CiAK
LXN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUZvckdl
bmVyYXRvcihWTSYgdm0sIFRodW5rRnVuY3Rpb25UeXBlIHRodW5rRnVuY3Rpb25UeXBlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIFRodW5rRW50cnlUeXBlIGVudHJ5VHlwZSwgSW5jbHVk
ZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwgVGh1bmtG
dW5jdGlvblR5cGUgdGh1bmtGdW5jdGlvblR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgVGh1bmtFbnRyeVR5cGUgZW50cnlUeXBlID0gRW50ZXJWaWFDYWxsLCBJbmNsdWRlRGVidWdn
ZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPSBJbmNsdWRlRGVidWdnZXJIb29rOjpObykKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYWJsZSB0byBsb2cgU2hhZG93Q2hpY2tlbiBw
cm9sb2d1ZSBwYWNrZXRzLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTU2ODkKQEAgLTQxOCw4ICs0MDMsMTMgQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwgVGh1bmtG
dW4KICAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG51bGxwdHIsIENhbGxGcmFtZVNs
b3Q6OmNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKIAotICAgIGlmIChpbmNsdWRlRGVidWdnZXJIb29rID09
IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykKLSAgICAgICAgaml0LmVtaXREZWJ1Z2dlckhvb2so
KTsKKyAgICBpZiAoaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpZ
ZXMpIHsKKyAgICAgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmZyYW1lUG9pbnRlclJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBhdXRvIGRlYnVnZ2VyV2lsbENh
bGxOYXRpdmVFeGVjdXRhYmxlID0gaml0LmNhbGwoT3BlcmF0aW9uUHRyVGFnKTsKKyAgICAgICAg
aml0LmFkZExpbmtUYXNrKFs9XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAg
ICAgbGlua0J1ZmZlci5saW5rPE9wZXJhdGlvblB0clRhZz4oZGVidWdnZXJXaWxsQ2FsbE5hdGl2
ZUV4ZWN1dGFibGUsIG9wZXJhdGlvbkRlYnVnZ2VyV2lsbENhbGxOYXRpdmVFeGVjdXRhYmxlKTsK
KyAgICAgICAgfSk7CisgICAgfQogCiAgICAgLy8gSG9zdCBmdW5jdGlvbiBzaWduYXR1cmU6IGYo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKICNpZiBDUFUoWDg2XzY0KSAmJiBPUyhXSU5E
T1dTKQpAQCAtNTA5LDQwICs0OTksNDggQEAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gbmF0aXZlRm9yR2VuZXJhdG9yKFZNJiB2bSwgVGh1bmtGdW4KICAgICBy
ZXR1cm4gRklOQUxJWkVfVEhVTksocGF0Y2hCdWZmZXIsIEpJVFRodW5rUHRyVGFnLCAiJXMgJXMl
cyVzIHRyYW1wb2xpbmUiLCB0aHVua0Z1bmN0aW9uVHlwZSA9PSBUaHVua0Z1bmN0aW9uVHlwZTo6
SlNGdW5jdGlvbiA/ICJuYXRpdmUiIDogImludGVybmFsIiwgZW50cnlUeXBlID09IEVudGVyVmlh
SnVtcFdpdGhTYXZlZFRhZ3MgPyAiVGFpbCBXaXRoIFNhdmVkIFRhZ3MgIiA6IGVudHJ5VHlwZSA9
PSBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzID8gIlRhaWwgV2l0aG91dCBTYXZlZCBUYWdz
ICIgOiAiIiwgdG9DU3RyaW5nKGtpbmQpLmRhdGEoKSwgaW5jbHVkZURlYnVnZ2VySG9vayA9PSBJ
bmNsdWRlRGVidWdnZXJIb29rOjpZZXMgPyAiIERlYnVnZ2VyIiA6ICIiKTsKIH0KIAotTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNJiB2
bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNJiB2bSkKIHsK
LSAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBUaHVua0Z1bmN0aW9uVHlwZTo6SlNG
dW5jdGlvbiwgQ29kZUZvckNhbGwsIEVudGVyVmlhQ2FsbCwgaW5jbHVkZURlYnVnZ2VySG9vayk7
CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgVGh1bmtGdW5jdGlvblR5cGU6OkpT
RnVuY3Rpb24sIENvZGVGb3JDYWxsKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dl
ckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gbmF0aXZlQ2FsbFdpdGhEZWJ1Z2dlckhvb2tHZW5lcmF0b3IoVk0mIHZtKQogewot
ICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIFRodW5rRnVuY3Rpb25UeXBlOjpKU0Z1
bmN0aW9uLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFKdW1wV2l0aFNhdmVkVGFncywgaW5jbHVkZURl
YnVnZ2VySG9vayk7CisgICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgVGh1bmtGdW5j
dGlvblR5cGU6OkpTRnVuY3Rpb24sIENvZGVGb3JDYWxsLCBFbnRlclZpYUNhbGwsIEluY2x1ZGVE
ZWJ1Z2dlckhvb2s6Olllcyk7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9yKFZNJiB2bSwgSW5j
bHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiB7Ci0g
ICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVu
Y3Rpb24sIENvZGVGb3JDYWxsLCBFbnRlclZpYUp1bXBXaXRob3V0U2F2ZWRUYWdzLCBpbmNsdWRl
RGVidWdnZXJIb29rKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBUaHVua0Z1
bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhTYXZl
ZFRhZ3MpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2
ZUNvbnN0cnVjdEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURl
YnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZl
VGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICByZXR1cm4g
bmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiwgQ29k
ZUZvckNvbnN0cnVjdCwgRW50ZXJWaWFDYWxsLCBpbmNsdWRlRGVidWdnZXJIb29rKTsKKyAgICBy
ZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlv
biwgQ29kZUZvckNhbGwsIEVudGVyVmlhSnVtcFdpdGhvdXRTYXZlZFRhZ3MpOwogfQogCi1NYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGludGVybmFsRnVuY3Rpb25DYWxsR2Vu
ZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVDb25zdHJ1Y3RHZW5l
cmF0b3IoVk0mIHZtKQogewotICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIFRodW5r
RnVuY3Rpb25UeXBlOjpJbnRlcm5hbEZ1bmN0aW9uLCBDb2RlRm9yQ2FsbCwgRW50ZXJWaWFDYWxs
LCBpbmNsdWRlRGVidWdnZXJIb29rKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZt
LCBUaHVua0Z1bmN0aW9uVHlwZTo6SlNGdW5jdGlvbiwgQ29kZUZvckNvbnN0cnVjdCk7CiB9CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW50ZXJuYWxGdW5jdGlvbkNv
bnN0cnVjdEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVn
Z2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlQ29u
c3RydWN0V2l0aERlYnVnZ2VySG9va0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgcmV0dXJuIG5h
dGl2ZUZvckdlbmVyYXRvcih2bSwgVGh1bmtGdW5jdGlvblR5cGU6OkludGVybmFsRnVuY3Rpb24s
IENvZGVGb3JDb25zdHJ1Y3QsIEVudGVyVmlhQ2FsbCwgaW5jbHVkZURlYnVnZ2VySG9vayk7Cisg
ICAgcmV0dXJuIG5hdGl2ZUZvckdlbmVyYXRvcih2bSwgVGh1bmtGdW5jdGlvblR5cGU6OkpTRnVu
Y3Rpb24sIENvZGVGb3JDb25zdHJ1Y3QsIEVudGVyVmlhQ2FsbCwgSW5jbHVkZURlYnVnZ2VySG9v
azo6WWVzKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0
eUZpeHVwR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdn
ZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBpbnRlcm5hbEZ1
bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbmNsdWRl
RGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6
Ok5vKTsKKyAgICByZXR1cm4gbmF0aXZlRm9yR2VuZXJhdG9yKHZtLCBUaHVua0Z1bmN0aW9uVHlw
ZTo6SW50ZXJuYWxGdW5jdGlvbiwgQ29kZUZvckNhbGwpOworfQogCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3RHZW5lcmF0b3Io
Vk0mIHZtKQoreworICAgIHJldHVybiBuYXRpdmVGb3JHZW5lcmF0b3Iodm0sIFRodW5rRnVuY3Rp
b25UeXBlOjpJbnRlcm5hbEZ1bmN0aW9uLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNJiB2
bSkKK3sKICAgICBKU0ludGVyZmFjZUpJVCBqaXQoJnZtKTsKIAogICAgIC8vIFdlIGVudGVyIHdp
dGggZml4dXAgY291bnQgaW4gYXJndW1lbnRHUFIwCkBAIC02OTAsMTAgKzY4OCw4IEBAIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSYg
dm0sIEluY2x1ZGVEZWJ1Z2dlCiAgICAgcmV0dXJuIEZJTkFMSVpFX1RIVU5LKHBhdGNoQnVmZmVy
LCBKSVRUaHVua1B0clRhZywgImZpeHVwIGFyaXR5Iik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gdW5yZWFjaGFibGVHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRl
RGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IHVucmVhY2hhYmxlR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKGluY2x1ZGVEZWJ1Z2dlckhvb2ssIGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5j
bHVkZURlYnVnZ2VySG9vazo6Tm8pOwotCiAgICAgSlNJbnRlcmZhY2VKSVQgaml0KCZ2bSk7CiAK
ICAgICBqaXQuYnJlYWtwb2ludCgpOwpAQCAtNzAyLDEwICs2OTgsOCBAQCBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHVucmVhY2hhYmxlR2VuZXJhdG9yKFZNJiB2bSwgSW5j
bHVkZURlYnVnZwogICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhwYXRjaEJ1ZmZlciwgSklUVGh1
bmtQdHJUYWcsICJ1bnJlYWNoYWJsZSB0aHVuayIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVk
ZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBzdHJpbmdHZXRCeVZhbEdlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAg
QVNTRVJUX1VOVVNFRChpbmNsdWRlRGVidWdnZXJIb29rLCBpbmNsdWRlRGVidWdnZXJIb29rID09
IEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKLQogICAgIC8vIHJlZ1QwIGlzIEpTU3RyaW5nKiwg
YW5kIHJlZ1QxICg2NGJpdCkgb3IgcmVnVDIgKDMyYml0KSBpcyBpbnQgaW5kZXguCiAgICAgLy8g
UmV0dXJuIHJlZ1QwID0gcmVzdWx0IEpTU3RyaW5nKiBpZiBzdWNjZWVkcy4gT3RoZXJ3aXNlLCBy
ZXR1cm4gcmVnVDAgPSAwLgogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC03OTMsNTkgKzc4NywzNiBA
QCBzdGF0aWMgdm9pZCBjaGFyVG9TdHJpbmcoU3BlY2lhbGl6ZWRUaHVua0pJVCYgaml0LCBWTSYg
dm0sIE1hY3JvQXNzZW1ibGVyOjpSZWdpcwogICAgIGppdC5hcHBlbmRGYWlsdXJlKGppdC5icmFu
Y2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBkc3QpKTsKIH0KIAotTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGFyQ29kZUF0VGh1bmtHZW5lcmF0b3IoVk0mIHZt
LCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSYgdm0p
CiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0pOwotCi0gICAgaWYgKGluY2x1ZGVE
ZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAgICBqaXQuZW1p
dERlYnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMSk7Ci0KKyAgICBTcGVj
aWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgc3RyaW5nQ2hhckxvYWQoaml0KTsKICAg
ICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwotICAgIHJldHVy
biBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtLCBpbmNsdWRl
RGVidWdnZXJIb29rKSwgImNoYXJDb2RlQXQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZt
LmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQ29kZUF0Iik7CiB9CiAKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2hhckF0VGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNJiB2
bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSk7Ci0KLSAgICBpZiAoaW5jbHVk
ZURlYnVnZ2VySG9vayA9PSBJbmNsdWRlRGVidWdnZXJIb29rOjpZZXMpCi0gICAgICAgIGppdC5l
bWl0RGVidWdnZXJIb29rKCk7Ci0KLSAgICBqaXQuY2hlY2tBcmdDb3VudCgxKTsKLQorICAgIFNw
ZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBzdHJpbmdDaGFyTG9hZChqaXQpOwog
ICAgIGNoYXJUb1N0cmluZyhqaXQsIHZtLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCwgU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxKTsKICAg
ICBqaXQucmV0dXJuSlNDZWxsKFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKLSAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVk
ZURlYnVnZ2VySG9vayksICJjaGFyQXQiKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmpp
dFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjaGFyQXQiKTsKIH0KIAotTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihW
TSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtKTsKLQotICAgIGlmIChp
bmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykKLSAgICAgICAg
aml0LmVtaXREZWJ1Z2dlckhvb2soKTsKLQotICAgIGppdC5jaGVja0FyZ0NvdW50KDEpOwotCisg
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIC8vIGxvYWQgY2hhciBjb2Rl
CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1Qw
KTsKICAgICBjaGFyVG9TdHJpbmcoaml0LCB2bSwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMSk7
CiAgICAgaml0LnJldHVybkpTQ2VsbChTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7Ci0gICAg
cmV0dXJuIGppdC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0sIGlu
Y2x1ZGVEZWJ1Z2dlckhvb2spLCAiZnJvbUNoYXJDb2RlIik7CisgICAgcmV0dXJuIGppdC5maW5h
bGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiZnJvbUNoYXJDb2RlIik7
CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gc3RyaW5nUHJvdG90
eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sg
aW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gc3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXRUaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0g
ICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0pOwotCi0gICAgaWYgKGluY2x1ZGVEZWJ1Z2dl
ckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAgICBqaXQuZW1pdERlYnVn
Z2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMSk7CisgICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0sIDEpOwogCiAgICAgLy8gbG9hZCBzdHJpbmcKICAgICBqaXQubG9hZEpT
U3RyaW5nQXJndW1lbnQoU3BlY2lhbGl6ZWRUaHVua0pJVDo6VGhpc0FyZ3VtZW50LCBHUFJJbmZv
OjpyZWdUMCk7CkBAIC04ODQsMTggKzg1NSwxMiBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0VGh1bmtHZW5lcmF0b3IoVgog
ICAgIGRvbmUubGluaygmaml0KTsKIAogICAgIGppdC5yZXR1cm5JbnQzMihHUFJJbmZvOjpyZWdU
MCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENh
bGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2spLCAiY29kZVBvaW50QXQiKTsKKyAgICByZXR1cm4g
aml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJjb2RlUG9p
bnRBdCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNsejMy
VGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dl
ckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNsejMyVGh1bmtH
ZW5lcmF0b3IoVk0mIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtKTsKLQot
ICAgIGlmIChpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykK
LSAgICAgICAgaml0LmVtaXREZWJ1Z2dlckhvb2soKTsKLQotICAgIGppdC5jaGVja0FyZ0NvdW50
KDEpOwotCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG5vbkludEFyZ0p1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAs
IFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRBcmdKdW1wKTsKIApAQCAtOTExLDI1
ICs4NzYsMTkgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjbHozMlRo
dW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2UKICAgICB9IGVsc2UKICAgICAgICAg
aml0LmFwcGVuZEZhaWx1cmUobm9uSW50QXJnSnVtcCk7CiAKLSAgICByZXR1cm4gaml0LmZpbmFs
aXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9v
ayksICJjbHozMiIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5h
dGl2ZVRhaWxDYWxsKHZtKSwgImNsejMyIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gc3FydFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2Vy
SG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQgaml0KHZtKTsKLQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAg
ICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCi0gICAgICAgIHJldHVybiBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2sp
KTsKLQotICAgIGlmIChpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6
OlllcykKLSAgICAgICAgaml0LmVtaXREZWJ1Z2dlckhvb2soKTsKLQotICAgIGppdC5jaGVja0Fy
Z0NvdW50KDEpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVD
YWxsKHZtKSk7CiAKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1
bmtKSVQ6OmZwUmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuc3Fy
dERvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklU
OjpmcFJlZ1QwKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDApOwotICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRh
aWxDYWxsKHZtLCBpbmNsdWRlRGVidWdnZXJIb29rKSwgInNxcnQiKTsKKyAgICByZXR1cm4gaml0
LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJzcXJ0Iik7CiB9
CiAKIApAQCAtMTA4OCwxOSArMTA0NywxMiBAQCBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihm
bG9vcik7CiBkZWZpbmVVbmFyeURvdWJsZU9wV3JhcHBlcihjZWlsKTsKIGRlZmluZVVuYXJ5RG91
YmxlT3BXcmFwcGVyKHRydW5jKTsKICAgICAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gZmxvb3JUaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sg
aW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gZmxvb3JUaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRUaHVua0pJ
VCBqaXQodm0pOwotCi0gICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihmbG9vcikgfHwgIWpp
dC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOwotCi0gICAgaWYg
KGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAg
ICBqaXQuZW1pdERlYnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMSk7Ci0K
KyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm9uSW50SnVtcDsKKyAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGZsb29yKSB8
fCAhaml0LnN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQorICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZt
LmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50
KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0
dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwogICAgIG5vbkludEp1bXAubGlu
aygmaml0KTsKQEAgLTExMTMsNyArMTA2NSw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gZmxvb3JUaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlCiAg
ICAgICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAg
ICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgICAgICBqaXQucmV0dXJuRG91YmxlKFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgICAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vayks
ICJmbG9vciIpOworICAgICAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlO
YXRpdmVUYWlsQ2FsbCh2bSksICJmbG9vciIpOwogICAgIH0KIAogICAgIFNwZWNpYWxpemVkVGh1
bmtKSVQ6Okp1bXAgaW50UmVzdWx0OwpAQCAtMTEzNSwyMSArMTA4NywxNCBAQCBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZsb29yVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBJ
bmNsdWRlRGVidWdnZQogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklUOjpy
ZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJldHVybkRvdWJs
ZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFsaXpl
KHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vayks
ICJmbG9vciIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2
ZVRhaWxDYWxsKHZtKSwgImZsb29yIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gY2VpbFRodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9v
ayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQgaml0KHZtKTsKLQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAxKTsKICAgICBp
ZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGNlaWwpIHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1Bv
aW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwo
dm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2spKTsKLQotICAgIGlmIChpbmNsdWRlRGVidWdnZXJIb29r
ID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykKLSAgICAgICAgaml0LmVtaXREZWJ1Z2dlckhv
b2soKTsKLQotICAgIGppdC5jaGVja0FyZ0NvdW50KDEpOwotCisgICAgICAgIHJldHVybiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBub25JbnRKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCwgbm9uSW50SnVtcCk7CiAgICAgaml0LnJldHVybkludDMyKFNwZWNp
YWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKQEAgLTExNjUsMjEgKzExMTAsMTQgQEAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBJ
bmNsdWRlRGVidWdnZXIKICAgICBqaXQucmV0dXJuSW50MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6
cmVnVDApOwogICAgIGRvdWJsZVJlc3VsdC5saW5rKCZqaXQpOwogICAgIGppdC5yZXR1cm5Eb3Vi
bGUoU3BlY2lhbGl6ZWRUaHVua0pJVDo6ZnBSZWdUMCk7Ci0gICAgcmV0dXJuIGppdC5maW5hbGl6
ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2sp
LCAiY2VpbCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2
ZVRhaWxDYWxsKHZtKSwgImNlaWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9v
ayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRy
VGFnPiB0cnVuY1RodW5rR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBTcGVjaWFsaXplZFRodW5r
SklUIGppdCh2bSk7Ci0KKyAgICBTcGVjaWFsaXplZFRodW5rSklUIGppdCh2bSwgMSk7CiAgICAg
aWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcih0cnVuYykgfHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5n
UG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2Fs
bCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOwotCi0gICAgaWYgKGluY2x1ZGVEZWJ1Z2dlckhv
b2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAgICBqaXQuZW1pdERlYnVnZ2Vy
SG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMSk7Ci0KKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNwZWNpYWxp
emVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50MzIoU3Bl
Y2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtMTE5NSwyMSArMTEzMywxNCBAQCBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5lcmF0b3IoVk0mIHZt
LCBJbmNsdWRlRGVidWdnZQogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRodW5rSklU
OjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJldHVybkRv
dWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0LmZpbmFs
aXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9v
ayksICJ0cnVuYyIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5h
dGl2ZVRhaWxDYWxsKHZtKSwgInRydW5jIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gcm91bmRUaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dl
ckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gcm91bmRUaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgU3BlY2lhbGl6ZWRU
aHVua0pJVCBqaXQodm0pOwotCisgICAgU3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDEpOwog
ICAgIGlmICghVW5hcnlEb3VibGVPcFdyYXBwZXIoanNSb3VuZCkgfHwgIWppdC5zdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOwotCi0gICAgaWYgKGluY2x1ZGVEZWJ1
Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAgICBqaXQuZW1pdERl
YnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMSk7Ci0KKyAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSkpOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIG5vbkludEp1bXA7CiAgICAgaml0LmxvYWRJbnQzMkFyZ3VtZW50KDAsIFNw
ZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwLCBub25JbnRKdW1wKTsKICAgICBqaXQucmV0dXJuSW50
MzIoU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDApOwpAQCAtMTI0MSw1NiArMTE3Miw0MCBAQCBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJvdW5kVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBJbmNsdWRlRGVidWdnZQogICAgIGppdC5yZXR1cm5JbnQzMihTcGVjaWFsaXplZFRo
dW5rSklUOjpyZWdUMCk7CiAgICAgZG91YmxlUmVzdWx0LmxpbmsoJmppdCk7CiAgICAgaml0LnJl
dHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1cm4gaml0
LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVn
Z2VySG9vayksICJyb3VuZCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMt
PmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgInJvdW5kIik7CiB9CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gZXhwVGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVi
dWdnZXJIb29rIGluY2x1ZGVEZWJ1Z2dlckhvb2spCitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGV4cFRodW5rR2VuZXJhdG9yKFZNJiB2bSkKIHsKLSAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCh2bSk7Ci0KLSAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkg
fHwgIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2
bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOwotCi0g
ICAgaWYgKGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQot
ICAgICAgICBqaXQuZW1pdERlYnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQo
MSk7Ci0KKyAgICBpZiAoIVVuYXJ5RG91YmxlT3BXcmFwcGVyKGV4cCkpCisgICAgICAgIHJldHVy
biBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKKyAgICBTcGVjaWFsaXpl
ZFRodW5rSklUIGppdCh2bSwgMSk7CisgICAgaWYgKCFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50
KCkpCisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0p
KTsKICAgICBqaXQubG9hZERvdWJsZUFyZ3VtZW50KDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZw
UmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QwKTsKICAgICBqaXQuY2FsbERvdWJsZVRv
RG91YmxlUHJlc2VydmluZ1JldHVybihVbmFyeURvdWJsZU9wV3JhcHBlcihleHApKTsKICAgICBq
aXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDApOwotICAgIHJldHVy
biBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtLCBpbmNsdWRl
RGVidWdnZXJIb29rKSwgImV4cCIpOworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1
YnMtPmN0aU5hdGl2ZVRhaWxDYWxsKHZtKSwgImV4cCIpOwogfQogCi1NYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxvZ1RodW5rR2VuZXJhdG9yKFZNJiB2bSwgSW5jbHVkZURl
YnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJ
VFRodW5rUHRyVGFnPiBsb2dUaHVua0dlbmVyYXRvcihWTSYgdm0pCiB7Ci0gICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0pOwotCi0gICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cp
IHx8ICFqaXQuc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCi0gICAgICAgIHJldHVybiBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
dm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2spKTsKLQot
ICAgIGlmIChpbmNsdWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykK
LSAgICAgICAgaml0LmVtaXREZWJ1Z2dlckhvb2soKTsKLQotICAgIGppdC5jaGVja0FyZ0NvdW50
KDEpOwotCisgICAgaWYgKCFVbmFyeURvdWJsZU9wV3JhcHBlcihsb2cpKQorICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZtKSk7CisgICAgU3BlY2lhbGl6
ZWRUaHVua0pJVCBqaXQodm0sIDEpOworICAgIGlmICghaml0LnN1cHBvcnRzRmxvYXRpbmdQb2lu
dCgpKQorICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
Pjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVDYWxsKHZt
KSk7CiAgICAgaml0LmxvYWREb3VibGVBcmd1bWVudCgwLCBTcGVjaWFsaXplZFRodW5rSklUOjpm
cFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpyZWdUMCk7CiAgICAgaml0LmNhbGxEb3VibGVU
b0RvdWJsZVByZXNlcnZpbmdSZXR1cm4oVW5hcnlEb3VibGVPcFdyYXBwZXIobG9nKSk7CiAgICAg
aml0LnJldHVybkRvdWJsZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwKTsKLSAgICByZXR1
cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVk
ZURlYnVnZ2VySG9vayksICJsb2ciKTsKKyAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmppdFN0
dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSksICJsb2ciKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYnNUaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVE
ZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxK
SVRUaHVua1B0clRhZz4gYWJzVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIFNwZWNpYWxp
emVkVGh1bmtKSVQgaml0KHZtKTsKLQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAx
KTsKICAgICBpZiAoIWppdC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSkKLSAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2Vy
SG9vaykpOwotCi0gICAgaWYgKGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2Vy
SG9vazo6WWVzKQotICAgICAgICBqaXQuZW1pdERlYnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNo
ZWNrQXJnQ291bnQoMSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5h
dGl2ZUNhbGwodm0pKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWdpc3RlciA9IENhbGxGcmFtZVNsb3Q6OmZpcnN0QXJndW1lbnQ7CkBAIC0xMzQw
LDE4ICsxMjU1LDEyIEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYWJz
VGh1bmtHZW5lcmF0b3IoVk0mIHZtLCBJbmNsdWRlRGVidWdnZXJICiAgICAgaml0LmFic0RvdWJs
ZShTcGVjaWFsaXplZFRodW5rSklUOjpmcFJlZ1QwLCBTcGVjaWFsaXplZFRodW5rSklUOjpmcFJl
Z1QxKTsKICAgICBqaXQucmV0dXJuRG91YmxlKFNwZWNpYWxpemVkVGh1bmtKSVQ6OmZwUmVnVDEp
OwogI2VuZGlmCi0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZl
VGFpbENhbGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2spLCAiYWJzIik7CisgICAgcmV0dXJuIGpp
dC5maW5hbGl6ZSh2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0pLCAiYWJzIik7CiB9
CiAKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW11bFRodW5rR2VuZXJh
dG9yKFZNJiB2bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0m
IHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtKTsKLQotICAgIGlmIChpbmNs
dWRlRGVidWdnZXJIb29rID09IEluY2x1ZGVEZWJ1Z2dlckhvb2s6OlllcykKLSAgICAgICAgaml0
LmVtaXREZWJ1Z2dlckhvb2soKTsKLQotICAgIGppdC5jaGVja0FyZ0NvdW50KDIpOwotCisgICAg
U3BlY2lhbGl6ZWRUaHVua0pJVCBqaXQodm0sIDIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IG5vbkludEFyZzBKdW1wOwogICAgIGppdC5sb2FkSW50MzJBcmd1bWVudCgwLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMCwgbm9uSW50QXJnMEp1bXApOwogICAgIFNwZWNpYWxpemVkVGh1bmtK
SVQ6OkxhYmVsIGRvbmVMb2FkaW5nQXJnMCgmaml0KTsKQEAgLTEzNzcsMzIgKzEyODYsMjYgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBpbXVsVGh1bmtHZW5lcmF0b3Io
Vk0mIHZtLCBJbmNsdWRlRGVidWdnZXIKICAgICB9IGVsc2UKICAgICAgICAgaml0LmFwcGVuZEZh
aWx1cmUobm9uSW50QXJnMUp1bXApOwogCi0gICAgcmV0dXJuIGppdC5maW5hbGl6ZSh2bS5qaXRT
dHVicy0+Y3RpTmF0aXZlVGFpbENhbGwodm0sIGluY2x1ZGVEZWJ1Z2dlckhvb2spLCAiaW11bCIp
OworICAgIHJldHVybiBqaXQuZmluYWxpemUodm0uaml0U3R1YnMtPmN0aU5hdGl2ZVRhaWxDYWxs
KHZtKSwgImltdWwiKTsKIH0KIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiByYW5kb21UaHVua0dlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVk
ZURlYnVnZ2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmFu
ZG9tVGh1bmtHZW5lcmF0b3IoVk0mIHZtKQogewotICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0
KHZtKTsKLQorICAgIFNwZWNpYWxpemVkVGh1bmtKSVQgaml0KHZtLCAwKTsKICAgICBpZiAoIWpp
dC5zdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS5qaXRT
dHVicy0+Y3RpTmF0aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOwotCi0gICAgaWYg
KGluY2x1ZGVEZWJ1Z2dlckhvb2sgPT0gSW5jbHVkZURlYnVnZ2VySG9vazo6WWVzKQotICAgICAg
ICBqaXQuZW1pdERlYnVnZ2VySG9vaygpOwotCi0gICAgaml0LmNoZWNrQXJnQ291bnQoMCk7Cisg
ICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYodm0uaml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaml0LmVtaXRSYW5kb21UaHVuayh2bSwgU3BlY2lhbGl6
ZWRUaHVua0pJVDo6cmVnVDAsIFNwZWNpYWxpemVkVGh1bmtKSVQ6OnJlZ1QxLCBTcGVjaWFsaXpl
ZFRodW5rSklUOjpyZWdUMiwgU3BlY2lhbGl6ZWRUaHVua0pJVDo6cmVnVDMsIFNwZWNpYWxpemVk
VGh1bmtKSVQ6OmZwUmVnVDApOwogICAgIGppdC5yZXR1cm5Eb3VibGUoU3BlY2lhbGl6ZWRUaHVu
a0pJVDo6ZnBSZWdUMCk7CiAKLSAgICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5j
dGlOYXRpdmVUYWlsQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vayksICJyYW5kb20iKTsKKyAg
ICByZXR1cm4gaml0LmZpbmFsaXplKHZtLmppdFN0dWJzLT5jdGlOYXRpdmVUYWlsQ2FsbCh2bSks
ICJyYW5kb20iKTsKICNlbHNlCi0gICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz46OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZih2bS5qaXRTdHVicy0+Y3RpTmF0
aXZlQ2FsbCh2bSwgaW5jbHVkZURlYnVnZ2VySG9vaykpOworICAgIHJldHVybiBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYodm0u
aml0U3R1YnMtPmN0aU5hdGl2ZUNhbGwodm0pKTsKICNlbmRpZgogfQogCi1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2
bSwgSW5jbHVkZURlYnVnZ2VySG9vayBpbmNsdWRlRGVidWdnZXJIb29rKQorTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYg
dm0pCiB7CiAgICAgQ0NhbGxIZWxwZXJzIGppdDsKICAgICAKQEAgLTE1MzIsMTEgKzE0MzUsMTEg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBib3VuZEZ1bmN0aW9uQ2Fs
bEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGUKICAgICBqaXQucmV0KCk7CiAgICAgCiAgICAgTGlu
a0J1ZmZlciBsaW5rQnVmZmVyKGppdCwgR0xPQkFMX1RIVU5LX0lELCBMaW5rQnVmZmVyOjpQcm9m
aWxlOjpCb3VuZEZ1bmN0aW9uVGh1bmspOwotICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENv
ZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFp
bENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtLCBpbmNsdWRlRGVidWdnZXJIb29rKSkpOworICAgIGxp
bmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2
bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtKSkpOwogICAg
IHJldHVybiBGSU5BTElaRV9USFVOSyhsaW5rQnVmZmVyLCBKSVRUaHVua1B0clRhZywgIlNwZWNp
YWxpemVkIHRodW5rIGZvciBib3VuZCBmdW5jdGlvbiBjYWxscyB3aXRoIG5vIGFyZ3VtZW50cyIp
OwogfQogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHJlbW90ZUZ1bmN0
aW9uQ2FsbEdlbmVyYXRvcihWTSYgdm0sIEluY2x1ZGVEZWJ1Z2dlckhvb2sgaW5jbHVkZURlYnVn
Z2VySG9vaykKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVu
Y3Rpb25DYWxsR2VuZXJhdG9yKFZNJiB2bSkKIHsKICAgICBDQ2FsbEhlbHBlcnMgaml0OwogICAg
IGppdC5lbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwpAQCAtMTczNiw3ICsxNjM5LDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiByZW1vdGVGdW5jdGlvbkNhbGxHZW5lcmF0
b3IoVk0mIHZtLCBJbmNsdWQKICAgICBqaXQuanVtcFRvRXhjZXB0aW9uSGFuZGxlcih2bSk7CiAK
ICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIoaml0LCBHTE9CQUxfVEhVTktfSUQsIExpbmtCdWZm
ZXI6OlByb2ZpbGU6OlJlbW90ZUZ1bmN0aW9uVGh1bmspOwotICAgIGxpbmtCdWZmZXIubGluayhu
b0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5rUHRyVGFnPih2bS5qaXRTdHVicy0+Y3Rp
TmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZtLCBpbmNsdWRlRGVidWdnZXJIb29rKSkp
OworICAgIGxpbmtCdWZmZXIubGluayhub0NvZGUsIENvZGVMb2NhdGlvbkxhYmVsPEpJVFRodW5r
UHRyVGFnPih2bS5qaXRTdHVicy0+Y3RpTmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzKHZt
KSkpOwogICAgIHJldHVybiBGSU5BTElaRV9USFVOSyhsaW5rQnVmZmVyLCBKSVRUaHVua1B0clRh
ZywgIlNwZWNpYWxpemVkIHRodW5rIGZvciByZW1vdGUgZnVuY3Rpb24gY2FsbHMiKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgKaW5kZXggNGJlYjNh
ZTYwOTVmLi40ZDM4MzFiMTkyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvVGh1bmtHZW5lcmF0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuaApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkNhbGxNb2RlLmgiCiAj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5o
IgotI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9yLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0z
OSw0OCArMzgsNTAgQEAgZW51bSBjbGFzcyBDYWxsTW9kZTsKIHRlbXBsYXRlPFB0clRhZz4gY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogY2xhc3MgVk07CiAKLU1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gaGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiwgSW5jbHVk
ZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhh
bmRsZUV4Y2VwdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja0dlbmVyYXRvcihWTSYsIEluY2x1ZGVE
ZWJ1Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBwb3BU
aHVua1N0YWNrUHJlc2VydmVzQW5kSGFuZGxlRXhjZXB0aW9uR2VuZXJhdG9yKFZNJiwgSW5jbHVk
ZURlYnVnZ2VySG9vayk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGhh
bmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBoYW5kbGVFeGNlcHRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tHZW5lcmF0b3Io
Vk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcG9wVGh1bmtTdGFj
a1ByZXNlcnZlc0FuZEhhbmRsZUV4Y2VwdGlvbkdlbmVyYXRvcihWTSYpOwogCi1NYWNyb0Fzc2Vt
YmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93UGF0
aEdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFRodW5rUHRyVGFnPiB0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0
b3IoVk0mKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsaW5rQ2Fs
bFRodW5rR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxl
ckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRv
cihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBsaW5rQ2FsbFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGxpbmtQb2x5bW9ycGhpY0NhbGxUaHVua0dlbmVyYXRvcihW
TSYpOwogCiBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUU3R1YlJvdXRpbmVQdHJUYWc+IHZpcnR1
YWxUaHVua0ZvcihWTSYsIENhbGxNb2RlKTsKIAotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBuYXRpdmVDYWxsR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUNvbnN0cnVjdEdl
bmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBuYXRpdmVUYWlsQ2FsbEdlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1
Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBuYXRpdmVU
YWlsQ2FsbFdpdGhvdXRTYXZlZFRhZ3NHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29r
KTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW50ZXJuYWxGdW5jdGlv
bkNhbGxHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVjdEdlbmVyYXRv
cihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBhcml0eUZpeHVwR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7
Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHVucmVhY2hhYmxlR2VuZXJh
dG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IHN0cmluZ0dldEJ5VmFsR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2Vy
SG9vayk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUNhbGxH
ZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0
aXZlQ2FsbFdpdGhEZWJ1Z2dlckhvb2tHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlQ29uc3RydWN0R2VuZXJhdG9yKFZNJik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IG5hdGl2ZUNvbnN0cnVjdFdpdGhEZWJ1
Z2dlckhvb2tHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0
clRhZz4gbmF0aXZlVGFpbENhbGxHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxKSVRUaHVua1B0clRhZz4gbmF0aXZlVGFpbENhbGxXaXRob3V0U2F2ZWRUYWdzR2VuZXJhdG9y
KFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGludGVybmFsRnVu
Y3Rpb25DYWxsR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IGludGVybmFsRnVuY3Rpb25Db25zdHJ1Y3RHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gYXJpdHlGaXh1cEdlbmVyYXRvcihWTSYpOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiB1bnJlYWNoYWJsZUdlbmVyYXRv
cihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBzdHJpbmdHZXRC
eVZhbEdlbmVyYXRvcihWTSYpOwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGNoYXJDb2RlQXRUaHVua0dlbmVyYXRvcihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwot
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjaGFyQXRUaHVua0dlbmVyYXRv
cihWTSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBzdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdFRodW5rR2VuZXJhdG9yKFZNJiwg
SW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IGNsejMyVGh1bmtHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZnJvbUNoYXJDb2RlVGh1bmtHZW5lcmF0
b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRU
aHVua1B0clRhZz4gYWJzVGh1bmtHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gY2VpbFRodW5rR2VuZXJhdG9y
KFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IGV4cFRodW5rR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGZsb29yVGh1bmtHZW5lcmF0b3Io
Vk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gbG9nVGh1bmtHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcm91bmRUaHVua0dlbmVyYXRvcihW
TSYsIEluY2x1ZGVEZWJ1Z2dlckhvb2spOwotTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5r
UHRyVGFnPiBzcXJ0VGh1bmtHZW5lcmF0b3IoVk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKLU1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gaW11bFRodW5rR2VuZXJhdG9yKFZN
JiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IHJhbmRvbVRodW5rR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7Ci1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHRydW5jVGh1bmtHZW5lcmF0b3Io
Vk0mLCBJbmNsdWRlRGVidWdnZXJIb29rKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVu
a1B0clRhZz4gY2hhckNvZGVBdFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoYXJBdFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IHN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0
VGh1bmtHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRh
Zz4gY2x6MzJUaHVua0dlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRo
dW5rUHRyVGFnPiBmcm9tQ2hhckNvZGVUaHVua0dlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYnNUaHVua0dlbmVyYXRvcihWTSYpOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBjZWlsVGh1bmtHZW5lcmF0b3IoVk0mKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZXhwVGh1bmtHZW5lcmF0b3Io
Vk0mKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gZmxvb3JUaHVua0dl
bmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBsb2dU
aHVua0dlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFn
PiByb3VuZFRodW5rR2VuZXJhdG9yKFZNJik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1
bmtQdHJUYWc+IHNxcnRUaHVua0dlbmVyYXRvcihWTSYpOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
PEpJVFRodW5rUHRyVGFnPiBpbXVsVGh1bmtHZW5lcmF0b3IoVk0mKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmFuZG9tVGh1bmtHZW5lcmF0b3IoVk0mKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gdHJ1bmNUaHVua0dlbmVyYXRvcihWTSYp
OwogCi1NYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25D
YWxsR2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY8SklUVGh1bmtQdHJUYWc+IGJvdW5kRnVuY3Rpb25DYWxsR2VuZXJhdG9yKFZNJik7CiAK
LU1hY3JvQXNzZW1ibGVyQ29kZVJlZjxKSVRUaHVua1B0clRhZz4gcmVtb3RlRnVuY3Rpb25DYWxs
R2VuZXJhdG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY8SklUVGh1bmtQdHJUYWc+IHJlbW90ZUZ1bmN0aW9uQ2FsbEdlbmVyYXRvcihWTSYpOwogCi1N
YWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJh
dG9yKFZNJiwgSW5jbHVkZURlYnVnZ2VySG9vayk7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklU
VGh1bmtQdHJUYWc+IGNoZWNrRXhjZXB0aW9uR2VuZXJhdG9yKFZNJik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKaW5kZXggYTRhZjg1ODg4YTRkLi4xNGFhMTU1MzU5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTU3Nyw3ICs1NzcsNyBAQCBFeGNlcHRpb24qIFZNOjplbnN1
cmVUZXJtaW5hdGlvbkV4Y2VwdGlvbigpCiB9CiAKICNpZiBFTkFCTEUoSklUKQotVGh1bmtHZW5l
cmF0b3IgVk06OnRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKEludHJpbnNpYyBpbnRyaW5zaWMp
CitzdGF0aWMgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmlu
c2ljIGludHJpbnNpYykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2UgQ2hh
ckNvZGVBdEludHJpbnNpYzoKQEAgLTYyMSw3ICs2MjEsNyBAQCBUaHVua0dlbmVyYXRvciBWTTo6
dGh1bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljIGludHJpbnNpYykKIAogTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBWTTo6Z2V0Q1RJU3R1YihUaHVua0dlbmVy
YXRvciBnZW5lcmF0b3IpCiB7Ci0gICAgcmV0dXJuIGppdFN0dWJzLT5jdGlTdHViKCp0aGlzLCBn
ZW5lcmF0b3IsIEluY2x1ZGVEZWJ1Z2dlckhvb2s6Ok5vKTsKKyAgICByZXR1cm4gaml0U3R1YnMt
PmN0aVN0dWIoKnRoaXMsIGdlbmVyYXRvcik7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpA
QCAtNjU3LDcgKzY1Nyw3IEBAIE5hdGl2ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24o
TmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEltcGxlbWVudGF0aW9uVmlzCiAgICAgaWYgKE9wdGlv
bnM6OnVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVybiBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1
YigKICAgICAgICAgICAgICp0aGlzLCB0b1RhZ2dlZChmdW5jdGlvbiksIHRvVGFnZ2VkKGNvbnN0
cnVjdG9yKSwKLSAgICAgICAgICAgIHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJpbnNp
YyksCisgICAgICAgICAgICBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0aHVua0dlbmVyYXRv
ckZvckludHJpbnNpYyhpbnRyaW5zaWMpIDogbnVsbHB0ciwKICAgICAgICAgICAgIGltcGxlbWVu
dGF0aW9uVmlzaWJpbGl0eSwgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUpOwogICAgIH0KICNl
bmRpZiAvLyBFTkFCTEUoSklUKQpAQCAtNzI0LDggKzcyNCw4IEBAIENvZGVQdHI8SlNFbnRyeVB0
clRhZz4gVk06OmdldENUSUludGVybmFsRnVuY3Rpb25UcmFtcG9saW5lRm9yKENvZGVTcGVjaWFs
aXphdGlvCiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoT3B0aW9uczo6dXNlSklUKCkpIHsKICAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpCi0gICAgICAgICAgICByZXR1cm4gaml0U3R1
YnMtPmN0aUludGVybmFsRnVuY3Rpb25DYWxsKCp0aGlzLCBJbmNsdWRlRGVidWdnZXJIb29rOjpO
bykucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKLSAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5j
dGlJbnRlcm5hbEZ1bmN0aW9uQ29uc3RydWN0KCp0aGlzLCBJbmNsdWRlRGVidWdnZXJIb29rOjpO
bykucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgICAgIHJldHVybiBqaXRTdHVi
cy0+Y3RpSW50ZXJuYWxGdW5jdGlvbkNhbGwoKnRoaXMpLnJldGFnZ2VkPEpTRW50cnlQdHJUYWc+
KCk7CisgICAgICAgIHJldHVybiBqaXRTdHVicy0+Y3RpSW50ZXJuYWxGdW5jdGlvbkNvbnN0cnVj
dCgqdGhpcykucmV0YWdnZWQ8SlNFbnRyeVB0clRhZz4oKTsKICAgICB9CiAjZW5kaWYKICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDdmMzFiMjZkMmI1NC4uMjM3ZDhhMDY2ODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKQEAgLTYwMSw3ICs2MDEsNiBAQCBwdWJsaWM6CiAgICAgU291cmNlUHJvdmlkZXJDYWNoZU1h
cCBzb3VyY2VQcm92aWRlckNhY2hlTWFwOwogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPEpJVFRodW5rcz4gaml0U3R1YnM7Ci0gICAgVGh1bmtHZW5lcmF0b3IgdGh1bmtHZW5l
cmF0b3JGb3JJbnRyaW5zaWMoSW50cmluc2ljKTsKICAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
SklUVGh1bmtQdHJUYWc+IGdldENUSVN0dWIoVGh1bmtHZW5lcmF0b3IpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxTaGFyZWRKSVRTdHViU2V0PiBtX3NoYXJlZEpJVFN0dWJzOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2lu
dC1pbnRyaW5zaWMtanMtZXhhY3QtY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMt
anMtZXhhY3QtY2FzZS1pbnNlbnNpdGl2ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE5NDlmNmQxMGNhMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1leGFj
dC1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCi1DT05TT0xF
IE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCi1DT05TT0xFIE1FU1NBR0U6IEJSRUFL
UE9JTlQgQUNUSU9OIExPRyAzCi1DT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyA0Ci1UZXN0cyBmb3IgU3ltYm9saWNCcmVha3BvaW50LgotCi0KLT09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogU3ltYm9saWNCcmVha3BvaW50Ci0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU3ltYm9saWNC
cmVha3BvaW50LkV4YWN0Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5IaXQuT3B0aW9ucy5D
b25kaXRpb24KLQotU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgotCi1UcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLVRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotU2V0dGluZyBjb25kaXRpb24g
dG8gJ3RydWUnLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBh
dXNlLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQot
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VJbnNlbnNp
dGl2ZS5JbnRyaW5zaWMuSlMuSGl0Lk9wdGlvbnMuQ29uZGl0aW9uLkNvbnNvbGVDb21tYW5kTGlu
ZUFQSQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJ2ZhbHNlJy4uLgotCi1TZXR0aW5nIGNv
bmRpdGlvbiB0byBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
Ci1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAn
dHJ1ZScuLi4KLVNldHRpbmcgY29uZGl0aW9uIHRvIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQot
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLVRyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi0tLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5K
Uy5IaXQuT3B0aW9ucy5JZ25vcmVDb3VudAotCi1TZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4u
LgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0K
LVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLVRyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5I
aXQuT3B0aW9ucy5BY3Rpb24uTG9nCi0KLUFkZGluZyBsb2cgYWN0aW9uLi4uCi0KLVRyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
Ci1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLUVkaXRpbmcgbG9nIGFjdGlvbi4uLgotCi1UcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1FZGl0aW5nIGxvZyBhY3Rpb24uLi4KLUVuYWJsaW5n
IGF1dG8tY29udGludWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0K
LUVkaXRpbmcgbG9nIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VJ
bnNlbnNpdGl2ZS5JbnRyaW5zaWMuSlMuSGl0Lk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQotCi1B
ZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgcGF1c2Uu
Ci0KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQg
cGF1c2UuCi0KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi1FbmFibGluZyBhdXRvLWNvbnRp
bnVlLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1FZGl0aW5nIGV2
YWx1YXRlIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQot
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VJbnNlbnNp
dGl2ZS5JbnRyaW5zaWMuSlMuSGl0Lk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZS5Db25zb2xlQ29t
bWFuZExpbmVBUEkKLUFkZGluZyBzYXZlZCBjb25zb2xlIHZhbHVlICcxJy4uLgotCi1BZGRpbmcg
ZXZhbHVhdGUgYWN0aW9uIHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
LVBBU1M6IFNob3VsZCBwYXVzZS4KLQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJzInLi4u
Ci1FZGl0aW5nIGV2YWx1YXRlIGFjdGlvbiB1c2luZyBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0K
LVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLUFkZGluZyBzYXZlZCBjb25zb2xlIHZh
bHVlICczJy4uLgotRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24gdXNpbmcgc2F2ZWQgY29uc29sZSB2
YWx1ZS4uLgotRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KLQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJzQnLi4uCi1FZGl0
aW5nIGV2YWx1YXRlIGFjdGlvbiB1c2luZyBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0KLVRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU3lt
Ym9saWNCcmVha3BvaW50LkV4YWN0Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5NaXNzCi1B
ZGRpbmcgYnJlYWtwb2ludC4uLgotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91
bGQgbm90IHBhdXNlLgotCi1SZW1vdmluZyBicmVha3BvaW50Li4uCi1UcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBTeW1ib2xpY0JyZWFrcG9pbnQuRXhhY3RDYXNlSW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLkRp
c2FibGVkCi1BZGRpbmcgYnJlYWtwb2ludC4uLgotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1Q
QVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1SZW1vdmluZyBicmVha3BvaW50Li4uCi1UcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJp
bnNpYy1qcy1leGFjdC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtZXhhY3QtY2FzZS1p
bnNlbnNpdGl2ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODJhMDk1ZDdl
ZjMuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3lt
Ym9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtZXhhY3QtY2FzZS1pbnNlbnNpdGl2ZS5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9i
cmVha3BvaW50LW9wdGlvbnMtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5j
dGlvbiB0cmlnZ2VyU3ltYm9saWNCcmVha3BvaW50KCkgewotICAgICJ0ZXN0Ii5jaGFyQ29kZUF0
KDApOwotICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1TeW1i
b2xpY0JyZWFrcG9pbnQiKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgZnVuY3Rpb24g
dHJpZ2dlckJyZWFrcG9pbnQoKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlLVN5bWJvbGljQnJlYWtw
b2ludCIpLAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dl
clN5bWJvbGljQnJlYWtwb2ludCgpYCksCi0gICAgICAgIF0pOwotICAgIH0KLQotICAgIGxldCBz
dWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiU3ltYm9saWNCcmVha3BvaW50
Iik7Ci0KLSAgICBJbnNwZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhz
dWl0ZSwgewotICAgICAgICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJFeGFjdENhc2VJbnNlbnNpdGl2
ZS5JbnRyaW5zaWMuSlMuSGl0LiIsCi0gICAgICAgIGNyZWF0ZUJyZWFrcG9pbnQoKSB7Ci0gICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5TeW1ib2xpY0JyZWFrcG9pbnQoImNIYVJj
T2RFYVQiLCB7Y2FzZVNlbnNpdGl2ZTogZmFsc2V9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRTeW1ib2xpY0JyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gYnJlYWtwb2ludDsKLSAgICAgICAgfSwKLSAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQs
Ci0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJTeW1i
b2xpY0JyZWFrcG9pbnQuRXhhY3RDYXNlSW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLk1pc3MiLAot
ICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOwot
ICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OwotICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiQWRkaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAgIGxldCBi
cmVha3BvaW50ID0gbmV3IFdJLlN5bWJvbGljQnJlYWtwb2ludCgiY0hhUmNPZEUiLCB7Y2FzZVNl
bnNpdGl2ZTogZmFsc2V9KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRTeW1i
b2xpY0JyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLnN5bWJvbGljQnJlYWtwb2ludHNGb3JTeW1ib2woImNo
YXJDb2RlQXQiKS5sZW5ndGgsICJTaG91bGQgbm90IG1hdGNoIGJyZWFrcG9pbnQuIik7Ci0KLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsK
LSAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7Ci0gICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIp
OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKLQotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlJlbW92aW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAg
IGJyZWFrcG9pbnQucmVtb3ZlKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVh
a3BvaW50KCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291
bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOwotCi0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2Vk
LCBwYXVzZWRMaXN0ZW5lcik7Ci0gICAgICAgIH0sCi0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJTeW1ib2xpY0JyZWFrcG9pbnQuRXhhY3RDYXNlSW5z
ZW5zaXRpdmUuSW50cmluc2ljLkpTLkRpc2FibGVkIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsK
LSAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKLSAgICAgICAgICAgIGxldCBwYXVzZWRM
aXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgICsrcGF1
c2VDb3VudDsKLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBi
cmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5TeW1i
b2xpY0JyZWFrcG9pbnQoImNIYVJjT2RFYVQiLCB7Y2FzZVNlbnNpdGl2ZTogZmFsc2UsIGRpc2Fi
bGVkOiB0cnVlfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkU3ltYm9saWNC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
IVdJLmRlYnVnZ2VyTWFuYWdlci5zeW1ib2xpY0JyZWFrcG9pbnRzRm9yU3ltYm9sKCJjaGFyQ29k
ZUF0IikubGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRjaCBicmVha3BvaW50LiIpOwotCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAg
ICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOwotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7Ci0KLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBicmVh
a3BvaW50LnJlbW92ZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2lu
dCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAw
LCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1
c2VkTGlzdGVuZXIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KLTxwPlRlc3RzIGZvciBTeW1ib2xpY0JyZWFrcG9pbnQuPC9wPgotPC9ib2R5Pgot
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N5bWJv
bGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLWV4YWN0LWNhc2Utc2Vuc2l0aXZlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50
LWludHJpbnNpYy1qcy1leGFjdC1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxOTRlZmIxNjg1YS4uMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNp
Yy1qcy1leGFjdC1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxNjUgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQot
Q09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgotQ09OU09MRSBNRVNTQUdF
OiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMwotQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFD
VElPTiBMT0cgNAotVGVzdHMgZm9yIFN5bWJvbGljQnJlYWtwb2ludC4KLQotCi09PSBSdW5uaW5n
IHRlc3Qgc3VpdGU6IFN5bWJvbGljQnJlYWtwb2ludAotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5
bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLkhpdC5PcHRp
b25zLkNvbmRpdGlvbgotCi1TZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCi0KLVRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1TZXR0aW5nIGNvbmRp
dGlvbiB0byAndHJ1ZScuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91
bGQgcGF1c2UuCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNl
LgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZVNl
bnNpdGl2ZS5JbnRyaW5zaWMuSlMuSGl0Lk9wdGlvbnMuQ29uZGl0aW9uLkNvbnNvbGVDb21tYW5k
TGluZUFQSQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJ2ZhbHNlJy4uLgotCi1TZXR0aW5n
IGNvbmRpdGlvbiB0byBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1
ZSAndHJ1ZScuLi4KLVNldHRpbmcgY29uZGl0aW9uIHRvIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4K
LQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLVRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZVNlbnNpdGl2ZS5JbnRyaW5zaWMu
SlMuSGl0Lk9wdGlvbnMuSWdub3JlQ291bnQKLQotU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicu
Li4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgot
Ci1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLVRy
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1UcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotLS0gUnVubmluZyB0ZXN0IGNh
c2U6IFN5bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLkhp
dC5PcHRpb25zLkFjdGlvbi5Mb2cKLQotQWRkaW5nIGxvZyBhY3Rpb24uLi4KLQotVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
LVBBU1M6IFNob3VsZCBwYXVzZS4KLQotRWRpdGluZyBsb2cgYWN0aW9uLi4uCi0KLVRyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
Ci1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLUVkaXRpbmcgbG9nIGFjdGlvbi4uLgotRW5hYmxpbmcg
YXV0by1jb250aW51ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQot
RWRpdGluZyBsb2cgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNl
LgotCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZVNl
bnNpdGl2ZS5JbnRyaW5zaWMuSlMuSGl0Lk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQotCi1BZGRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0K
LUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgot
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgcGF1
c2UuCi0KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi1FbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1FZGl0aW5nIGV2YWx1
YXRlIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5FeGFjdENhc2VTZW5zaXRpdmUu
SW50cmluc2ljLkpTLkhpdC5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUuQ29uc29sZUNvbW1hbmRM
aW5lQVBJCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAnMScuLi4KLQotQWRkaW5nIGV2YWx1
YXRlIGFjdGlvbiB1c2luZyBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0KLVRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNT
OiBTaG91bGQgcGF1c2UuCi0KLUFkZGluZyBzYXZlZCBjb25zb2xlIHZhbHVlICcyJy4uLgotRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24gdXNpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1Ucmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAn
MycuLi4KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uIHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUu
Li4KLUVuYWJsaW5nIGF1dG8tY29udGludWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
Ci1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCi0KLUFkZGluZyBzYXZlZCBjb25zb2xlIHZhbHVlICc0Jy4uLgotRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24gdXNpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1UcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgot
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGlj
QnJlYWtwb2ludC5FeGFjdENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLk1pc3MKLUFkZGluZyBi
cmVha3BvaW50Li4uCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCi0KLVJlbW92aW5nIGJyZWFrcG9pbnQuLi4KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJv
bGljQnJlYWtwb2ludC5FeGFjdENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLkRpc2FibGVkCi1B
ZGRpbmcgYnJlYWtwb2ludC4uLgotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91
bGQgbm90IHBhdXNlLgotCi1SZW1vdmluZyBicmVha3BvaW50Li4uCi1UcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1l
eGFjdC1jYXNlLXNlbnNpdGl2ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3N5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLWV4YWN0LWNhc2Utc2Vuc2l0aXZlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMDE2YjhiNTNkZS4uMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3Bv
aW50LWludHJpbnNpYy1qcy1leGFjdC1jYXNlLXNlbnNpdGl2ZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTAyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRl
c3QuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9icmVha3BvaW50LW9wdGlv
bnMtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiB0cmlnZ2VyU3lt
Ym9saWNCcmVha3BvaW50KCkgewotICAgICJ0ZXN0Ii5jaGFyQ29kZUF0KDApOwotICAgIFRlc3RQ
YWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1TeW1ib2xpY0JyZWFrcG9pbnQi
KTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17Ci0gICAgZnVuY3Rpb24gdHJpZ2dlckJyZWFrcG9p
bnQoKSB7Ci0gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCi0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlLVN5bWJvbGljQnJlYWtwb2ludCIpLAotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dlclN5bWJvbGljQnJlYWtw
b2ludCgpYCksCi0gICAgICAgIF0pOwotICAgIH0KLQotICAgIGxldCBzdWl0ZSA9IEluc3BlY3Rv
clRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiU3ltYm9saWNCcmVha3BvaW50Iik7Ci0KLSAgICBJbnNw
ZWN0b3JUZXN0LkJyZWFrcG9pbnRPcHRpb25zLmFkZFRlc3RDYXNlcyhzdWl0ZSwgewotICAgICAg
ICB0ZXN0Q2FzZU5hbWVQcmVmaXg6ICJFeGFjdENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLkhp
dC4iLAotICAgICAgICBjcmVhdGVCcmVha3BvaW50KCkgewotICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBuZXcgV0kuU3ltYm9saWNCcmVha3BvaW50KCJjaGFyQ29kZUF0Iik7Ci0gICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkU3ltYm9saWNCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwotICAgICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQ7Ci0gICAgICAgIH0sCi0gICAgICAgIHRy
aWdnZXJCcmVha3BvaW50LAotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAg
ICAgICBuYW1lOiAiU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZVNlbnNpdGl2ZS5JbnRyaW5z
aWMuSlMuTWlzcyIsCi0gICAgICAgIGFzeW5jIHRlc3QoKSB7Ci0gICAgICAgICAgICBsZXQgcGF1
c2VDb3VudCA9IDA7Ci0gICAgICAgICAgICBsZXQgcGF1c2VkTGlzdGVuZXIgPSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2Vk
LCAoZXZlbnQpID0+IHsKLSAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7Ci0gICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwotICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgYnJlYWtwb2ludC4uLiIpOwotICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuU3ltYm9saWNCcmVha3BvaW50KCJjSGFS
Y09kRWFUIik7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkU3ltYm9saWNCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJ
LmRlYnVnZ2VyTWFuYWdlci5zeW1ib2xpY0JyZWFrcG9pbnRzRm9yU3ltYm9sKCJjaGFyQ29kZUF0
IikubGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRjaCBicmVha3BvaW50LiIpOwotCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAg
ICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBicmVha3Bv
aW50LnJlbW92ZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgp
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAi
U2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2Vk
TGlzdGVuZXIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2Uo
ewotICAgICAgICBuYW1lOiAiU3ltYm9saWNCcmVha3BvaW50LkV4YWN0Q2FzZVNlbnNpdGl2ZS5J
bnRyaW5zaWMuSlMuRGlzYWJsZWQiLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAg
ICAgbGV0IHBhdXNlQ291bnQgPSAwOwotICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgKytwYXVzZUNvdW50Owot
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQWRkaW5nIGJyZWFrcG9pbnQu
Li4iKTsKLSAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLlN5bWJvbGljQnJlYWtw
b2ludCgiY2hhckNvZGVBdCIsIHtkaXNhYmxlZDogdHJ1ZX0pOwotICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZFN5bWJvbGljQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIuc3ltYm9saWNCcmVh
a3BvaW50c0ZvclN5bWJvbCgiY2hhckNvZGVBdCIpLmxlbmd0aCwgIlNob3VsZCBub3QgbWF0Y2gg
YnJlYWtwb2ludC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQo
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwg
IlNob3VsZCBub3QgcGF1c2UuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGlu
ZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVtb3ZpbmcgYnJlYWtwb2lu
dC4uLiIpOwotICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKLQotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAg
ICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7Ci0KLSAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKLSAgICAgICAgfSwKLSAgICB9
KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci08cD5UZXN0cyBmb3IgU3ltYm9saWNC
cmVha3BvaW50LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1yZWdl
eC1jYXNlLWluc2Vuc2l0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWludHJpbnNpYy1qcy1yZWdleC1jYXNlLWluc2Vu
c2l0aXZlLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNjQ2
MGQ5YzUyLi4wMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3N5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLXJlZ2V4LWNhc2UtaW5zZW5zaXRpdmUt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLUNPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKLUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lO
VCBBQ1RJT04gTE9HIDIKLUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMK
LUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKLVRlc3RzIGZvciBTeW1i
b2xpY0JyZWFrcG9pbnQuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBTeW1ib2xpY0JyZWFr
cG9pbnQKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFrcG9pbnQuUmVnZXhDYXNl
SW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLkhpdC5PcHRpb25zLkNvbmRpdGlvbgotCi1TZXR0aW5n
IGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBT
aG91bGQgbm90IHBhdXNlLgotCi1TZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KLQotVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLVRyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogU3ltYm9saWNCcmVha3BvaW50LlJlZ2V4Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5I
aXQuT3B0aW9ucy5Db25kaXRpb24uQ29uc29sZUNvbW1hbmRMaW5lQVBJCi1BZGRpbmcgc2F2ZWQg
Y29uc29sZSB2YWx1ZSAnZmFsc2UnLi4uCi0KLVNldHRpbmcgY29uZGl0aW9uIHRvIHNhdmVkIGNv
bnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQg
bm90IHBhdXNlLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCi0KLUFkZGluZyBzYXZlZCBjb25zb2xlIHZhbHVlICd0cnVlJy4uLgotU2V0dGluZyBj
b25kaXRpb24gdG8gc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1Q
QVNTOiBTaG91bGQgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFr
cG9pbnQuUmVnZXhDYXNlSW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLkhpdC5PcHRpb25zLklnbm9y
ZUNvdW50Ci0KLVNldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCi0KLVRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNT
OiBTaG91bGQgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFrcG9p
bnQuUmVnZXhDYXNlSW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLkhpdC5PcHRpb25zLkFjdGlvbi5M
b2cKLQotQWRkaW5nIGxvZyBhY3Rpb24uLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1Q
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBwYXVz
ZS4KLQotRWRpdGluZyBsb2cgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgot
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgcGF1
c2UuCi0KLUVkaXRpbmcgbG9nIGFjdGlvbi4uLgotRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgot
Ci1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotRWRpdGluZyBsb2cgYWN0aW9u
Li4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi0tLSBSdW5uaW5nIHRl
c3QgY2FzZTogU3ltYm9saWNCcmVha3BvaW50LlJlZ2V4Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNp
Yy5KUy5IaXQuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCi0KLUFkZGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotRWRpdGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4KLUVuYWJsaW5nIGF1dG8tY29udGludWUuLi4KLQotVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
LVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCi0K
LVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi0tLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogU3ltYm9saWNCcmVha3BvaW50LlJlZ2V4Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5I
aXQuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlLkNvbnNvbGVDb21tYW5kTGluZUFQSQotQWRkaW5n
IHNhdmVkIGNvbnNvbGUgdmFsdWUgJzEnLi4uCi0KLUFkZGluZyBldmFsdWF0ZSBhY3Rpb24gdXNp
bmcgc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIHBhdXNl
LgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAnMicuLi4KLUVkaXRpbmcgZXZhbHVhdGUg
YWN0aW9uIHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNo
b3VsZCBwYXVzZS4KLQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJzMnLi4uCi1FZGl0aW5n
IGV2YWx1YXRlIGFjdGlvbiB1c2luZyBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi1FbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1B
ZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAnNCcuLi4KLUVkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
IHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
Ci1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFrcG9pbnQuUmVn
ZXhDYXNlSW5zZW5zaXRpdmUuSW50cmluc2ljLkpTLk1pc3MKLUFkZGluZyBicmVha3BvaW50Li4u
Ci1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLVJl
bW92aW5nIGJyZWFrcG9pbnQuLi4KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2lu
dC5SZWdleENhc2VJbnNlbnNpdGl2ZS5JbnRyaW5zaWMuSlMuRGlzYWJsZWQKLUFkZGluZyBicmVh
a3BvaW50Li4uCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1
c2UuCi0KLVJlbW92aW5nIGJyZWFrcG9pbnQuLi4KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgot
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3N5bWJvbGljLWJyZWFrcG9pbnQtaW50cmluc2ljLWpzLXJlZ2V4LWNhc2Ut
aW5zZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xp
Yy1icmVha3BvaW50LWludHJpbnNpYy1qcy1yZWdleC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNjY2NmQwNWRkMC4uMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LWlu
dHJpbnNpYy1qcy1yZWdleC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAt
MSwxMDIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0icmVzb3VyY2VzL2JyZWFrcG9pbnQtb3B0aW9ucy11
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWZ1bmN0aW9uIHRyaWdnZXJTeW1ib2xp
Y0JyZWFrcG9pbnQoKSB7Ci0gICAgInRlc3QiLmNoYXJDb2RlQXQoMCk7Ci0gICAgVGVzdFBhZ2Uu
ZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLVN5bWJvbGljQnJlYWtwb2ludCIpOwot
fQotCi1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBmdW5jdGlvbiB0cmlnZ2VyQnJlYWtwb2ludCgp
IHsKLSAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtU3ltYm9saWNCcmVha3BvaW50IiksCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyU3ltYm9saWNCcmVha3BvaW50
KClgKSwKLSAgICAgICAgXSk7Ci0gICAgfQotCi0gICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJTeW1ib2xpY0JyZWFrcG9pbnQiKTsKLQotICAgIEluc3BlY3Rv
clRlc3QuQnJlYWtwb2ludE9wdGlvbnMuYWRkVGVzdENhc2VzKHN1aXRlLCB7Ci0gICAgICAgIHRl
c3RDYXNlTmFtZVByZWZpeDogIlJlZ2V4Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5IaXQu
IiwKLSAgICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKLSAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gbmV3IFdJLlN5bWJvbGljQnJlYWtwb2ludCgiY0hhUmNPZEVcXHcrIiwge2Nhc2VTZW5z
aXRpdmU6IGZhbHNlLCBpc1JlZ2V4OiB0cnVlfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWRkU3ltYm9saWNCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgcmV0
dXJuIGJyZWFrcG9pbnQ7Ci0gICAgICAgIH0sCi0gICAgICAgIHRyaWdnZXJCcmVha3BvaW50LAot
ICAgIH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiU3ltYm9s
aWNCcmVha3BvaW50LlJlZ2V4Q2FzZUluc2Vuc2l0aXZlLkludHJpbnNpYy5KUy5NaXNzIiwKLSAg
ICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKLSAg
ICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4gewot
ICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIkFkZGluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBsZXQgYnJl
YWtwb2ludCA9IG5ldyBXSS5TeW1ib2xpY0JyZWFrcG9pbnQoImNIYVJjT2RFXFx3K19ET0VTX05P
VF9FWElTVCIsIHtjYXNlU2Vuc2l0aXZlOiBmYWxzZSwgaXNSZWdleDogdHJ1ZX0pOwotICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZFN5bWJvbGljQnJlYWtwb2ludChicmVha3BvaW50
KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1Z2dlck1hbmFnZXIu
c3ltYm9saWNCcmVha3BvaW50c0ZvclN5bWJvbCgiY2hhckNvZGVBdCIpLmxlbmd0aCwgIlNob3Vs
ZCBub3QgbWF0Y2ggYnJlYWtwb2ludC4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAgYXdhaXQgdHJpZ2dl
ckJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1
c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUmVtb3Zp
bmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKLQot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIp
OwotICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2Uu
Iik7Ci0KLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3RlbmVyKTsKLSAgICAg
ICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgbmFtZTog
IlN5bWJvbGljQnJlYWtwb2ludC5SZWdleENhc2VJbnNlbnNpdGl2ZS5JbnRyaW5zaWMuSlMuRGlz
YWJsZWQiLAotICAgICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHBhdXNlQ291
bnQgPSAwOwotICAgICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OwotICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQWRkaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAg
ICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLlN5bWJvbGljQnJlYWtwb2ludCgiY0hhUmNPZEVc
XHcrIiwge2Nhc2VTZW5zaXRpdmU6IGZhbHNlLCBpc1JlZ2V4OiB0cnVlLCBkaXNhYmxlZDogdHJ1
ZX0pOwotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZFN5bWJvbGljQnJlYWtwb2lu
dChicmVha3BvaW50KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFXSS5kZWJ1
Z2dlck1hbmFnZXIuc3ltYm9saWNCcmVha3BvaW50c0ZvclN5bWJvbCgiY2hhckNvZGVBdCIpLmxl
bmd0aCwgIlNob3VsZCBub3QgbWF0Y2ggYnJlYWtwb2ludC4iKTsKLQotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAg
YXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7Ci0KLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiUmVtb3ZpbmcgYnJlYWtwb2ludC4uLiIpOwotICAgICAgICAgICAgYnJlYWtwb2ludC5y
ZW1vdmUoKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLiIpOwotICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3Vs
ZCBub3QgcGF1c2UuIik7Ci0KLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHBhdXNlZExpc3Rl
bmVyKTsKLSAgICAgICAgfSwKLSAgICB9KTsKLQotICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZp
bmlzaCgpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+
Ci08cD5UZXN0cyBmb3IgU3ltYm9saWNCcmVha3BvaW50LjwvcD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVh
a3BvaW50LWludHJpbnNpYy1qcy1yZWdleC1jYXNlLXNlbnNpdGl2ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5z
aWMtanMtcmVnZXgtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZTc3ZTRlNTQ0ZjQuLjAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtcmVn
ZXgtY2FzZS1zZW5zaXRpdmUtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICsw
LDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKLUNPTlNPTEUg
TUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKLUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDMKLUNPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDQKLVRlc3RzIGZvciBTeW1ib2xpY0JyZWFrcG9pbnQuCi0KLQotPT0gUnVubmluZyB0ZXN0IHN1
aXRlOiBTeW1ib2xpY0JyZWFrcG9pbnQKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0Jy
ZWFrcG9pbnQuUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNpYy5KUy5IaXQuT3B0aW9ucy5Db25k
aXRpb24KLQotU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgotCi1UcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLVRyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotU2V0dGluZyBjb25kaXRpb24gdG8g
J3RydWUnLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNl
LgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5SZWdleENhc2VTZW5zaXRpdmUu
SW50cmluc2ljLkpTLkhpdC5PcHRpb25zLkNvbmRpdGlvbi5Db25zb2xlQ29tbWFuZExpbmVBUEkK
LUFkZGluZyBzYXZlZCBjb25zb2xlIHZhbHVlICdmYWxzZScuLi4KLQotU2V0dGluZyBjb25kaXRp
b24gdG8gc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
LVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KLQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJ3RydWUn
Li4uCi1TZXR0aW5nIGNvbmRpdGlvbiB0byBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi0KLVRyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1UcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFN5bWJvbGljQnJlYWtwb2ludC5SZWdleENhc2VTZW5zaXRpdmUuSW50cmluc2ljLkpTLkhpdC5P
cHRpb25zLklnbm9yZUNvdW50Ci0KLVNldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCi0KLVRy
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCi1UcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBwYXVzZS4KLQotVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCi1QQVNTOiBTaG91bGQgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1i
b2xpY0JyZWFrcG9pbnQuUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNpYy5KUy5IaXQuT3B0aW9u
cy5BY3Rpb24uTG9nCi0KLUFkZGluZyBsb2cgYWN0aW9uLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgotUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBT
aG91bGQgcGF1c2UuCi0KLUVkaXRpbmcgbG9nIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzog
U2hvdWxkIHBhdXNlLgotCi1FZGl0aW5nIGxvZyBhY3Rpb24uLi4KLUVuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLUVkaXRpbmcg
bG9nIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFN5bWJvbGljQnJlYWtwb2ludC5SZWdleENhc2VTZW5zaXRpdmUu
SW50cmluc2ljLkpTLkhpdC5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKLQotQWRkaW5nIGV2YWx1
YXRlIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1FZGl0aW5n
IGV2YWx1YXRlIGFjdGlvbi4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxkIHBhdXNlLgotCi1F
ZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgotRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgotCi1U
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgotUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KLQotRWRpdGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4KLQotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNob3VsZCBub3QgcGF1c2UuCi0KLS0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFrcG9pbnQuUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNp
Yy5KUy5IaXQuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlLkNvbnNvbGVDb21tYW5kTGluZUFQSQot
QWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJzEnLi4uCi0KLUFkZGluZyBldmFsdWF0ZSBhY3Rp
b24gdXNpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZS4uLgotCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KLVBBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgotUEFTUzogU2hvdWxk
IHBhdXNlLgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAnMicuLi4KLUVkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uIHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBB
U1M6IFNob3VsZCBwYXVzZS4KLQotQWRkaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUgJzMnLi4uCi1F
ZGl0aW5nIGV2YWx1YXRlIGFjdGlvbiB1c2luZyBzYXZlZCBjb25zb2xlIHZhbHVlLi4uCi1FbmFi
bGluZyBhdXRvLWNvbnRpbnVlLi4uCi0KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNl
LgotCi1BZGRpbmcgc2F2ZWQgY29uc29sZSB2YWx1ZSAnNCcuLi4KLUVkaXRpbmcgZXZhbHVhdGUg
YWN0aW9uIHVzaW5nIHNhdmVkIGNvbnNvbGUgdmFsdWUuLi4KLQotVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCi1QQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KLVBBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFrcG9p
bnQuUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNpYy5KUy5NaXNzCi1BZGRpbmcgYnJlYWtwb2lu
dC4uLgotVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCi1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgot
Ci1SZW1vdmluZyBicmVha3BvaW50Li4uCi1UcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KLVBBU1M6
IFNob3VsZCBub3QgcGF1c2UuCi0KLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTeW1ib2xpY0JyZWFr
cG9pbnQuUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNpYy5KUy5EaXNhYmxlZAotQWRkaW5nIGJy
ZWFrcG9pbnQuLi4KLVRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgotUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KLQotUmVtb3ZpbmcgYnJlYWtwb2ludC4uLgotVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
Ci1QQVNTOiBTaG91bGQgbm90IHBhdXNlLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRyaW5zaWMtanMtcmVnZXgtY2Fz
ZS1zZW5zaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xp
Yy1icmVha3BvaW50LWludHJpbnNpYy1qcy1yZWdleC1jYXNlLXNlbnNpdGl2ZS5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTEzNDRiNzEyYTUuLjAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3ltYm9saWMtYnJlYWtwb2ludC1pbnRy
aW5zaWMtanMtcmVnZXgtY2FzZS1zZW5zaXRpdmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYnJlYWtwb2ludC1vcHRpb25zLXV0aWxp
dGllcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZnVuY3Rpb24gdHJpZ2dlclN5bWJvbGljQnJl
YWtwb2ludCgpIHsKLSAgICAidGVzdCIuY2hhckNvZGVBdCgwKTsKLSAgICBUZXN0UGFnZS5kaXNw
YXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2UtU3ltYm9saWNCcmVha3BvaW50Iik7Ci19Ci0K
LWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGZ1bmN0aW9uIHRyaWdnZXJCcmVha3BvaW50KCkgewot
ICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
d2FpdEV2ZW50KCJUZXN0UGFnZS1TeW1ib2xpY0JyZWFrcG9pbnQiKSwKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJTeW1ib2xpY0JyZWFrcG9pbnQoKWAp
LAotICAgICAgICBdKTsKLSAgICB9Ci0KLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZUFzeW5jU3VpdGUoIlN5bWJvbGljQnJlYWtwb2ludCIpOwotCi0gICAgSW5zcGVjdG9yVGVz
dC5CcmVha3BvaW50T3B0aW9ucy5hZGRUZXN0Q2FzZXMoc3VpdGUsIHsKLSAgICAgICAgdGVzdENh
c2VOYW1lUHJlZml4OiAiUmVnZXhDYXNlU2Vuc2l0aXZlLkludHJpbnNpYy5KUy5IaXQuIiwKLSAg
ICAgICAgY3JlYXRlQnJlYWtwb2ludCgpIHsKLSAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0g
bmV3IFdJLlN5bWJvbGljQnJlYWtwb2ludCgiY2hhckNvZGVcXHcrIiwge2lzUmVnZXg6IHRydWV9
KTsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRTeW1ib2xpY0JyZWFrcG9pbnQo
YnJlYWtwb2ludCk7Ci0gICAgICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKLSAgICAgICAgfSwK
LSAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQsCi0gICAgfSk7Ci0KLSAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJTeW1ib2xpY0JyZWFrcG9pbnQuUmVnZXhDYXNlU2Vuc2l0
aXZlLkludHJpbnNpYy5KUy5NaXNzIiwKLSAgICAgICAgYXN5bmMgdGVzdCgpIHsKLSAgICAgICAg
ICAgIGxldCBwYXVzZUNvdW50ID0gMDsKLSAgICAgICAgICAgIGxldCBwYXVzZWRMaXN0ZW5lciA9
IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIChldmVudCkgPT4gewotICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsK
LSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBicmVha3BvaW50
Li4uIik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5TeW1ib2xpY0JyZWFr
cG9pbnQoImNIYVJjT2RFXFx3KyIsIHtpc1JlZ2V4OiB0cnVlfSk7Ci0gICAgICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkU3ltYm9saWNCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5zeW1ib2xpY0Jy
ZWFrcG9pbnRzRm9yU3ltYm9sKCJjaGFyQ29kZUF0IikubGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRj
aCBicmVha3BvaW50LiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2lu
dCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAw
LCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3Bv
aW50Li4uIik7Ci0gICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwotCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAg
ICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOwotICAgICAgICB9LAotICAg
IH0pOwotCi0gICAgc3VpdGUuYWRkVGVzdENhc2UoewotICAgICAgICBuYW1lOiAiU3ltYm9saWNC
cmVha3BvaW50LlJlZ2V4Q2FzZVNlbnNpdGl2ZS5JbnRyaW5zaWMuSlMuRGlzYWJsZWQiLAotICAg
ICAgICBhc3luYyB0ZXN0KCkgewotICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOwotICAg
ICAgICAgICAgbGV0IHBhdXNlZExpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Ci0g
ICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OwotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZXN1bWUoKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiQWRkaW5nIGJyZWFrcG9pbnQuLi4iKTsKLSAgICAgICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLlN5bWJvbGljQnJlYWtwb2ludCgiY2hhckNvZGVcXHcrIiwge2lzUmVn
ZXg6IHRydWUsIGRpc2FibGVkOiB0cnVlfSk7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkU3ltYm9saWNCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5zeW1ib2xpY0JyZWFrcG9pbnRzRm9y
U3ltYm9sKCJjaGFyQ29kZUF0IikubGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRjaCBicmVha3BvaW50
LiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5v
dCBwYXVzZS4iKTsKLQotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7Ci0KLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJSZW1vdmluZyBicmVha3BvaW50Li4uIik7Ci0g
ICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7Ci0gICAgICAgICAgICBhd2FpdCB0
cmlnZ2VyQnJlYWtwb2ludCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKLQotICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgcGF1c2VkTGlzdGVuZXIpOwotICAgICAgICB9LAotICAgIH0pOwotCi0gICAg
c3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLTxwPlRlc3RzIGZvciBTeW1ib2xpY0JyZWFrcG9pbnQu
PC9wPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3N5bWJvbGljLWJyZWFrcG9pbnQtbmF0aXZlLWpzLWV4YWN0LWNhc2UtaW5zZW5z
aXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zeW1ib2xpYy1icmVh
a3BvaW50LW5hdGl2ZS1qcy1leGFjdC1jYXNlLWluc2Vuc2l0aXZlLmh0bWwKaW5kZXggYzg5ZTFj
M2I4ZDI4Li42ZWVjMmM0YTJhY2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zeW1ib2xpYy1icmVha3BvaW50LW5hdGl2ZS1qcy1leGFjdC1jYXNlLWluc2Vuc2l0
aXZlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N5bWJvbGljLWJy
ZWFrcG9pbnQtbmF0aXZlLWpzLWV4YWN0LWNhc2UtaW5zZW5zaXRpdmUuaHRtbApAQCAtNDIsNyAr
NDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJB
ZGRpbmcgYnJlYWtwb2ludC4uLiIpOwogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcg
V0kuU3ltYm9saWNCcmVha3BvaW50KCJyRXZFclMiLCB7Y2FzZVNlbnNpdGl2ZTogZmFsc2V9KTsK
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRTeW1ib2xpY0JyZWFrcG9pbnQoYnJl
YWtwb2ludCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghV0kuZGVidWdnZXJN
YW5hZ2VyLnN5bWJvbGljQnJlYWtwb2ludHNGb3JTeW1ib2woInJldmVyc2UiKS5sZW5ndGgsICJT
aG91bGQgbm90IG1hdGNoIGJyZWFrcG9pbnQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydCghV0kuZGVidWdnZXJNYW5hZ2VyLnN5bWJvbGljQnJlYWtwb2ludHNGb3JTeW1ib2wo
InRyaWdnZXJTeW1ib2xpY0JyZWFrcG9pbnQiKS5sZW5ndGgsICJTaG91bGQgbm90IG1hdGNoIGJy
ZWFrcG9pbnQuIik7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4iKTsKICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7
CkBAIC03Myw3ICs3Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkFkZGluZyBicmVha3BvaW50Li4uIik7CiAgICAgICAgICAgICBsZXQgYnJlYWtw
b2ludCA9IG5ldyBXSS5TeW1ib2xpY0JyZWFrcG9pbnQoInJFdkVyU2UiLCB7Y2FzZVNlbnNpdGl2
ZTogZmFsc2UsIGRpc2FibGVkOiB0cnVlfSk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkU3ltYm9saWNCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5zeW1ib2xpY0JyZWFrcG9pbnRzRm9y
U3ltYm9sKCJyZXZlcnNlIikubGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRjaCBicmVha3BvaW50LiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIVdJLmRlYnVnZ2VyTWFuYWdlci5z
eW1ib2xpY0JyZWFrcG9pbnRzRm9yU3ltYm9sKCJ0cmlnZ2VyU3ltYm9saWNCcmVha3BvaW50Iiku
bGVuZ3RoLCAiU2hvdWxkIG5vdCBtYXRjaCBicmVha3BvaW50LiIpOwogCiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CiAgICAgICAgICAg
ICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>