<?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>142812</bug_id>
          
          <creation_ts>2015-03-17 23:05:52 -0700</creation_ts>
          <short_desc>REGRESSION(r181667): Broke multiple tests with ASan, plus dependent commits (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-03-17 23:10:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142785</blocked>
    
    <blocked>142579</blocked>
    
    <blocked>142809</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>koivisto</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078120</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 23:05:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/181667 broke the build:
Broke multiple tests with ASan, plus dependent commits (Requested by ap on #webkit).

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078127</commentid>
    <comment_count>2</comment_count>
      <attachid>248914</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 23:10:34 -0700</bug_when>
    <thetext>Comment on attachment 248914
ROLLOUT of r181667

Clearing flags on attachment: 248914

Committed r181685: &lt;http://trac.webkit.org/changeset/181685&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078128</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-17 23:10:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248914</attachid>
            <date>2015-03-17 23:06:27 -0700</date>
            <delta_ts>2015-03-17 23:10:34 -0700</delta_ts>
            <desc>ROLLOUT of r181667</desc>
            <filename>bug-142812-20150317230556.patch</filename>
            <type>text/plain</type>
            <size>46565</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY2MjJlNDhlZjBiYzBl
ZGFkM2VlNTQwMGU2ZTU4MDQ3Njg3NGI2OS4uMzlhY2U0YWZlM2MzMjVkMjcwY2IzMGUzMzU2NjE2
NjYzNzY5NTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE1LTAzLTE3ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgxNjY3LCByMTgxNjgyLCBhbmQgcjE4MTY4My4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjgxMgorCisgICAgICAgIEJy
b2tlIG11bHRpcGxlIHRlc3RzIHdpdGggQVNhbiwgcGx1cyBkZXBlbmRlbnQgY29tbWl0cworICAg
ICAgICAoUmVxdWVzdGVkIGJ5IGFwIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNo
YW5nZXNldHM6CisKKyAgICAgICAgIlNpbXBsZSBsaW5lIGxheW91dDogU3BsaXQgZnJhZ21lbnRz
IG9uIHJlbmRlcmVyIGJvdW5kYXJ5IG9uCisgICAgICAgIHRoZSBmbHkuIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTc5CisgICAgICAgIGh0dHA6
Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTY2NworCisgICAgICAgICJTaW1wbGUgbGlu
ZSBsYXlvdXQ6IENoYW5nZSBGbG93Q29udGVudHM6OnNlZ21lbnRGb3JQb3NpdGlvbigpCisgICAg
ICAgIHRvIHNlZ21lbnRGb3JSdW4oKS4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDI3ODUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTgxNjgyCisKKyAgICAgICAgIlNpbXBsZSBsaW5lIGxheW91dDogVXNlIFZlY3Rv
cjw+Ojpjb25zdF9pdGVyYXRvciBpbnN0ZWFkIG9mCisgICAgICAgIGN1c3RvbSBGbG93Q29udGVu
dHM6Okl0ZXJhdG9yLiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MjgwOQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
ODE2ODMKKwogMjAxNS0wMy0xNyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNpbXBsZSBsaW5lIGxheW91dDogVXNlIFZlY3Rvcjw+Ojpjb25zdF9pdGVyYXRvciBp
bnN0ZWFkIG9mIGN1c3RvbSBGbG93Q29udGVudHM6Okl0ZXJhdG9yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IGJmNjAyNDM2YTk2MzkxNGIz
ZTViY2MwZWY0OTJlMGI1NmUwMjBlOWMuLjk2OWFiNGEyODQ4NDA2NWEzNjE3NDliNWIzMmFjY2Qw
ZTAzZTY1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91
dC5jcHAKQEAgLTIzMSwyNyArMjMxLDkgQEAgc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5lTGVmdChF
VGV4dEFsaWduIHRleHRBbGlnbiwgZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0IGMKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgcmV2ZXJ0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYg
cnVucywgdW5zaWduZWQgbGVuZ3RoLCBmbG9hdCB3aWR0aCkKLXsKLSAgICBBU1NFUlQocnVucy5z
aXplKCkpOwotICAgIHdoaWxlIChsZW5ndGgpIHsKLSAgICAgICAgUnVuJiBsYXN0UnVuID0gcnVu
cy5sYXN0KCk7Ci0gICAgICAgIHVuc2lnbmVkIGxhc3RSdW5MZW5ndGggPSBsYXN0UnVuLmVuZCAt
IGxhc3RSdW4uc3RhcnQ7Ci0gICAgICAgIGlmIChsYXN0UnVuTGVuZ3RoID4gbGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCAtPSB3aWR0aDsKLSAgICAgICAgICAgIGxh
c3RSdW4uZW5kIC09IGxlbmd0aDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIHJ1bnMucmVtb3ZlTGFzdCgpOwotICAgICAgICBsZW5ndGggLT0gbGFzdFJ1bkxlbmd0aDsK
LSAgICAgICAgd2lkdGggLT0gKGxhc3RSdW4ubG9naWNhbFJpZ2h0IC0gbGFzdFJ1bi5sb2dpY2Fs
TGVmdCk7Ci0gICAgfQotfQotCiBjbGFzcyBMaW5lU3RhdGUgewogcHVibGljOgogICAgIHZvaWQg
c2V0QXZhaWxhYmxlV2lkdGgoZmxvYXQgd2lkdGgpIHsgbV9hdmFpbGFibGVXaWR0aCA9IHdpZHRo
OyB9Ci0gICAgdm9pZCBzZXRDb2xsYXBlZFdoaXRlc3BhY2VXaWR0aChmbG9hdCB3aWR0aCkgeyBt
X2NvbGxhcHNlZFdoaXRlc3BhY2VXaWR0aCA9IHdpZHRoOyB9CiAgICAgdm9pZCBzZXRMb2dpY2Fs
TGVmdE9mZnNldChmbG9hdCBvZmZzZXQpIHsgbV9sb2dpY2FsTGVmdE9mZnNldCA9IG9mZnNldDsg
fQogICAgIHZvaWQgc2V0T3ZlcmZsb3dlZEZyYWdtZW50KGNvbnN0IFRleHRGcmFnbWVudEl0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KSB7IG1fb3ZlcmZsb3dlZEZyYWdtZW50ID0gZnJh
Z21lbnQ7IH0KIApAQCAtMjU5LDUxICsyNDEsMjUgQEAgcHVibGljOgogICAgIGZsb2F0IGxvZ2lj
YWxMZWZ0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsTGVmdE9mZnNldDsgfQogICAg
IGNvbnN0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIG92ZXJmbG93ZWRGcmFn
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcmZsb3dlZEZyYWdtZW50OyB9CiAgICAgYm9vbCBo
YXNUcmFpbGluZ1doaXRlc3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3RyYWlsaW5nV2hpdGVzcGFj
ZUxlbmd0aDsgfQotICAgIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgbGFzdEZy
YWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudHMubGFzdCgpOyB9CiAgICAgYm9vbCBp
c1doaXRlc3BhY2VPbmx5KCkgY29uc3QgeyByZXR1cm4gbV90cmFpbGluZ1doaXRlc3BhY2VXaWR0
aCAmJiBtX3J1bnNXaWR0aCA9PSBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOyB9CiAgICAgYm9v
bCBmaXRzKGZsb2F0IGV4dHJhKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVdpZHRoID49IG1f
cnVuc1dpZHRoICsgZXh0cmE7IH0KICAgICBib29sIGZpcnN0Q2hhcmFjdGVyRml0cygpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyc3RDaGFyYWN0ZXJGaXRzOyB9CiAgICAgZmxvYXQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBtX3J1bnNXaWR0aDsgfQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBpZiAoIW1fZnJhZ21lbnRzLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBpZiAoIW1fbGFzdENvbXBsZXRlRnJhZ21lbnQuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gbV9mcmFnbWVudHMubGFzdCgp
Lm92ZXJsYXBzVG9OZXh0UmVuZGVyZXIoKTsKLSAgICB9CiAKLSAgICB2b2lkIGFwcGVuZEZyYWdt
ZW50QW5kQ3JlYXRlUnVuSWZOZWVkZWQoY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRG
cmFnbWVudCYgZnJhZ21lbnQsIExheW91dDo6UnVuVmVjdG9yJiBydW5zKQorICAgIHZvaWQgYXBw
ZW5kRnJhZ21lbnQoY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJh
Z21lbnQsIExheW91dDo6UnVuVmVjdG9yJiBydW5zKQogICAgIHsKICAgICAgICAgLy8gQWRqdXN0
IGVuZCBwb3NpdGlvbiB3aGlsZSBjb2xsYXBzaW5nLgogICAgICAgICB1bnNpZ25lZCBlbmRQb3Np
dGlvbiA9IGZyYWdtZW50LmlzQ29sbGFwc2VkKCkgPyBmcmFnbWVudC5zdGFydCgpICsgMSA6IGZy
YWdtZW50LmVuZCgpOwotICAgICAgICAvLyBOZXcgbGluZSBuZWVkcyBuZXcgcnVuLgotICAgICAg
ICBpZiAoIW1fcnVuc1dpZHRoKQorCisgICAgICAgIGlmIChtX2NyZWF0ZU5ld1J1bikKICAgICAg
ICAgICAgIHJ1bnMuYXBwZW5kKFJ1bihmcmFnbWVudC5zdGFydCgpLCBlbmRQb3NpdGlvbiwgbV9y
dW5zV2lkdGgsIG1fcnVuc1dpZHRoICsgZnJhZ21lbnQud2lkdGgoKSwgZmFsc2UpKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvJiBsYXN0RnJhZ21lbnQgPSBtX2ZyYWdt
ZW50cy5sYXN0KCk7Ci0gICAgICAgICAgICAvLyBBZHZhbmNlIGxhc3QgY29tcGxldGVkIGZyYWdt
ZW50IHdoZW4gdGhlIHByZXZpb3VzIGZyYWdtZW50IGlzIGFsbCBzZXQgKGluY2x1ZGluZyBtdWx0
aXBsZSBwYXJ0cyBhY3Jvc3MgcmVuZGVyZXJzKQotICAgICAgICAgICAgaWYgKChsYXN0RnJhZ21l
bnQudHlwZSgpICE9IGZyYWdtZW50LnR5cGUoKSkgfHwgIWxhc3RGcmFnbWVudC5vdmVybGFwc1Rv
TmV4dFJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgbV9sYXN0Q29tcGxldGVGcmFnbWVudCA9
IGxhc3RGcmFnbWVudDsKLSAgICAgICAgICAgIC8vIENvbGxhcHNlIG5laWdoYm91cmluZyB3aGl0
ZXNwYWNlLCBpZiB0aGV5IGFyZSBhY3Jvc3MgbXVsdGlwbGUgcmVuZGVyZXJzIGFuZCBhcmUgbm90
IGNvbGxhcHNlZCB5ZXQuCi0gICAgICAgICAgICBpZiAobGFzdEZyYWdtZW50LmlzQ29sbGFwc2li
bGUoKSAmJiBmcmFnbWVudC5pc0NvbGxhcHNpYmxlKCkpIHsKLSAgICAgICAgICAgICAgICBBU1NF
UlQobGFzdEZyYWdtZW50LmlzTGFzdEluUmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFsYXN0RnJhZ21lbnQuaXNDb2xsYXBzZWQoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBM
aW5lIHdpZHRoIG5lZWRzIHRvIGJlIHJlc2V0IHNvIHRoYXQgbm93IGl0IHRha2VzIGNvbGxhcHNp
bmcgaW50byBjb25zaWRlcmF0aW9uLgotICAgICAgICAgICAgICAgICAgICBtX3J1bnNXaWR0aCAt
PSAobGFzdEZyYWdtZW50LndpZHRoKCkgLSBtX2NvbGxhcHNlZFdoaXRlc3BhY2VXaWR0aCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFRoaXMgZnJhZ21lbnQgaXMgY29s
bGFwc2VkIGNvbXBsZXRlbHkuIE5vIHJ1biBpcyBuZWVkZWQuCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxhc3RGcmFnbWVudC5pc0xhc3RJ
blJlbmRlcmVyKCkgfHwgbGFzdEZyYWdtZW50LmlzQ29sbGFwc2VkKCkpCi0gICAgICAgICAgICAg
ICAgcnVucy5hcHBlbmQoUnVuKGZyYWdtZW50LnN0YXJ0KCksIGVuZFBvc2l0aW9uLCBtX3J1bnNX
aWR0aCwgbV9ydW5zV2lkdGggKyBmcmFnbWVudC53aWR0aCgpLCBmYWxzZSkpOwotICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUnVuJiBsYXN0UnVuID0gcnVucy5sYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgbGFzdFJ1bi5lbmQgPSBlbmRQb3NpdGlvbjsKLSAgICAgICAgICAgICAg
ICBsYXN0UnVuLmxvZ2ljYWxSaWdodCArPSBmcmFnbWVudC53aWR0aCgpOwotICAgICAgICAgICAg
fQorICAgICAgICAgICAgQVNTRVJUKHJ1bnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIFJ1biYgbGFz
dFJ1biA9IHJ1bnMubGFzdCgpOworICAgICAgICAgICAgbGFzdFJ1bi5lbmQgPSBlbmRQb3NpdGlv
bjsKKyAgICAgICAgICAgIGxhc3RSdW4ubG9naWNhbFJpZ2h0ID0gbV9ydW5zV2lkdGggKyBmcmFn
bWVudC53aWR0aCgpOwogICAgICAgICB9Ci0gICAgICAgIG1fZnJhZ21lbnRzLmFwcGVuZChmcmFn
bWVudCk7CisgICAgICAgIG1fY3JlYXRlTmV3UnVuID0gZnJhZ21lbnQuaXNDb2xsYXBzZWQoKTsK
ICAgICAgICAgbV9ydW5zV2lkdGggKz0gZnJhZ21lbnQud2lkdGgoKTsKIAogICAgICAgICBpZiAo
ZnJhZ21lbnQudHlwZSgpID09IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6Oldo
aXRlc3BhY2UpIHsKQEAgLTMxOCwzNCArMjc0LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1f
Zmlyc3RDaGFyYWN0ZXJGaXRzID0gZnJhZ21lbnQuc3RhcnQoKSArIDEgPiBlbmRQb3NpdGlvbiB8
fCBtX3J1bnNXaWR0aCA8PSBtX2F2YWlsYWJsZVdpZHRoOwogICAgIH0KIAotICAgIFRleHRGcmFn
bWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQgcmV2ZXJ0VG9MYXN0Q29tcGxldGVGcmFnbWVudChM
YXlvdXQ6OlJ1blZlY3RvciYgcnVucykKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2ZyYWdtZW50
cy5zaXplKCkpOwotICAgICAgICB1bnNpZ25lZCByZXZlcnRMZW5ndGggPSAwOwotICAgICAgICBm
bG9hdCByZXZlcnRXaWR0aCA9IDA7Ci0gICAgICAgIHdoaWxlIChtX2ZyYWdtZW50cy5zaXplKCkp
IHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIGN1cnJlbnQgPSBtX2ZyYWdtZW50cy5sYXN0KCk7
Ci0gICAgICAgICAgICBpZiAoY3VycmVudCA9PSBtX2xhc3RDb21wbGV0ZUZyYWdtZW50KQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmV2ZXJ0TGVuZ3RoICs9IGN1cnJlbnQu
ZW5kKCkgLSBjdXJyZW50LnN0YXJ0KCk7Ci0gICAgICAgICAgICByZXZlcnRXaWR0aCArPSBjdXJy
ZW50LndpZHRoKCk7Ci0gICAgICAgICAgICBtX2ZyYWdtZW50cy5yZW1vdmVMYXN0KCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9ydW5zV2lkdGggLT0gcmV2ZXJ0V2lkdGg7Ci0gICAgICAgIGlmIChy
ZXZlcnRMZW5ndGgpCi0gICAgICAgICAgICByZXZlcnRSdW5zKHJ1bnMsIHJldmVydExlbmd0aCwg
cmV2ZXJ0V2lkdGgpOwotICAgICAgICByZXR1cm4gbV9sYXN0Q29tcGxldGVGcmFnbWVudDsKLSAg
ICB9Ci0KICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMYXlvdXQ6OlJ1blZlY3Rv
ciYgcnVucykKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBzeW5jIG1fZnJhZ21lbnQsIGJ1dCBp
dCdzIG9rIGZvciBub3cgYXMgd2UgZG9uJ3QgdXNlIG1fZnJhZ21lbnQgYW55bW9yZSBhZnRlciBy
ZW1vdmVUcmFpbGluZ1doaXRlc3BhY2UuCi0gICAgICAgIGlmICghbV90cmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHJldmVydFJ1bnMocnVucywg
bV90cmFpbGluZ1doaXRlc3BhY2VMZW5ndGgsIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgpOwor
ICAgICAgICBBU1NFUlQocnVucy5zaXplKCkpOworICAgICAgICBSdW4mIGxhc3RSdW4gPSBydW5z
Lmxhc3QoKTsKKyAgICAgICAgbGFzdFJ1bi5sb2dpY2FsUmlnaHQgLT0gbV90cmFpbGluZ1doaXRl
c3BhY2VXaWR0aDsKKyAgICAgICAgbGFzdFJ1bi5lbmQgLT0gbV90cmFpbGluZ1doaXRlc3BhY2VM
ZW5ndGg7CisgICAgICAgIGlmIChsYXN0UnVuLnN0YXJ0ID09IGxhc3RSdW4uZW5kKQorICAgICAg
ICAgICAgcnVucy5yZW1vdmVMYXN0KCk7CisKICAgICAgICAgbV9ydW5zV2lkdGggLT0gbV90cmFp
bGluZ1doaXRlc3BhY2VXaWR0aDsKLSAgICAgICAgbV90cmFpbGluZ1doaXRlc3BhY2VMZW5ndGgg
PSAwOwogICAgICAgICBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gMDsKKyAgICAgICAgbV90
cmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM1Mywx
NCArMjkzLDEyIEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV9sb2dpY2FsTGVmdE9mZnNldCB7IDAg
fTsKICAgICBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50IG1fb3ZlcmZsb3dlZEZy
YWdtZW50OwogICAgIGZsb2F0IG1fcnVuc1dpZHRoIHsgMCB9OwotICAgIFRleHRGcmFnbWVudEl0
ZXJhdG9yOjpUZXh0RnJhZ21lbnQgbV9sYXN0Q29tcGxldGVGcmFnbWVudDsKKyAgICBib29sIG1f
Y3JlYXRlTmV3UnVuIHsgdHJ1ZSB9OwogICAgIGZsb2F0IG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lk
dGggeyAwIH07IC8vIFVzZSB0aGlzIHRvIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHdpdGhv
dXQgcmUtbWVzdXJpbmcgdGhlIHRleHQuCiAgICAgdW5zaWduZWQgbV90cmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGggeyAwIH07Ci0gICAgZmxvYXQgbV9jb2xsYXBzZWRXaGl0ZXNwYWNlV2lkdGggeyAw
IH07CiAgICAgLy8gSGF2aW5nIG9uZSBjaGFyYWN0ZXIgb24gdGhlIGxpbmUgZG9lcyBub3QgbmVj
ZXNzYXJpbHkgbWVhbiBpdCBhY3R1YWxseSBmaXRzLgogICAgIC8vIEZpcnN0IGNoYXJhY3RlciBv
ZiB0aGUgZmlyc3QgZnJhZ21lbnQgbWlnaHQgYmUgZm9yY2VkIG9uIHRvIHRoZSBjdXJyZW50IGxp
bmUgZXZlbiBpZiBpdCBkb2VzIG5vdCBmaXQuCiAgICAgYm9vbCBtX2ZpcnN0Q2hhcmFjdGVyRml0
cyB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQ+IG1fZnJhZ21lbnRzOwogfTsKIAogY2xhc3MgRnJhZ21lbnRGb3J3YXJkSXRlcmF0b3IgOiBw
dWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCB1bnNpZ25lZD4g
ewpAQCAtNDUxLDM2ICszODksMTQgQEAgc3RhdGljIFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQgZmlyc3RGcmFnbWVudChUZXh0RnJhZ21lbnRJdGVyYXRvciYgdGUKICAgICB9CiAK
ICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHNraXAgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZS4K
LSAgICBpZiAoc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlKSB7Ci0gICAgICAgIHdoaWxlIChmaXJz
dEZyYWdtZW50LnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpX
aGl0ZXNwYWNlKQotICAgICAgICAgICAgZmlyc3RGcmFnbWVudCA9IHRleHRGcmFnbWVudEl0ZXJh
dG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKLSAgICB9CisgICAgaWYgKHN0eWxlLmNvbGxhcHNlV2hp
dGVzcGFjZSAmJiBmaXJzdEZyYWdtZW50LnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6
VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlKQorICAgICAgICBmaXJzdEZyYWdtZW50ID0gdGV4dEZy
YWdtZW50SXRlcmF0b3IubmV4dFRleHRGcmFnbWVudCgpOwogICAgIHJldHVybiBmaXJzdEZyYWdt
ZW50OwogfQogCi1zdGF0aWMgdm9pZCBmb3JjZUZyYWdtZW50VG9MaW5lKExpbmVTdGF0ZSYgbGlu
ZSwgVGV4dEZyYWdtZW50SXRlcmF0b3ImIHRleHRGcmFnbWVudEl0ZXJhdG9yLCBMYXlvdXQ6OlJ1
blZlY3RvciYgcnVucywgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudCYg
ZnJhZ21lbnQpCi17Ci0gICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENyZWF0ZVJ1bklmTmVlZGVk
KGZyYWdtZW50LCBydW5zKTsKLSAgICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgbW9yZSBmcmFnbWVu
dHMgdG8gYWRkIHRvIHRoZSBjdXJyZW50IGxpbmUuCi0gICAgaWYgKCFmcmFnbWVudC5vdmVybGFw
c1RvTmV4dFJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBhdXRvIG5leHRGcmFnbWVu
dCA9IHRleHRGcmFnbWVudEl0ZXJhdG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKLSAgICB3aGlsZSAo
dHJ1ZSkgewotICAgICAgICBpZiAobmV4dEZyYWdtZW50LnR5cGUoKSAhPSBmcmFnbWVudC50eXBl
KCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENy
ZWF0ZVJ1bklmTmVlZGVkKG5leHRGcmFnbWVudCwgcnVucyk7Ci0gICAgICAgIC8vIERvZXMgaXQg
b3ZlcmxhcCB0byB0aGUgbmV4dCBzZWdtZW50PwotICAgICAgICBpZiAoIW5leHRGcmFnbWVudC5v
dmVybGFwc1RvTmV4dFJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG5l
eHRGcmFnbWVudCA9IHRleHRGcmFnbWVudEl0ZXJhdG9yLm5leHRUZXh0RnJhZ21lbnQoKTsKLSAg
ICB9Ci0gICAgbGluZS5zZXRPdmVyZmxvd2VkRnJhZ21lbnQobmV4dEZyYWdtZW50KTsKLX0KLQog
c3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3Rh
dGUmIHByZXZpb3VzTGluZSwgTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIFRleHRGcmFnbWVudEl0
ZXJhdG9yJiB0ZXh0RnJhZ21lbnRJdGVyYXRvcikKIHsKICAgICBjb25zdCBhdXRvJiBzdHlsZSA9
IHRleHRGcmFnbWVudEl0ZXJhdG9yLnN0eWxlKCk7Ci0gICAgbGluZS5zZXRDb2xsYXBlZFdoaXRl
c3BhY2VXaWR0aChzdHlsZS5zcGFjZVdpZHRoKTsKICAgICBib29sIGxpbmVDYW5CZVdyYXBwZWQg
PSBzdHlsZS53cmFwTGluZXMgfHwgc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdzsKICAgICBhdXRv
IGZyYWdtZW50ID0gZmlyc3RGcmFnbWVudCh0ZXh0RnJhZ21lbnRJdGVyYXRvciwgcHJldmlvdXNM
aW5lKTsKICAgICB3aGlsZSAoZnJhZ21lbnQudHlwZSgpICE9IFRleHRGcmFnbWVudEl0ZXJhdG9y
OjpUZXh0RnJhZ21lbnQ6OkNvbnRlbnRFbmQpIHsKQEAgLTQ4OCw3ICs0MDQsNyBAQCBzdGF0aWMg
Ym9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJl
dmlvdXNMaW5lLCBMYXlvdQogICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSgpID09IFRleHRGcmFn
bWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykgewogICAgICAgICAgICAgLy8g
QWRkIHRoZSBuZXcgbGluZSBmcmFnbWVudCBvbmx5IGlmIHRoZXJlJ3Mgbm90aGluZyBvbiB0aGUg
bGluZS4gKG90aGVyd2lzZSB0aGUgZXh0cmEgbmV3IGxpbmUgY2hhcmFjdGVyIHdvdWxkIHNob3cg
dXAgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudC4pCiAgICAgICAgICAgICBpZiAoIWxpbmUud2lk
dGgoKSkKLSAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZEZyYWdtZW50QW5kQ3JlYXRlUnVuSWZO
ZWVkZWQoZnJhZ21lbnQsIHJ1bnMpOworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kRnJhZ21l
bnQoZnJhZ21lbnQsIHJ1bnMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGxpbmVDYW5CZVdyYXBwZWQgJiYgIWxpbmUuZml0cyhmcmFnbWVudC53aWR0aCgpKSkg
ewpAQCAtNDk3LDEzICs0MTMsMTMgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0
YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5b3UKICAgICAgICAg
ICAgIC8vIDIuIFdoaXRlc3BhY2UgY29sbGFwc2Ugb2ZmOiB3aGl0ZXNwYWNlIGlzIHdyYXBwZWQu
CiAgICAgICAgICAgICAvLyAzLiBGaXJzdCwgbm9uLXdoaXRlc3BhY2UgZnJhZ21lbnQgaXMgZWl0
aGVyIHdyYXBwZWQgb3Iga2VwdCBvbiB0aGUgbGluZS4gKGRlcGVuZHMgb24gb3ZlcmZsb3ctd3Jh
cCkKICAgICAgICAgICAgIC8vIDQuIE5vbi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUn
cyBhbHJlYWR5IGFub3RoZXIgZnJhZ21lbnQgb24gdGhlIGxpbmUgZ2V0cyBwdXNoZWQgdG8gdGhl
IG5leHQgbGluZS4KLSAgICAgICAgICAgIGJvb2wgZW1wdHlMaW5lID0gbGluZS5pc0VtcHR5KCk7
CisgICAgICAgICAgICBib29sIGVtcHR5TGluZSA9ICFsaW5lLndpZHRoKCk7CiAgICAgICAgICAg
ICAvLyBXaGl0ZXNwYWNlIGZyYWdtZW50LgogICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUo
KSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3Rh
eXMgb24gdGhpcyBsaW5lLCBvdmVyZmxvd2VkRnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGlu
ZS4KICAgICAgICAgICAgICAgICAgICAgbGluZS5zZXRPdmVyZmxvd2VkRnJhZ21lbnQoc3BsaXRG
cmFnbWVudFRvRml0TGluZShmcmFnbWVudCwgbGluZS5hdmFpbGFibGVXaWR0aCgpIC0gbGluZS53
aWR0aCgpLCBlbXB0eUxpbmUsIHRleHRGcmFnbWVudEl0ZXJhdG9yKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGxpbmUuYXBwZW5kRnJhZ21lbnRBbmRDcmVhdGVSdW5JZk5lZWRlZChmcmFnbWVudCwg
cnVucyk7CisgICAgICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQs
IHJ1bnMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXaGVuIHdoaXRl
c3BhY2UgY29sbGFwc2UgaXMgb24sIHdoaXRlc3BhY2UgdGhhdCBkb2Vzbid0IGZpdCBpcyBzaW1w
bHkgc2tpcHBlZC4KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUxMiwzMCArNDI4LDIzIEBA
IHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwgY29uc3QgTGluZVN0
YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiAgICAgICAgICAgICBpZiAoKGVtcHR5TGluZSAmJiBz
dHlsZS5icmVha1dvcmRPbk92ZXJmbG93KSB8fCAhc3R5bGUud3JhcExpbmVzKSB7CiAgICAgICAg
ICAgICAgICAgLy8gU3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3RheXMg
b24gdGhpcyBsaW5lLCBvdmVyZmxvd2VkRnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGluZS4K
ICAgICAgICAgICAgICAgICBsaW5lLnNldE92ZXJmbG93ZWRGcmFnbWVudChzcGxpdEZyYWdtZW50
VG9GaXRMaW5lKGZyYWdtZW50LCBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgLSBsaW5lLndpZHRoKCks
IGVtcHR5TGluZSwgdGV4dEZyYWdtZW50SXRlcmF0b3IpKTsKLSAgICAgICAgICAgICAgICBsaW5l
LmFwcGVuZEZyYWdtZW50QW5kQ3JlYXRlUnVuSWZOZWVkZWQoZnJhZ21lbnQsIHJ1bnMpOworICAg
ICAgICAgICAgICAgIGxpbmUuYXBwZW5kRnJhZ21lbnQoZnJhZ21lbnQsIHJ1bnMpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm9uLWJyZWFr
YWJsZSBub24td2hpdGVzcGFjZSBmaXJzdCBmcmFnbWVudC4gQWRkIGl0IHRvIHRoZSBjdXJyZW50
IGxpbmUuIC1pdCBvdmVyZmxvd3MgdGhvdWdoLgotICAgICAgICAgICAgQVNTRVJUKGZyYWdtZW50
LnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpOb25XaGl0ZXNw
YWNlKTsKICAgICAgICAgICAgIGlmIChlbXB0eUxpbmUpIHsKLSAgICAgICAgICAgICAgICBmb3Jj
ZUZyYWdtZW50VG9MaW5lKGxpbmUsIHRleHRGcmFnbWVudEl0ZXJhdG9yLCBydW5zLCBmcmFnbWVu
dCk7CisgICAgICAgICAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudChmcmFnbWVudCwgcnVucyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBO
b24tYnJlYWthYmxlIG5vbi13aGl0ZXNwYWNlIGZyYWdtZW50IHdoZW4gdGhlcmUncyBhbHJlYWR5
IGNvbnRlbnQgb24gdGhlIGxpbmUuIFB1c2ggaXQgdG8gdGhlIG5leHQgbGluZS4KLSAgICAgICAg
ICAgIGlmIChsaW5lLmxhc3RGcmFnbWVudCgpLm92ZXJsYXBzVG9OZXh0UmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgZnJhZ21lbnQgaXMgYSBjb250aW51YXRp
b24gb2YgYSBwcmV2aW91cyBzZWdtZW50LiBJbiBzdWNoIGNhc2VzLCB3ZSBuZWVkIHRvIHJlbW92
ZSB0aGVtIGFsbC4KLSAgICAgICAgICAgICAgICBjb25zdCBhdXRvJiBjdXJyZW50RnJhZ21lbnQg
PSBsaW5lLnJldmVydFRvTGFzdENvbXBsZXRlRnJhZ21lbnQocnVucyk7Ci0gICAgICAgICAgICAg
ICAgdGV4dEZyYWdtZW50SXRlcmF0b3IucmV2ZXJ0VG9GcmFnbWVudChjdXJyZW50RnJhZ21lbnQp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgbGlu
ZS5zZXRPdmVyZmxvd2VkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudEFuZENyZWF0ZVJ1bklmTmVlZGVk
KGZyYWdtZW50LCBydW5zKTsKKyAgICAgICAgbGluZS5hcHBlbmRGcmFnbWVudChmcmFnbWVudCwg
cnVucyk7CiAgICAgICAgIC8vIEZpbmQgdGhlIG5leHQgdGV4dCBmcmFnbWVudC4KICAgICAgICAg
ZnJhZ21lbnQgPSB0ZXh0RnJhZ21lbnRJdGVyYXRvci5uZXh0VGV4dEZyYWdtZW50KGxpbmUud2lk
dGgoKSk7CiAgICAgfQotICAgIHJldHVybiAoZnJhZ21lbnQudHlwZSgpID09IFRleHRGcmFnbWVu
dEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkNvbnRlbnRFbmQgJiYgbGluZS5vdmVyZmxvd2VkRnJh
Z21lbnQoKS5pc0VtcHR5KCkpIHx8IGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50KCkudHlwZSgpID09
IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkNvbnRlbnRFbmQ7CisgICAgcmV0
dXJuIGZyYWdtZW50LnR5cGUoKSA9PSBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50
OjpDb250ZW50RW5kICYmIGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50KCkuaXNFbXB0eSgpOwogfQog
CiBzdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVTdGF0ZSYgbGlu
ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIHVuc2lnbmVkIHByZXZpb3VzUnVuQ291bnQsIHVu
c2lnbmVkJiBsaW5lQ291bnQsIGNvbnN0IFRleHRGcmFnbWVudEl0ZXJhdG9yJiB0ZXh0RnJhZ21l
bnRJdGVyYXRvcikKQEAgLTU1Nyw2ICs0NjYsMjggQEAgc3RhdGljIHZvaWQgY2xvc2VMaW5lRW5k
aW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVjdG9yJiBydW4K
ICAgICArK2xpbmVDb3VudDsKIH0KIAorc3RhdGljIHZvaWQgc3BsaXRSdW5zQXRSZW5kZXJlckJv
dW5kYXJ5KExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgY29uc3QgVGV4dEZyYWdtZW50SXRl
cmF0b3ImIHRleHRGcmFnbWVudEl0ZXJhdG9yKQoreworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cHJvYmFibHkgc3BsaXQgZHVyaW5nIHJ1biBjb25zdHJ1Y3Rpb24gaW5zdGVhZCBvZiBhcyBhIHNl
cGFyYXRlIHBhc3MuCisgICAgaWYgKGxpbmVSdW5zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHVuc2lnbmVkIHJ1bkluZGV4ID0gMDsKKyAgICBkbyB7CisgICAgICAgIGNvbnN0IFJ1
biYgcnVuID0gbGluZVJ1bnMuYXQocnVuSW5kZXgpOworICAgICAgICBBU1NFUlQocnVuLnN0YXJ0
ICE9IHJ1bi5lbmQpOworICAgICAgICBhdXRvJiBzdGFydFNlZ21lbnQgPSB0ZXh0RnJhZ21lbnRJ
dGVyYXRvci5zZWdtZW50Rm9yUG9zaXRpb24ocnVuLnN0YXJ0KTsKKyAgICAgICAgaWYgKHJ1bi5l
bmQgPD0gc3RhcnRTZWdtZW50LmVuZCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAv
LyBUaGlzIHJ1biBvdmVybGFwcyBtdWx0aXBsZSByZW5kZXJlcnMuIFNwbGl0IGl0IHVwLgorICAg
ICAgICAvLyBTcGxpdCBydW4gYXQgdGhlIHJlbmRlcmVyJ3MgYm91bmRhcnkgYW5kIGNyZWF0ZSBh
IG5ldyBydW4gZm9yIHRoZSBsZWZ0IHNpZGUsIHdoaWxlIHVzZSB0aGUgY3VycmVudCBydW4gYXMg
dGhlIHJpZ2h0IHNpZGUuCisgICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodE9mTGVmdFJ1biA9IHJ1
bi5sb2dpY2FsTGVmdCArIHRleHRGcmFnbWVudEl0ZXJhdG9yLnRleHRXaWR0aChydW4uc3RhcnQs
IHN0YXJ0U2VnbWVudC5lbmQsIHJ1bi5sb2dpY2FsTGVmdCk7CisgICAgICAgIGxpbmVSdW5zLmlu
c2VydChydW5JbmRleCwgUnVuKHJ1bi5zdGFydCwgc3RhcnRTZWdtZW50LmVuZCwgcnVuLmxvZ2lj
YWxMZWZ0LCBsb2dpY2FsUmlnaHRPZkxlZnRSdW4sIGZhbHNlKSk7CisgICAgICAgIFJ1biYgcmln
aHRTaWRlUnVuID0gbGluZVJ1bnMuYXQocnVuSW5kZXggKyAxKTsKKyAgICAgICAgcmlnaHRTaWRl
UnVuLnN0YXJ0ID0gc3RhcnRTZWdtZW50LmVuZDsKKyAgICAgICAgcmlnaHRTaWRlUnVuLmxvZ2lj
YWxMZWZ0ID0gbG9naWNhbFJpZ2h0T2ZMZWZ0UnVuOworICAgIH0gd2hpbGUgKCsrcnVuSW5kZXgg
PCBsaW5lUnVucy5zaXplKCkpOworfQorCiBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlv
dXQ6OlJ1blZlY3RvciYgcnVucywgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCYgbGlu
ZUNvdW50KQogewogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGZsb3cu
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpAQCAtNTc0LDYgKzUwNSw5IEBAIHN0YXRpYyB2b2lk
IGNyZWF0ZVRleHRSdW5zKExheW91dDo6UnVuVmVjdG9yJiBydW5zLCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3csIHVuc2lnCiAgICAgICAgIGlzRW5kT2ZDb250ZW50ID0gY3JlYXRlTGluZVJ1bnMobGlu
ZSwgcHJldmlvdXNMaW5lLCBydW5zLCB0ZXh0RnJhZ21lbnRJdGVyYXRvcik7CiAgICAgICAgIGNs
b3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMobGluZSwgcnVucywgcHJldmlvdXNSdW5Db3VudCwg
bGluZUNvdW50LCB0ZXh0RnJhZ21lbnRJdGVyYXRvcik7CiAgICAgfSB3aGlsZSAoIWlzRW5kT2ZD
b250ZW50KTsKKworICAgIGlmIChmbG93LmZpcnN0Q2hpbGQoKSAhPSBmbG93Lmxhc3RDaGlsZCgp
KQorICAgICAgICBzcGxpdFJ1bnNBdFJlbmRlcmVyQm91bmRhcnkocnVucywgdGV4dEZyYWdtZW50
SXRlcmF0b3IpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUoUmVuZGVyQmxv
Y2tGbG93JiBmbG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCmluZGV4IDE2Y2IwOWU4OTQ5MWUzMTA3ZDEw
YTE5MWVjZmRlMzM4MzZiODljMWIuLjEyM2RlODM4ZTkxNWUxNDU3NzE1N2FlMDA3Nzc0ZjlmOTRl
YWI1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0Rmxvd0NvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dEZsb3dDb250ZW50cy5jcHAKQEAgLTUxLDEzICs1MSwxMiBAQCBGbG93Q29udGVu
dHM6OkZsb3dDb250ZW50cyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7CiB9CiAKLXVu
c2lnbmVkIEZsb3dDb250ZW50czo6c2VnbWVudEluZGV4Rm9yUnVuU2xvdyh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgZW5kKSBjb25zdAordW5zaWduZWQgRmxvd0NvbnRlbnRzOjpzZWdtZW50SW5k
ZXhGb3JQb3NpdGlvblNsb3codW5zaWduZWQgcG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgYXV0byBp
dCA9IHN0ZDo6bG93ZXJfYm91bmQobV9zZWdtZW50cy5iZWdpbigpLCBtX3NlZ21lbnRzLmVuZCgp
LCBzdGFydCwgW10oY29uc3QgU2VnbWVudCYgc2VnbWVudCwgdW5zaWduZWQgc3RhcnQpIHsKLSAg
ICAgICAgcmV0dXJuIHNlZ21lbnQuZW5kIDw9IHN0YXJ0OworICAgIGF1dG8gaXQgPSBzdGQ6Omxv
d2VyX2JvdW5kKG1fc2VnbWVudHMuYmVnaW4oKSwgbV9zZWdtZW50cy5lbmQoKSwgcG9zaXRpb24s
IFtdKGNvbnN0IFNlZ21lbnQmIHNlZ21lbnQsIHVuc2lnbmVkIHBvc2l0aW9uKSB7CisgICAgICAg
IHJldHVybiBzZWdtZW50LmVuZCA8PSBwb3NpdGlvbjsKICAgICB9KTsKICAgICBBU1NFUlQoaXQg
IT0gbV9zZWdtZW50cy5lbmQoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChlbmQsIGVuZCA8PSBpdC0+
ZW5kKTsKICAgICBhdXRvIGluZGV4ID0gaXQgLSBtX3NlZ21lbnRzLmJlZ2luKCk7CiAgICAgbV9s
YXN0U2VnbWVudEluZGV4ID0gaW5kZXg7CiAgICAgcmV0dXJuIGluZGV4OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzLmgK
aW5kZXggNjM3OTcyMTZhNDA0Yjk0ZDRkMmY0ZDUyYWE3ZGQ1NTU5MmNiYzg2Ni4uMWZjMzQ3OWQy
ZTdhNzZmNjExOWU5MzcyMzlkOThlZDRiZTQ4YjFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50cy5oCkBAIC00Mywy
NiArNDMsNjkgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgdGV4dDsKICAgICAgICAgY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlcjsKICAgICB9OwotICAgIGNvbnN0IFNlZ21lbnQmIHNlZ21l
bnRGb3JSdW4odW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkgY29uc3Q7CisgICAgY29uc3Qg
U2VnbWVudCYgc2VnbWVudEZvclBvc2l0aW9uKHVuc2lnbmVkKSBjb25zdDsKICAgICBjb25zdCBT
ZWdtZW50JiBzZWdtZW50Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Q7CiAK
LSAgICB0eXBlZGVmIFZlY3RvcjxTZWdtZW50LCA4Pjo6Y29uc3RfaXRlcmF0b3IgSXRlcmF0b3I7
Ci0gICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7
IH0KLSAgICBJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9
CisgICAgY2xhc3MgSXRlcmF0b3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgSXRlcmF0b3IoY29u
c3QgRmxvd0NvbnRlbnRzJiBmbG93Q29udGVudHMsIHVuc2lnbmVkIHNlZ21lbnRJbmRleCkKKyAg
ICAgICAgICAgIDogbV9mbG93Q29udGVudHMoZmxvd0NvbnRlbnRzKQorICAgICAgICAgICAgLCBt
X3NlZ21lbnRJbmRleChzZWdtZW50SW5kZXgpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0OworICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
SXRlcmF0b3ImIG90aGVyKSBjb25zdDsKKyAgICAgICAgY29uc3QgU2VnbWVudCYgb3BlcmF0b3Iq
KCkgY29uc3QgeyByZXR1cm4gbV9mbG93Q29udGVudHMubV9zZWdtZW50c1ttX3NlZ21lbnRJbmRl
eF07IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IEZsb3dDb250ZW50cyYgbV9mbG93
Q29udGVudHM7CisgICAgICAgIHVuc2lnbmVkIG1fc2VnbWVudEluZGV4OworICAgIH07CisKKyAg
ICBJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCAwKTsgfQor
ICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKCp0aGlzLCBtX3NlZ21l
bnRzLnNpemUoKSk7IH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VnbWVudHMubGFzdCgpLmVuZDsgfTsKKworICAgIHVuc2lnbmVkIHNlZ21lbnRJbmRleEZvclBv
c2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25l
ZCBzZWdtZW50SW5kZXhGb3JSdW5TbG93KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNv
bnN0OworICAgIHVuc2lnbmVkIHNlZ21lbnRJbmRleEZvclBvc2l0aW9uU2xvdyh1bnNpZ25lZCBw
b3NpdGlvbikgY29uc3Q7CisKICAgICBjb25zdCBWZWN0b3I8U2VnbWVudCwgOD4gbV9zZWdtZW50
czsKKwogICAgIG11dGFibGUgdW5zaWduZWQgbV9sYXN0U2VnbWVudEluZGV4OwogfTsKIAotaW5s
aW5lIGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgRmxvd0NvbnRlbnRzOjpzZWdtZW50Rm9y
UnVuKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpIGNvbnN0CitpbmxpbmUgRmxvd0NvbnRl
bnRzOjpJdGVyYXRvciYgRmxvd0NvbnRlbnRzOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpCit7Cisg
ICAgKyttX3NlZ21lbnRJbmRleDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK2lubGluZSBib29s
IEZsb3dDb250ZW50czo6SXRlcmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgRmxvd0NvbnRlbnRzOjpJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VnbWVudEluZGV4ID09IG90
aGVyLm1fc2VnbWVudEluZGV4OworfQorCitpbmxpbmUgYm9vbCBGbG93Q29udGVudHM6Okl0ZXJh
dG9yOjpvcGVyYXRvciE9KGNvbnN0IEZsb3dDb250ZW50czo6SXRlcmF0b3ImIG90aGVyKSBjb25z
dAoreworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKworaW5saW5lIHVuc2lnbmVk
IEZsb3dDb250ZW50czo6c2VnbWVudEluZGV4Rm9yUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24p
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKHN0YXJ0IDwgZW5kKTsKICAgICBhdXRvJiBsYXN0U2VnbWVu
dCA9IG1fc2VnbWVudHNbbV9sYXN0U2VnbWVudEluZGV4XTsKLSAgICBpZiAobGFzdFNlZ21lbnQu
c3RhcnQgPD0gc3RhcnQgJiYgZW5kIDw9IGxhc3RTZWdtZW50LmVuZCkKLSAgICAgICAgcmV0dXJu
IG1fc2VnbWVudHNbbV9sYXN0U2VnbWVudEluZGV4XTsKLSAgICByZXR1cm4gbV9zZWdtZW50c1tz
ZWdtZW50SW5kZXhGb3JSdW5TbG93KHN0YXJ0LCBlbmQpXTsKKyAgICBpZiAobGFzdFNlZ21lbnQu
c3RhcnQgPD0gcG9zaXRpb24gJiYgcG9zaXRpb24gPCBsYXN0U2VnbWVudC5lbmQpCisgICAgICAg
IHJldHVybiBtX2xhc3RTZWdtZW50SW5kZXg7CisgICAgcmV0dXJuIHNlZ21lbnRJbmRleEZvclBv
c2l0aW9uU2xvdyhwb3NpdGlvbik7Cit9CisKK2lubGluZSBjb25zdCBGbG93Q29udGVudHM6OlNl
Z21lbnQmIEZsb3dDb250ZW50czo6c2VnbWVudEZvclBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9u
KSBjb25zdAoreworICAgIHJldHVybiBtX3NlZ21lbnRzW3NlZ21lbnRJbmRleEZvclBvc2l0aW9u
KHBvc2l0aW9uKV07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAppbmRleCA5YjAxMmIyMjc2ZTkwOTVkZjBj
N2MzMGYyMWEwYzJhODYwNThmNjRkLi5kNTE5OWQ4NDQ4NzhjYTQ4MmQyYWE0MThiOGRiYzI1YmI5
NDVmY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCkBAIC04NCw3ICs4NCw2IEBAIHZvaWQgcGFpbnRGbG93KGNv
bnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5m
byYgcGFpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuKHJ1
bi50ZXh0KCkpOwogICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hp
dGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwotICAgICAgICB0ZXh0UnVuLnNldFhQb3MocnVu
LnJlY3QoKS54KCkpOwogICAgICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4gPSBydW4uYmFzZWxp
bmUoKSArIHBhaW50T2Zmc2V0OwogICAgICAgICB0ZXh0T3JpZ2luLnNldFkocm91bmRUb0Rldmlj
ZVBpeGVsKExheW91dFVuaXQodGV4dE9yaWdpbi55KCkpLCBmbG93LmRvY3VtZW50KCkuZGV2aWNl
U2NhbGVGYWN0b3IoKSkpOwogICAgICAgICBjb250ZXh0LmRyYXdUZXh0KGZvbnQsIHRleHRSdW4s
IHRleHRPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dFJlc29sdmVyLmNwcAppbmRleCBiMjNiNDc1NGVlZjc1OTZmZDU2ZTQxMjZjYzQx
NDllNmY1NzFjYmRkLi5lOGQyNWI2YmEwNWU3ZDlkNmE3MmI4NGM2Yzk5MjUxMTE3Mzg2MzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJl
c29sdmVyLmNwcApAQCAtNzYsOCArNzYsNyBAQCBTdHJpbmdWaWV3IFJ1blJlc29sdmVyOjpSdW46
OnRleHQoKSBjb25zdAogewogICAgIGF1dG8mIHJlc29sdmVyID0gbV9pdGVyYXRvci5yZXNvbHZl
cigpOwogICAgIGF1dG8mIHJ1biA9IG1faXRlcmF0b3Iuc2ltcGxlUnVuKCk7Ci0gICAgQVNTRVJU
KHJ1bi5zdGFydCA8IHJ1bi5lbmQpOwotICAgIGF1dG8mIHNlZ21lbnQgPSByZXNvbHZlci5tX2Zs
b3dDb250ZW50cy5zZWdtZW50Rm9yUnVuKHJ1bi5zdGFydCwgcnVuLmVuZCk7CisgICAgYXV0byYg
c2VnbWVudCA9IHJlc29sdmVyLm1fZmxvd0NvbnRlbnRzLnNlZ21lbnRGb3JQb3NpdGlvbihydW4u
c3RhcnQpOwogICAgIC8vIFdlIGN1cnJlbnRseSBzcGxpdCBydW5zIG9uIHNlZ21lbnQgYm91bmRh
cmllcyAoZGlmZmVyZW50IFJlbmRlck9iamVjdCkuCiAgICAgQVNTRVJUKHJ1bi5lbmQgPD0gc2Vn
bWVudC5lbmQpOwogICAgIGlmIChzZWdtZW50LnRleHQuaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFnbWVudEl0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZy
YWdtZW50SXRlcmF0b3IuY3BwCmluZGV4IDI0NTYyMTYzMDIyYjVkNWRmNDEzYWNkMWY4ODU4YjA2
NWI1MjBiYzIuLjg3MTczMTk5ZmZhZGYwMWYzZGQyNjMyODk0ZjQxZmM0ZmZiN2Y2NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdt
ZW50SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwCkBAIC00OCw4ICs0OCw3IEBAIFRleHRGcmFn
bWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBU
ZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50SXRlcmF0b3IoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiBmbG93KQogICAgIDogbV9mbG93Q29udGVudHMoZmxvdykKLSAgICAsIG1fY3VycmVu
dFNlZ21lbnQobV9mbG93Q29udGVudHMuYmVnaW4oKSkKLSAgICAsIG1fbGluZUJyZWFrSXRlcmF0
b3IobV9jdXJyZW50U2VnbWVudC0+dGV4dCwgZmxvdy5zdHlsZSgpLmxvY2FsZSgpKQorICAgICwg
bV9saW5lQnJlYWtJdGVyYXRvcigoKm1fZmxvd0NvbnRlbnRzLmJlZ2luKCkpLnRleHQsIGZsb3cu
c3R5bGUoKS5sb2NhbGUoKSkKICAgICAsIG1fc3R5bGUoZmxvdy5zdHlsZSgpKQogewogfQpAQCAt
NjEsMTM1ICs2MCwxMTUgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlRleHRGcmFnbWVudCBUZXh0
RnJhZ21lbnRJdGVyYXRvcjo6bmV4dFRleHRGcmFnbWVudChmbG9hdAogICAgIC8vIDIuIHdoaXRl
c3BhY2UgKGNvbGxhc3BlZCwgbm9uLWNvbGxhcHNlZCBtdWx0aSBvciBzaW5nbGUpIG9yCiAgICAg
Ly8gMy4gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4KICAgICAvLyA0LiBlbXB0eSwgaW5kaWNh
dGluZyBjb250ZW50IGVuZC4KLSAgICBBU1NFUlQobV9jdXJyZW50U2VnbWVudCAhPSBtX2Zsb3dD
b250ZW50cy5lbmQoKSk7Ci0gICAgaWYgKG1fcG9zaXRpb24gPT0gbV9jdXJyZW50U2VnbWVudC0+
ZW5kKQotICAgICAgICArK21fY3VycmVudFNlZ21lbnQ7Ci0gICAgLy8gSXMgaXQgY29udGVudCBl
bmQ/Ci0gICAgaWYgKG1fY3VycmVudFNlZ21lbnQgPT0gbV9mbG93Q29udGVudHMuZW5kKCkpCisg
ICAgaWYgKGlzRW5kKG1fcG9zaXRpb24pKQogICAgICAgICByZXR1cm4gVGV4dEZyYWdtZW50KG1f
cG9zaXRpb24sIG1fcG9zaXRpb24sIDAsIFRleHRGcmFnbWVudDo6Q29udGVudEVuZCk7Ci0gICAg
dW5zaWduZWQgc2VnbWVudEVuZFBvc2l0aW9uID0gbV9jdXJyZW50U2VnbWVudC0+ZW5kOwotICAg
IHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBtX3Bvc2l0aW9uOwogICAgIGlmIChpc0xpbmVCcmVh
ayhtX3Bvc2l0aW9uKSkgewotICAgICAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9ICsrbV9wb3Np
dGlvbjsKLSAgICAgICAgcmV0dXJuIFRleHRGcmFnbWVudChzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbiwgMCwgVGV4dEZyYWdtZW50OjpMaW5lQnJlYWspOworICAgICAgICBUZXh0RnJhZ21lbnQg
ZnJhZ21lbnQobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDEsIDAsIFRleHRGcmFnbWVudDo6TGlu
ZUJyZWFrKTsKKyAgICAgICAgKyttX3Bvc2l0aW9uOworICAgICAgICByZXR1cm4gZnJhZ21lbnQ7
CiAgICAgfQotICAgIGZsb2F0IHdpZHRoID0gMDsKLSAgICBib29sIG92ZXJsYXBwaW5nRnJhZ21l
bnQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHNraXBUb05leHRQb3NpdGlv
bihQb3NpdGlvblR5cGU6Ok5vbldoaXRlc3BhY2UsIHN0YXJ0UG9zaXRpb24sIHdpZHRoLCB4UG9z
aXRpb24sIG92ZXJsYXBwaW5nRnJhZ21lbnQpOworICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24g
PSBtX3Bvc2l0aW9uOworICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gc2tpcFRvTmV4dFBvc2l0
aW9uKFBvc2l0aW9uVHlwZTo6Tm9uV2hpdGVzcGFjZSwgc3RhcnRQb3NpdGlvbik7CiAgICAgQVNT
RVJUKHN0YXJ0UG9zaXRpb24gPD0gZW5kUG9zaXRpb24pOwotICAgIGlmIChzdGFydFBvc2l0aW9u
IDwgZW5kUG9zaXRpb24pIHsKKyAgICBpZiAoZW5kUG9zaXRpb24gPiBzdGFydFBvc2l0aW9uKSB7
CiAgICAgICAgIGJvb2wgbXVsdGlwbGVXaGl0ZXNwYWNlID0gc3RhcnRQb3NpdGlvbiArIDEgPCBl
bmRQb3NpdGlvbjsKICAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCA9IG11bHRpcGxlV2hpdGVzcGFj
ZSAmJiBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFjZTsKICAgICAgICAgYm9vbCBpc0JyZWFrYWJs
ZSA9ICFpc0NvbGxhcHNlZCAmJiBtdWx0aXBsZVdoaXRlc3BhY2U7CisgICAgICAgIGZsb2F0IHdp
ZHRoID0gaXNDb2xsYXBzZWQgPyBtX3N0eWxlLnNwYWNlV2lkdGggOiB0ZXh0V2lkdGgoc3RhcnRQ
b3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbik7CiAgICAgICAgIG1fcG9zaXRpb24gPSBl
bmRQb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIFRleHRGcmFnbWVudChzdGFydFBvc2l0aW9uLCBl
bmRQb3NpdGlvbiwgd2lkdGgsIFRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSwgZW5kUG9zaXRpb24g
PT0gc2VnbWVudEVuZFBvc2l0aW9uLCBmYWxzZSwgaXNDb2xsYXBzZWQsIG1fc3R5bGUuY29sbGFw
c2VXaGl0ZXNwYWNlLCBpc0JyZWFrYWJsZSk7CisgICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQo
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHdpZHRoLCBUZXh0RnJhZ21lbnQ6OldoaXRlc3Bh
Y2UsIGlzQ29sbGFwc2VkLCBpc0JyZWFrYWJsZSk7CiAgICAgfQotICAgIGVuZFBvc2l0aW9uID0g
c2tpcFRvTmV4dFBvc2l0aW9uKFBvc2l0aW9uVHlwZTo6QnJlYWthYmxlLCBzdGFydFBvc2l0aW9u
LCB3aWR0aCwgeFBvc2l0aW9uLCBvdmVybGFwcGluZ0ZyYWdtZW50KTsKKyAgICBlbmRQb3NpdGlv
biA9IHNraXBUb05leHRQb3NpdGlvbihQb3NpdGlvblR5cGU6OkJyZWFrYWJsZSwgc3RhcnRQb3Np
dGlvbiArIDEpOwogICAgIG1fcG9zaXRpb24gPSBlbmRQb3NpdGlvbjsKLSAgICByZXR1cm4gVGV4
dEZyYWdtZW50KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB3aWR0aCwgVGV4dEZyYWdtZW50
OjpOb25XaGl0ZXNwYWNlLCBlbmRQb3NpdGlvbiA9PSBzZWdtZW50RW5kUG9zaXRpb24sIG92ZXJs
YXBwaW5nRnJhZ21lbnQsIGZhbHNlLCBmYWxzZSwgbV9zdHlsZS5icmVha1dvcmRPbk92ZXJmbG93
KTsKKyAgICByZXR1cm4gVGV4dEZyYWdtZW50KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB0
ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbiksIFRleHRGcmFn
bWVudDo6Tm9uV2hpdGVzcGFjZSwgZmFsc2UsIG1fc3R5bGUuYnJlYWtXb3JkT25PdmVyZmxvdyk7
CiB9CiAKLXZvaWQgVGV4dEZyYWdtZW50SXRlcmF0b3I6OnJldmVydFRvRnJhZ21lbnQoY29uc3Qg
VGV4dEZyYWdtZW50JiBmcmFnbWVudCkKK2Zsb2F0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjp0ZXh0
V2lkdGgodW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8sIGZsb2F0IHhQb3NpdGlvbikgY29uc3QK
IHsKLSAgICBBU1NFUlQobV9wb3NpdGlvbiA+PSBmcmFnbWVudC5lbmQoKSk7Ci0gICAgQVNTRVJU
KGZyYWdtZW50LnN0YXJ0KCkgPj0gMCk7Ci0gICAgLy8gUmV2ZXJ0IHNlZ21lbnQgZmlyc3QuCi0g
ICAgd2hpbGUgKG1fY3VycmVudFNlZ21lbnQtPnN0YXJ0ID4gZnJhZ21lbnQuc3RhcnQoKSkKLSAg
ICAgICAgLS1tX2N1cnJlbnRTZWdtZW50OwotICAgIC8vIFRPRE86IEl0IHJldmVydHMgdG8gdGhl
IGxhc3QgZnJhZ21lbnQgb24gdGhlIHNhbWUgcG9zaXRpb24sIGJ1dCB0aGF0J3Mgb2sgZm9yIG5v
dyBhcyB3ZSBkb24ndCBuZWVkIHRvCi0gICAgLy8gZGlmZmVyZW50aWF0ZSBtdWx0aXBsZSByZW5k
ZXJlcnMgb24gdGhlIHNhbWUgcG9zaXRpb24uCi0gICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LnN0
YXJ0KCk7CisgICAgY29uc3QgYXV0byYgZnJvbVNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdt
ZW50Rm9yUG9zaXRpb24oZnJvbSk7CisgICAgQVNTRVJUKGlzPFJlbmRlclRleHQ+KGZyb21TZWdt
ZW50LnJlbmRlcmVyKSk7CisgICAgaWYgKChtX3N0eWxlLmZvbnQuaXNGaXhlZFBpdGNoKCkgJiYg
ZnJvbVNlZ21lbnQuZW5kID49IHRvKSB8fCAoZnJvbSA9PSBmcm9tU2VnbWVudC5zdGFydCAmJiB0
byA9PSBmcm9tU2VnbWVudC5lbmQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyVGV4
dD4oZnJvbVNlZ21lbnQucmVuZGVyZXIpLndpZHRoKGZyb20gLSBmcm9tU2VnbWVudC5zdGFydCwg
dG8gLSBmcm9tLCBtX3N0eWxlLmZvbnQsIHhQb3NpdGlvbiwgbnVsbHB0ciwgbnVsbHB0cik7CisK
KyAgICBjb25zdCBhdXRvKiBzZWdtZW50ID0gJmZyb21TZWdtZW50OworICAgIGZsb2F0IHRleHRX
aWR0aCA9IDA7CisgICAgdW5zaWduZWQgZnJhZ21lbnRFbmQgPSAwOworICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgIGZyYWdtZW50RW5kID0gc3RkOjptaW4odG8sIHNlZ21lbnQtPmVuZCk7Cisg
ICAgICAgIHRleHRXaWR0aCArPSBzZWdtZW50LT50ZXh0LmlzOEJpdCgpID8gcnVuV2lkdGg8TENo
YXI+KHNlZ21lbnQtPnRleHQsIGZyb20gLSBzZWdtZW50LT5zdGFydCwgZnJhZ21lbnRFbmQgLSBz
ZWdtZW50LT5zdGFydCwgeFBvc2l0aW9uICsgdGV4dFdpZHRoKSA6CisgICAgICAgICAgICBydW5X
aWR0aDxVQ2hhcj4oc2VnbWVudC0+dGV4dCwgZnJvbSAtIHNlZ21lbnQtPnN0YXJ0LCBmcmFnbWVu
dEVuZCAtIHNlZ21lbnQtPnN0YXJ0LCB4UG9zaXRpb24gKyB0ZXh0V2lkdGgpOworICAgICAgICBp
ZiAoZnJhZ21lbnRFbmQgPT0gdG8pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZnJvbSA9
IGZyYWdtZW50RW5kOworICAgICAgICBzZWdtZW50ID0gJm1fZmxvd0NvbnRlbnRzLnNlZ21lbnRG
b3JQb3NpdGlvbihmcmFnbWVudEVuZCk7CisgICAgfTsKKworICAgIHJldHVybiB0ZXh0V2lkdGg7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotdW5zaWduZWQgVGV4dEZy
YWdtZW50SXRlcmF0b3I6Om5leHRCcmVha2FibGVQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHM6
OlNlZ21lbnQmIHNlZ21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCitzdGF0aWMgdW5zaWdu
ZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExhenlMaW5lQnJlYWtJdGVyYXRvciYgbGluZUJyZWFr
SXRlcmF0b3IsIGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgc2VnbWVudCwgdW5zaWduZWQg
c3RhcnRQb3NpdGlvbikKIHsKLSAgICBBU1NFUlQoc3RhcnRQb3NpdGlvbiA8IHNlZ21lbnQuZW5k
KTsKLSAgICBpZiAoc2VnbWVudC50ZXh0LmltcGwoKSAhPSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0
cmluZygpLmltcGwoKSkgewotICAgICAgICBjb25zdCBTdHJpbmcmIGN1cnJlbnRUZXh0ID0gbV9s
aW5lQnJlYWtJdGVyYXRvci5zdHJpbmcoKTsKLSAgICAgICAgdW5zaWduZWQgdGV4dExlbmd0aCA9
IGN1cnJlbnRUZXh0Lmxlbmd0aCgpOwotICAgICAgICBVQ2hhciBsYXN0Q2hhcmFjdGVyID0gdGV4
dExlbmd0aCA+IDAgPyBjdXJyZW50VGV4dFt0ZXh0TGVuZ3RoIC0gMV0gOiAwOwotICAgICAgICBV
Q2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIgPSB0ZXh0TGVuZ3RoID4gMSA/IGN1cnJlbnRUZXh0
W3RleHRMZW5ndGggLSAyXSA6IDA7Ci0gICAgICAgIG1fbGluZUJyZWFrSXRlcmF0b3Iuc2V0UHJp
b3JDb250ZXh0KGxhc3RDaGFyYWN0ZXIsIHNlY29uZFRvTGFzdENoYXJhY3Rlcik7Ci0gICAgICAg
IG1fbGluZUJyZWFrSXRlcmF0b3IucmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3Ioc2VnbWVu
dC50ZXh0LCBtX3N0eWxlLmxvY2FsZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpOwotICAg
IH0KLSAgICBjb25zdCBhdXRvKiBjaGFyYWN0ZXJzID0gc2VnbWVudC50ZXh0LmNoYXJhY3RlcnM8
Q2hhcmFjdGVyVHlwZT4oKTsKLSAgICB1bnNpZ25lZCBzZWdtZW50TGVuZ3RoID0gc2VnbWVudC5l
bmQgLSBzZWdtZW50LnN0YXJ0OwotICAgIHVuc2lnbmVkIHNlZ21lbnRQb3NpdGlvbiA9IHN0YXJ0
UG9zaXRpb24gLSBzZWdtZW50LnN0YXJ0OwotICAgIHJldHVybiBzZWdtZW50LnN0YXJ0ICsgbmV4
dEJyZWFrYWJsZVBvc2l0aW9uTm9uTG9vc2VseTxDaGFyYWN0ZXJUeXBlLCBOQlNQQmVoYXZpb3I6
Oklnbm9yZU5CU1A+KG1fbGluZUJyZWFrSXRlcmF0b3IsIGNoYXJhY3RlcnMsIHNlZ21lbnRMZW5n
dGgsIHNlZ21lbnRQb3NpdGlvbik7CisgICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5v
bkxvb3NlbHk8Q2hhcmFjdGVyVHlwZSwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsaW5lQnJl
YWtJdGVyYXRvciwgc2VnbWVudC50ZXh0LmNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKSwgc2Vn
bWVudC5lbmQgLSBzZWdtZW50LnN0YXJ0LCBzdGFydFBvc2l0aW9uKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci11bnNpZ25lZCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6
bmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNl
Z21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pCitzdGF0aWMgdW5zaWduZWQgbmV4dE5vbldo
aXRlc3BhY2VQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNlZ21lbnQsIHVu
c2lnbmVkIHN0YXJ0UG9zaXRpb24sIGNvbnN0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZSYg
c3R5bGUpCiB7Ci0gICAgQVNTRVJUKHN0YXJ0UG9zaXRpb24gPCBzZWdtZW50LmVuZCk7CiAgICAg
Y29uc3QgYXV0byogdGV4dCA9IHNlZ21lbnQudGV4dC5jaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+
KCk7CiAgICAgdW5zaWduZWQgcG9zaXRpb24gPSBzdGFydFBvc2l0aW9uOwotICAgIGZvciAoOyBw
b3NpdGlvbiA8IHNlZ21lbnQuZW5kOyArK3Bvc2l0aW9uKSB7Ci0gICAgICAgIGF1dG8gY2hhcmFj
dGVyID0gdGV4dFtwb3NpdGlvbiAtIHNlZ21lbnQuc3RhcnRdOwotICAgICAgICBib29sIGlzV2hp
dGVzcGFjZSA9IGNoYXJhY3RlciA9PSAnICcgfHwgY2hhcmFjdGVyID09ICdcdCcgfHwgKCFtX3N0
eWxlLnByZXNlcnZlTmV3bGluZSAmJiBjaGFyYWN0ZXIgPT0gJ1xuJyk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gc2VnbWVudC5lbmQgLSBzZWdtZW50LnN0YXJ0OworICAgIGZvciAoOyBwb3NpdGlv
biA8IGxlbmd0aDsgKytwb3NpdGlvbikgeworICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHRleHRb
cG9zaXRpb25dOworICAgICAgICBib29sIGlzV2hpdGVzcGFjZSA9IGNoYXJhY3RlciA9PSAnICcg
fHwgY2hhcmFjdGVyID09ICdcdCcgfHwgKCFzdHlsZS5wcmVzZXJ2ZU5ld2xpbmUgJiYgY2hhcmFj
dGVyID09ICdcbicpOwogICAgICAgICBpZiAoIWlzV2hpdGVzcGFjZSkKICAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKICAgICB9CiAgICAgcmV0dXJuIHBvc2l0aW9uOwogfQogCi1mbG9hdCBU
ZXh0RnJhZ21lbnRJdGVyYXRvcjo6dGV4dFdpZHRoKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRv
LCBmbG9hdCB4UG9zaXRpb24pIGNvbnN0Cit1bnNpZ25lZCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6
c2tpcFRvTmV4dFBvc2l0aW9uKFBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUsIHVuc2lnbmVkIHN0
YXJ0UG9zaXRpb24pIGNvbnN0CiB7Ci0gICAgYXV0byYgc2VnbWVudCA9ICptX2N1cnJlbnRTZWdt
ZW50OwotICAgIEFTU0VSVChzZWdtZW50LnN0YXJ0IDw9IGZyb20gJiYgZnJvbSA8PSBzZWdtZW50
LmVuZCAmJiBzZWdtZW50LnN0YXJ0IDw9IHRvICYmIHRvIDw9IHNlZ21lbnQuZW5kKTsKLSAgICBB
U1NFUlQoaXM8UmVuZGVyVGV4dD4oc2VnbWVudC5yZW5kZXJlcikpOwotICAgIGlmIChtX3N0eWxl
LmZvbnQuaXNGaXhlZFBpdGNoKCkgfHwgKGZyb20gPT0gc2VnbWVudC5zdGFydCAmJiB0byA9PSBz
ZWdtZW50LmVuZCkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJUZXh0PihzZWdtZW50
LnJlbmRlcmVyKS53aWR0aChmcm9tIC0gc2VnbWVudC5zdGFydCwgdG8gLSBmcm9tLCBtX3N0eWxl
LmZvbnQsIHhQb3NpdGlvbiwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgcmV0dXJuIHNlZ21lbnQu
dGV4dC5pczhCaXQoKSA/IHJ1bldpZHRoPExDaGFyPihzZWdtZW50LCBmcm9tLCB0bywgeFBvc2l0
aW9uKSA6IHJ1bldpZHRoPFVDaGFyPihzZWdtZW50LCBmcm9tLCB0bywgeFBvc2l0aW9uKTsKLX0K
KyAgICBpZiAoaXNFbmQoc3RhcnRQb3NpdGlvbikpCisgICAgICAgIHJldHVybiBzdGFydFBvc2l0
aW9uOwogCi11bnNpZ25lZCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6c2tpcFRvTmV4dFBvc2l0aW9u
KFBvc2l0aW9uVHlwZSBwb3NpdGlvblR5cGUsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIGZsb2F0
JiB3aWR0aCwgZmxvYXQgeFBvc2l0aW9uLCBib29sJiBvdmVybGFwcGluZ0ZyYWdtZW50KQotewot
ICAgIG92ZXJsYXBwaW5nRnJhZ21lbnQgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBjdXJyZW50UG9z
aXRpb24gPSBzdGFydFBvc2l0aW9uOwotICAgIHVuc2lnbmVkIG5leHRQb3NpdGlvbiA9IGN1cnJl
bnRQb3NpdGlvbjsKLSAgICAvLyBDb2xsYXBzZWQgd2hpdGVzcGFjZSBoYXMgY29uc3RhbnQgd2lk
dGguIERvIG5vdCBtZWFzdXJlIGl0LgotICAgIGlmIChwb3NpdGlvblR5cGUgPT0gTm9uV2hpdGVz
cGFjZSkKLSAgICAgICAgbmV4dFBvc2l0aW9uID0gbV9jdXJyZW50U2VnbWVudC0+dGV4dC5pczhC
aXQoKSA/IG5leHROb25XaGl0ZXNwYWNlUG9zaXRpb248TENoYXI+KCptX2N1cnJlbnRTZWdtZW50
LCBjdXJyZW50UG9zaXRpb24pIDogbmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbjxVQ2hhcj4oKm1f
Y3VycmVudFNlZ21lbnQsIGN1cnJlbnRQb3NpdGlvbik7Ci0gICAgZWxzZSBpZiAocG9zaXRpb25U
eXBlID09IEJyZWFrYWJsZSkgewotICAgICAgICAvLyBuZXh0QnJlYWthYmxlUG9zaXRpb24gcmV0
dXJucyB0aGUgc2FtZSBwb3NpdGlvbiBmb3IgY2VydGFpbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgaHlw
aGVucy4gQ2FsbCBuZXh0IGFnYWluIHdpdGggbW9kaWZpZWQgcG9zaXRpb24gdW5sZXNzIGl0J3Mg
dGhlIGVuZCBvZiB0aGUgc2VnbWVudC4KLSAgICAgICAgbmV4dFBvc2l0aW9uID0gbV9jdXJyZW50
U2VnbWVudC0+dGV4dC5pczhCaXQoKSA/IG5leHRCcmVha2FibGVQb3NpdGlvbjxMQ2hhcj4oKm1f
Y3VycmVudFNlZ21lbnQsIGN1cnJlbnRQb3NpdGlvbikgOiBuZXh0QnJlYWthYmxlUG9zaXRpb248
VUNoYXI+KCptX2N1cnJlbnRTZWdtZW50LCBjdXJyZW50UG9zaXRpb24pOwotICAgICAgICAvLyBX
ZSBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgd29yZCBhY3R1YWxseSBmaW5pc2hlcyBhdCB0aGUg
ZW5kIG9mIHRoaXMgcmVuZGVyZXIgb3Igbm90LgotICAgICAgICBpZiAobmV4dFBvc2l0aW9uID09
IG1fY3VycmVudFNlZ21lbnQtPmVuZCkgewotICAgICAgICAgICAgY29uc3QgYXV0byBuZXh0U2Vn
bWVudCA9IG1fY3VycmVudFNlZ21lbnQgKyAxOwotICAgICAgICAgICAgaWYgKG5leHRTZWdtZW50
ICE9IG1fZmxvd0NvbnRlbnRzLmVuZCgpKQotICAgICAgICAgICAgICAgIG92ZXJsYXBwaW5nRnJh
Z21lbnQgPSBuZXh0UG9zaXRpb24gPCAobmV4dFNlZ21lbnQtPnRleHQuaXM4Qml0KCkgPyBuZXh0
QnJlYWthYmxlUG9zaXRpb248TENoYXI+KCpuZXh0U2VnbWVudCwgbmV4dFBvc2l0aW9uKSA6IG5l
eHRCcmVha2FibGVQb3NpdGlvbjxVQ2hhcj4oKm5leHRTZWdtZW50LCBuZXh0UG9zaXRpb24pKTsK
LSAgICAgICAgfSBlbHNlIGlmIChuZXh0UG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9uKSB7Ci0g
ICAgICAgICAgICBpZiAoKytuZXh0UG9zaXRpb24gPCBtX2N1cnJlbnRTZWdtZW50LT5lbmQpCi0g
ICAgICAgICAgICAgICAgbmV4dFBvc2l0aW9uID0gbV9jdXJyZW50U2VnbWVudC0+dGV4dC5pczhC
aXQoKSA/IG5leHRCcmVha2FibGVQb3NpdGlvbjxMQ2hhcj4oKm1fY3VycmVudFNlZ21lbnQsIGN1
cnJlbnRQb3NpdGlvbiArIDEpIDogbmV4dEJyZWFrYWJsZVBvc2l0aW9uPFVDaGFyPigqbV9jdXJy
ZW50U2VnbWVudCwgY3VycmVudFBvc2l0aW9uICsgMSk7Ci0gICAgICAgIH0KKyAgICBGbG93Q29u
dGVudHM6Okl0ZXJhdG9yIGl0KG1fZmxvd0NvbnRlbnRzLCBtX2Zsb3dDb250ZW50cy5zZWdtZW50
SW5kZXhGb3JQb3NpdGlvbihjdXJyZW50UG9zaXRpb24pKTsKKyAgICBmb3IgKGF1dG8gZW5kID0g
bV9mbG93Q29udGVudHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBhdXRvJiBz
ZWdtZW50ID0gKml0OworICAgICAgICB1bnNpZ25lZCBjdXJyZW50UG9zaXRvblJlbGF0aXZlVG9T
ZWdtZW50ID0gY3VycmVudFBvc2l0aW9uIC0gc2VnbWVudC5zdGFydDsKKyAgICAgICAgdW5zaWdu
ZWQgbmV4dFBvc2l0aW9uUmVsYXRpdmVUb1NlZ21lbnQgPSAwOworICAgICAgICBpZiAocG9zaXRp
b25UeXBlID09IE5vbldoaXRlc3BhY2UpIHsKKyAgICAgICAgICAgIG5leHRQb3NpdGlvblJlbGF0
aXZlVG9TZWdtZW50ID0gc2VnbWVudC50ZXh0LmlzOEJpdCgpID8gbmV4dE5vbldoaXRlc3BhY2VQ
b3NpdGlvbjxMQ2hhcj4oc2VnbWVudCwgY3VycmVudFBvc2l0b25SZWxhdGl2ZVRvU2VnbWVudCwg
bV9zdHlsZSkgOgorICAgICAgICAgICAgICAgIG5leHROb25XaGl0ZXNwYWNlUG9zaXRpb248VUNo
YXI+KHNlZ21lbnQsIGN1cnJlbnRQb3NpdG9uUmVsYXRpdmVUb1NlZ21lbnQsIG1fc3R5bGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uVHlwZSA9PSBCcmVha2FibGUpIHsKKyAgICAgICAg
ICAgIGlmIChzZWdtZW50LnRleHQuaW1wbCgpICE9IG1fbGluZUJyZWFrSXRlcmF0b3Iuc3RyaW5n
KCkuaW1wbCgpKSB7CisgICAgICAgICAgICAgICAgVUNoYXIgbGFzdENoYXJhY3RlciA9IHNlZ21l
bnQuc3RhcnQgPiAwID8gY2hhcmFjdGVyQXQoc2VnbWVudC5zdGFydCAtIDEpIDogMDsKKyAgICAg
ICAgICAgICAgICBVQ2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIgPSBzZWdtZW50LnN0YXJ0ID4g
MSA/IGNoYXJhY3RlckF0KHNlZ21lbnQuc3RhcnQgLSAyKSA6IDA7CisgICAgICAgICAgICAgICAg
bV9saW5lQnJlYWtJdGVyYXRvci5zZXRQcmlvckNvbnRleHQobGFzdENoYXJhY3Rlciwgc2Vjb25k
VG9MYXN0Q2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICBtX2xpbmVCcmVha0l0ZXJhdG9yLnJl
c2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKHNlZ21lbnQudGV4dCwgbV9zdHlsZS5sb2NhbGUs
IExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IG5leHRQb3NpdGlvblJlbGF0aXZlVG9TZWdtZW50ID0gc2VnbWVudC50ZXh0LmlzOEJpdCgpID8g
bmV4dEJyZWFrYWJsZVBvc2l0aW9uPExDaGFyPihtX2xpbmVCcmVha0l0ZXJhdG9yLCBzZWdtZW50
LCBjdXJyZW50UG9zaXRvblJlbGF0aXZlVG9TZWdtZW50KSA6CisgICAgICAgICAgICAgICAgbmV4
dEJyZWFrYWJsZVBvc2l0aW9uPFVDaGFyPihtX2xpbmVCcmVha0l0ZXJhdG9yLCBzZWdtZW50LCBj
dXJyZW50UG9zaXRvblJlbGF0aXZlVG9TZWdtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc2Vn
bWVudC5zdGFydCArIG5leHRQb3NpdGlvblJlbGF0aXZlVG9TZWdtZW50OworICAgICAgICBpZiAo
Y3VycmVudFBvc2l0aW9uIDwgc2VnbWVudC5lbmQpCisgICAgICAgICAgICBicmVhazsKICAgICB9
Ci0gICAgd2lkdGggPSAwOwotICAgIGlmIChuZXh0UG9zaXRpb24gPT0gY3VycmVudFBvc2l0aW9u
KQotICAgICAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwotICAgIGJvb2wgbWVhc3VyZVRleHQg
PSBwb3NpdGlvblR5cGUgIT0gTm9uV2hpdGVzcGFjZSB8fCAhbV9zdHlsZS5jb2xsYXBzZVdoaXRl
c3BhY2U7Ci0gICAgaWYgKG1lYXN1cmVUZXh0KSB7Ci0gICAgICAgIGZsb2F0IHRleHRXaWR0aCA9
IHRoaXMtPnRleHRXaWR0aChjdXJyZW50UG9zaXRpb24sIG5leHRQb3NpdGlvbiwgeFBvc2l0aW9u
KTsKLSAgICAgICAgeFBvc2l0aW9uICs9IHRleHRXaWR0aDsKLSAgICAgICAgd2lkdGggKz0gdGV4
dFdpZHRoOwotICAgIH0gZWxzZSBpZiAoc3RhcnRQb3NpdGlvbiA8IG5leHRQb3NpdGlvbikKLSAg
ICAgICAgd2lkdGggPSBtX3N0eWxlLnNwYWNlV2lkdGg7Ci0gICAgcmV0dXJuIG5leHRQb3NpdGlv
bjsKKyAgICByZXR1cm4gY3VycmVudFBvc2l0aW9uOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4KLWZsb2F0IFRleHRGcmFnbWVudEl0ZXJhdG9yOjpydW5XaWR0aChjb25z
dCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNlZ21lbnQsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24s
IHVuc2lnbmVkIGVuZFBvc2l0aW9uLCBmbG9hdCB4UG9zaXRpb24pIGNvbnN0CitmbG9hdCBUZXh0
RnJhZ21lbnRJdGVyYXRvcjo6cnVuV2lkdGgoY29uc3QgU3RyaW5nJiB0ZXh0LCB1bnNpZ25lZCBm
cm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdAogewotICAgIEFTU0VSVChz
dGFydFBvc2l0aW9uIDw9IGVuZFBvc2l0aW9uKTsKLSAgICBpZiAoc3RhcnRQb3NpdGlvbiA9PSBl
bmRQb3NpdGlvbikKKyAgICBBU1NFUlQoZnJvbSA8PSB0byk7CisgICAgaWYgKGZyb20gPT0gdG8p
CiAgICAgICAgIHJldHVybiAwOwotICAgIHVuc2lnbmVkIHNlZ21lbnRGcm9tID0gc3RhcnRQb3Np
dGlvbiAtIHNlZ21lbnQuc3RhcnQ7Ci0gICAgdW5zaWduZWQgc2VnbWVudFRvID0gZW5kUG9zaXRp
b24gLSBzZWdtZW50LnN0YXJ0OwotICAgIGJvb2wgbWVhc3VyZVdpdGhFbmRTcGFjZSA9IG1fc3R5
bGUuY29sbGFwc2VXaGl0ZXNwYWNlICYmIHNlZ21lbnRUbyA8IHNlZ21lbnQudGV4dC5sZW5ndGgo
KSAmJiBzZWdtZW50LnRleHRbc2VnbWVudFRvXSA9PSAnICc7CisgICAgYm9vbCBtZWFzdXJlV2l0
aEVuZFNwYWNlID0gbV9zdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgJiYgdG8gPCB0ZXh0Lmxlbmd0
aCgpICYmIHRleHRbdG9dID09ICcgJzsKICAgICBpZiAobWVhc3VyZVdpdGhFbmRTcGFjZSkKLSAg
ICAgICAgKytzZWdtZW50VG87Ci0gICAgVGV4dFJ1biBydW4oc2VnbWVudC50ZXh0LmNoYXJhY3Rl
cnM8Q2hhcmFjdGVyVHlwZT4oKSArIHNlZ21lbnRGcm9tLCBzZWdtZW50VG8gLSBzZWdtZW50RnJv
bSk7CisgICAgICAgICsrdG87CisgICAgVGV4dFJ1biBydW4odGV4dC5jaGFyYWN0ZXJzPENoYXJh
Y3RlclR5cGU+KCkgKyBmcm9tLCB0byAtIGZyb20pOwogICAgIHJ1bi5zZXRYUG9zKHhQb3NpdGlv
bik7CiAgICAgcnVuLnNldFRhYlNpemUoISFtX3N0eWxlLnRhYldpZHRoLCBtX3N0eWxlLnRhYldp
ZHRoKTsKICAgICBmbG9hdCB3aWR0aCA9IG1fc3R5bGUuZm9udC53aWR0aChydW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21l
bnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRU
ZXh0RnJhZ21lbnRJdGVyYXRvci5oCmluZGV4IDgxY2Y2ZTJjOTQyOTQ1ZWM3M2UxNGNkMmUyZWQw
N2QyODg4NDFlZmEuLmM4YzFlYjQzM2RhNTQxYTBkZTBlYjQwNTM4YjljZThjZTU5NGIwMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0VGV4dEZy
YWdtZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dFRleHRGcmFnbWVudEl0ZXJhdG9yLmgKQEAgLTQzLDE1ICs0MywxMiBAQCBwdWJsaWM6
CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFR5cGUgeyBDb250ZW50RW5kLCBMaW5lQnJlYWss
IFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKICAgICAgICAgVGV4dEZyYWdtZW50KCkgPSBk
ZWZhdWx0OwotICAgICAgICBUZXh0RnJhZ21lbnQodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVu
ZCwgZmxvYXQgd2lkdGgsIFR5cGUgdHlwZSwgYm9vbCBpc0xhc3RJblJlbmRlcmVyID0gZmFsc2Us
IGJvb2wgb3ZlcmxhcHNUb05leHRSZW5kZXJlciA9IGZhbHNlLCBib29sIGlzQ29sbGFwc2VkID0g
ZmFsc2UsIGJvb2wgaXNDb2xsYXBzaWJsZSA9IGZhbHNlLCBib29sIGlzQnJlYWthYmxlID0gZmFs
c2UpCisgICAgICAgIFRleHRGcmFnbWVudCh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBm
bG9hdCB3aWR0aCwgVHlwZSB0eXBlLCBib29sIGlzQ29sbGFwc2VkID0gZmFsc2UsIGJvb2wgaXNC
cmVha2FibGUgPSBmYWxzZSkKICAgICAgICAgICAgIDogbV9zdGFydChzdGFydCkKICAgICAgICAg
ICAgICwgbV9lbmQoZW5kKQotICAgICAgICAgICAgLCBtX3dpZHRoKHdpZHRoKQogICAgICAgICAg
ICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgICAgICwgbV9pc0xhc3RJblJlbmRlcmVyKGlzTGFz
dEluUmVuZGVyZXIpCi0gICAgICAgICAgICAsIG1fb3ZlcmxhcHNUb05leHRSZW5kZXJlcihvdmVy
bGFwc1RvTmV4dFJlbmRlcmVyKQorICAgICAgICAgICAgLCBtX3dpZHRoKHdpZHRoKQogICAgICAg
ICAgICAgLCBtX2lzQ29sbGFwc2VkKGlzQ29sbGFwc2VkKQotICAgICAgICAgICAgLCBtX2lzQ29s
bGFwc2libGUoaXNDb2xsYXBzaWJsZSkKICAgICAgICAgICAgICwgbV9pc0JyZWFrYWJsZShpc0Jy
ZWFrYWJsZSkKICAgICAgICAgewogICAgICAgICB9CkBAIC02MCw0MSArNTcsMjIgQEAgcHVibGlj
OgogICAgICAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQogICAgICAg
ICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICAgICAgVHlwZSB0
eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgICAgIGJvb2wgaXNMYXN0SW5SZW5k
ZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXN0SW5SZW5kZXJlcjsgfQotICAgICAgICBib29s
IG92ZXJsYXBzVG9OZXh0UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX292ZXJsYXBzVG9OZXh0
UmVuZGVyZXI7IH0KICAgICAgICAgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb2xsYXBzZWQ7IH0KLSAgICAgICAgYm9vbCBpc0NvbGxhcHNpYmxlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NvbGxhcHNpYmxlOyB9CiAgICAgICAgIGJvb2wgaXNCcmVha2FibGUoKSBjb25zdCB7
IHJldHVybiBtX2lzQnJlYWthYmxlOyB9CiAKICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gc3RhcnQoKSA9PSBlbmQoKTsgfQogICAgICAgICBUZXh0RnJhZ21lbnQgc3BsaXQo
dW5zaWduZWQgc3BsaXRQb3NpdGlvbiwgY29uc3QgVGV4dEZyYWdtZW50SXRlcmF0b3ImKTsKLSAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRGcmFnbWVudCYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3N0YXJ0ID09IG90aGVyLm1fc3RhcnQKLSAg
ICAgICAgICAgICAgICAmJiBtX2VuZCA9PSBvdGhlci5tX2VuZAotICAgICAgICAgICAgICAgICYm
IG1fd2lkdGggPT0gb3RoZXIubV93aWR0aAotICAgICAgICAgICAgICAgICYmIG1fdHlwZSA9PSBv
dGhlci5tX3R5cGUKLSAgICAgICAgICAgICAgICAmJiBtX2lzTGFzdEluUmVuZGVyZXIgPT0gb3Ro
ZXIubV9pc0xhc3RJblJlbmRlcmVyCi0gICAgICAgICAgICAgICAgJiYgbV9vdmVybGFwc1RvTmV4
dFJlbmRlcmVyID09IG90aGVyLm1fb3ZlcmxhcHNUb05leHRSZW5kZXJlcgotICAgICAgICAgICAg
ICAgICYmIG1faXNDb2xsYXBzZWQgPT0gb3RoZXIubV9pc0NvbGxhcHNlZAotICAgICAgICAgICAg
ICAgICYmIG1faXNDb2xsYXBzaWJsZSA9PSBvdGhlci5tX2lzQ29sbGFwc2libGUKLSAgICAgICAg
ICAgICAgICAmJiBtX2lzQnJlYWthYmxlID09IG90aGVyLm1faXNCcmVha2FibGU7Ci0gICAgICAg
IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnQgeyAwIH07CiAgICAg
ICAgIHVuc2lnbmVkIG1fZW5kIHsgMCB9OwotICAgICAgICBmbG9hdCBtX3dpZHRoIHsgMCB9Owog
ICAgICAgICBUeXBlIG1fdHlwZSB7IE5vbldoaXRlc3BhY2UgfTsKLSAgICAgICAgYm9vbCBtX2lz
TGFzdEluUmVuZGVyZXIgeyBmYWxzZSB9OwotICAgICAgICBib29sIG1fb3ZlcmxhcHNUb05leHRS
ZW5kZXJlciB7IGZhbHNlIH07CisgICAgICAgIGZsb2F0IG1fd2lkdGggeyAwIH07CiAgICAgICAg
IGJvb2wgbV9pc0NvbGxhcHNlZCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgbV9pc0NvbGxhcHNp
YmxlIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2lzQnJlYWthYmxlIHsgZmFsc2UgfTsKICAg
ICB9OwogICAgIFRleHRGcmFnbWVudCBuZXh0VGV4dEZyYWdtZW50KGZsb2F0IHhQb3NpdGlvbiA9
IDApOwotICAgIHZvaWQgcmV2ZXJ0VG9GcmFnbWVudChjb25zdCBUZXh0RnJhZ21lbnQmKTsKLSAg
ICBmbG9hdCB0ZXh0V2lkdGgodW5zaWduZWQgc3RhcnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9z
aXRpb24sIGZsb2F0IHhQb3NpdGlvbikgY29uc3Q7CisgICAgZmxvYXQgdGV4dFdpZHRoKHVuc2ln
bmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4UG9zaXRpb24pIGNvbnN0OwogCiAgICAgc3Ry
dWN0IFN0eWxlIHsKICAgICAgICAgZXhwbGljaXQgU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKTsK
QEAgLTExMCwxOCArODgsMTkgQEAgcHVibGljOgogICAgICAgICBBdG9taWNTdHJpbmcgbG9jYWxl
OwogICAgIH07CiAgICAgY29uc3QgU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdHls
ZTsgfQorICAgIC8vIEZJWE1FOiByZW1vdmUgc3BsaXRSdW5zQXRSZW5kZXJlckJvdW5kYXJ5KCkK
KyAgICBjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmIHNlZ21lbnRGb3JQb3NpdGlvbih1bnNp
Z25lZCBwb3NpdGlvbikgY29uc3QgeyByZXR1cm4gbV9mbG93Q29udGVudHMuc2VnbWVudEZvclBv
c2l0aW9uKHBvc2l0aW9uKTsgfTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFBvc2l0aW9uVHlwZSB7
IEJyZWFrYWJsZSwgTm9uV2hpdGVzcGFjZSB9OwotICAgIHVuc2lnbmVkIHNraXBUb05leHRQb3Np
dGlvbihQb3NpdGlvblR5cGUsIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24sIGZsb2F0JiB3aWR0aCwg
ZmxvYXQgeFBvc2l0aW9uLCBib29sJiBvdmVybGFwcGluZ0ZyYWdtZW50KTsKKyAgICB1bnNpZ25l
ZCBza2lwVG9OZXh0UG9zaXRpb24oUG9zaXRpb25UeXBlLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9u
KSBjb25zdDsKKyAgICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBwb3NpdGlvbikgY29uc3Q7
CiAgICAgYm9vbCBpc0xpbmVCcmVhayh1bnNpZ25lZCBwb3NpdGlvbikgY29uc3Q7Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHVuc2lnbmVkIG5leHRCcmVha2FibGVQb3Np
dGlvbihjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmLCB1bnNpZ25lZCBzdGFydFBvc2l0aW9u
KTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdW5zaWduZWQgbmV4dE5v
bldoaXRlc3BhY2VQb3NpdGlvbihjb25zdCBGbG93Q29udGVudHM6OlNlZ21lbnQmLCB1bnNpZ25l
ZCBzdGFydFBvc2l0aW9uKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
ZmxvYXQgcnVuV2lkdGgoY29uc3QgRmxvd0NvbnRlbnRzOjpTZWdtZW50JiwgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbiwgdW5zaWduZWQgZW5kUG9zaXRpb24sIGZsb2F0IHhQb3NpdGlvbikgY29uc3Q7
CisgICAgYm9vbCBpc0VuZCh1bnNpZ25lZCBwb3NpdGlvbikgY29uc3Q7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IGZsb2F0IHJ1bldpZHRoKGNvbnN0IFN0cmluZyYsIHVu
c2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4UG9zaXRpb24pIGNvbnN0OwogCiAgICAg
Rmxvd0NvbnRlbnRzIG1fZmxvd0NvbnRlbnRzOwotICAgIEZsb3dDb250ZW50czo6SXRlcmF0b3Ig
bV9jdXJyZW50U2VnbWVudDsKLSAgICBMYXp5TGluZUJyZWFrSXRlcmF0b3IgbV9saW5lQnJlYWtJ
dGVyYXRvcjsKKyAgICBtdXRhYmxlIExhenlMaW5lQnJlYWtJdGVyYXRvciBtX2xpbmVCcmVha0l0
ZXJhdG9yOwogICAgIGNvbnN0IFN0eWxlIG1fc3R5bGU7CiAgICAgdW5zaWduZWQgbV9wb3NpdGlv
biB7IDAgfTsKIH07CkBAIC0xNDgsMTEgKzEyNywyMiBAQCBpbmxpbmUgVGV4dEZyYWdtZW50SXRl
cmF0b3I6OlRleHRGcmFnbWVudCBUZXh0RnJhZ21lbnRJdGVyYXRvcjo6VGV4dEZyYWdtZW50Ojpz
cAogICAgIHJldHVybiBuZXdGcmFnbWVudDsKIH0KIAoraW5saW5lIFVDaGFyIFRleHRGcmFnbWVu
dEl0ZXJhdG9yOjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBwb3NpdGlvbikgY29uc3QKK3sKKyAgICBh
dXRvJiBzZWdtZW50ID0gbV9mbG93Q29udGVudHMuc2VnbWVudEZvclBvc2l0aW9uKHBvc2l0aW9u
KTsKKyAgICByZXR1cm4gc2VnbWVudC50ZXh0W3Bvc2l0aW9uIC0gc2VnbWVudC5zdGFydF07Cit9
CisKIGlubGluZSBib29sIFRleHRGcmFnbWVudEl0ZXJhdG9yOjppc0xpbmVCcmVhayh1bnNpZ25l
ZCBwb3NpdGlvbikgY29uc3QKIHsKLSAgICBjb25zdCBhdXRvJiBzZWdtZW50ID0gKm1fY3VycmVu
dFNlZ21lbnQ7Ci0gICAgQVNTRVJUKHNlZ21lbnQuc3RhcnQgPD0gcG9zaXRpb24gJiYgcG9zaXRp
b24gPCBzZWdtZW50LmVuZCk7Ci0gICAgcmV0dXJuIG1fc3R5bGUucHJlc2VydmVOZXdsaW5lICYm
IHNlZ21lbnQudGV4dFtwb3NpdGlvbiAtIHNlZ21lbnQuc3RhcnRdID09ICdcbic7CisgICAgaWYg
KGlzRW5kKHBvc2l0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3N0
eWxlLnByZXNlcnZlTmV3bGluZSAmJiBjaGFyYWN0ZXJBdChwb3NpdGlvbikgPT0gJ1xuJzsKK30K
KworaW5saW5lIGJvb2wgVGV4dEZyYWdtZW50SXRlcmF0b3I6OmlzRW5kKHVuc2lnbmVkIHBvc2l0
aW9uKSBjb25zdAoreworICAgIHJldHVybiBwb3NpdGlvbiA+PSBtX2Zsb3dDb250ZW50cy5sZW5n
dGgoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1OTUxOWI5NDk3MmJjNDRiZjFkMDhmMDJjY2E0YTdlNTQx
NzlmNTQuLjNlODU2YmE0ZjVjOTlmMWVlYjU2ZGE2MzA5ZWI0ZjRjOTc2MDcyYWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxNS0wMy0xNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4MTY2NywgcjE4
MTY4MiwgYW5kIHIxODE2ODMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDI4MTIKKworICAgICAgICBCcm9rZSBtdWx0aXBsZSB0ZXN0cyB3aXRoIEFT
YW4sIHBsdXMgZGVwZW5kZW50IGNvbW1pdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSBhcCBvbiAj
d2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAgICJTaW1w
bGUgbGluZSBsYXlvdXQ6IFNwbGl0IGZyYWdtZW50cyBvbiByZW5kZXJlciBib3VuZGFyeSBvbgor
ICAgICAgICB0aGUgZmx5LiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MjU3OQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8xODE2NjcKKworICAgICAgICAiU2ltcGxlIGxpbmUgbGF5b3V0OiBDaGFuZ2UgRmxvd0NvbnRl
bnRzOjpzZWdtZW50Rm9yUG9zaXRpb24oKQorICAgICAgICB0byBzZWdtZW50Rm9yUnVuKCkuIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzg1Cisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MTY4MgorCisgICAgICAg
ICJTaW1wbGUgbGluZSBsYXlvdXQ6IFVzZSBWZWN0b3I8Pjo6Y29uc3RfaXRlcmF0b3IgaW5zdGVh
ZCBvZgorICAgICAgICBjdXN0b20gRmxvd0NvbnRlbnRzOjpJdGVyYXRvci4iCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4MDkKKyAgICAgICAgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgxNjgzCisKIDIwMTUtMDMtMTcgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgZmFzdC9pbWFnZXMvYW5p
bWF0ZWQtcG5nLmh0bWwgaXMgY3Jhc2hpbmcgLyBmYWlsaW5nIG9uIFlvc2VtaXRlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RleHQvc2ltcGxlLWxpbmUtd2l0aC1tdWx0aXBsZS1yZW5k
ZXJlcnMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zaW1wbGUtbGluZS13
aXRoLW11bHRpcGxlLXJlbmRlcmVycy1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZWQ5NmU4MTBiZjRlYTI4ZjllYmY2YTkyYjI0NmJmMDlmNjU1NGQ2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvdGV4dC9zaW1wbGUtbGluZS13aXRoLW11bHRpcGxlLXJlbmRlcmVycy1leHBlY3RlZC5odG1s
CisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4K
LTxoZWFkPgotPHRpdGxlPlRlc3QgdGhhdCBzZWdtZW50cyBhY3Jvc3MgbXVsdGlwbGUgcmVuZGVy
ZXJzIHdvcmsgZmluZSB3aXRoIHNpbXBsZSBsaW5lIGxheW91dC48L3RpdGxlPgotPC9oZWFkPgot
PGJvZHk+Ci08c2NyaXB0PgotZnVuY3Rpb24gaW5qZWN0VGV4dE5vZGVzKGNvbnRhaW5lciwgc3R5
bGUpCi17Ci0JY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIg
CSIpKTsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIgki
KSk7Ci0JY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIJVGhp
cyB0ZXN0cyAgICAgIikpOwotCWNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgiIAkgICAiKSk7Ci0JY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJ3aGl0ZXNwYWNlIAkJb3ZlcmxhcHBpbmcgIikpOwotCWNvbnRhaW5lci5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiCW11bHRpcGxlICAgICAiKSk7Ci0JY29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIJCQkJcmVuZGVyZXJz
LiIpKTsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlRo
aXMgdGVzdHMgd2hlbiBub24tIikpOwotCWNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgid2hpdGVzcGFjZSBjb24iKSk7Ci0JY29udGFpbmVyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ0ZW50IG8iKSk7Ci0JY29udGFpbmVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ2ZXJsYSIpKTsKLQljb250YWluZXIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInBzIG11bHRpcGxlIHJlbiIpKTsKLQljb250
YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoImRlcmVzLiIpKTsKLQlj
b250YWluZXIuc3R5bGUuY3NzVGV4dCA9IHN0eWxlOwotCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY29udGFpbmVyKTsKLX0KLQotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0JaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFNpbXBsZUxpbmVMYXlvdXRFbmFibGVkKGZhbHNlKQotaW5qZWN0VGV4dE5vZGVz
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLWluamVjdFRleHROb2Rlcyhkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgIndpZHRoOiAwcHgiKTsKLWluamVjdFRleHROb2Rlcyhk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwgIndpZHRoOiAxMHB4Iik7Ci1pbmplY3RUZXh0
Tm9kZXMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksICJ3aWR0aDogMTAwcHgiKTsKLWlu
amVjdFRleHROb2Rlcyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwcmUiKSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC9zaW1w
bGUtbGluZS13aXRoLW11bHRpcGxlLXJlbmRlcmVycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3NpbXBsZS1saW5lLXdpdGgtbXVsdGlwbGUtcmVuZGVyZXJzLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE4NTg4ZTMzMGEwMzYyZDVlZjMwYzllMWNlY2ZjMmEzMzhmOGEx
NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC90ZXh0L3NpbXBsZS1saW5lLXdpdGgtbXVsdGlwbGUtcmVuZGVyZXJzLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08dGl0bGU+VGVzdCB0aGF0IHNlZ21lbnRzIGFjcm9zcyBtdWx0aXBsZSByZW5kZXJl
cnMgd29yayBmaW5lIHdpdGggc2ltcGxlIGxpbmUgbGF5b3V0LjwvdGl0bGU+Ci08L2hlYWQ+Ci08
Ym9keT4KLTxzY3JpcHQ+Ci1mdW5jdGlvbiBpbmplY3RUZXh0Tm9kZXMoY29udGFpbmVyLCBzdHls
ZSkKLXsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAJ
IikpOwotCWNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiCSIp
KTsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIglUaGlz
IHRlc3RzICAgICAiKSk7Ci0JY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCIgCSAgICIpKTsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIndoaXRlc3BhY2UgCQlvdmVybGFwcGluZyAiKSk7Ci0JY29udGFpbmVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIJbXVsdGlwbGUgICAgICIpKTsKLQljb250
YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIgkJCQlyZW5kZXJlcnMu
IikpOwotCWNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiVGhp
cyB0ZXN0cyB3aGVuIG5vbi0iKSk7Ci0JY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJ3aGl0ZXNwYWNlIGNvbiIpKTsKLQljb250YWluZXIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInRlbnQgbyIpKTsKLQljb250YWluZXIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoInZlcmxhIikpOwotCWNvbnRhaW5lci5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgicHMgbXVsdGlwbGUgcmVuIikpOwotCWNvbnRh
aW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiZGVyZXMuIikpOwotCWNv
bnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gc3R5bGU7Ci0JZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChjb250YWluZXIpOwotfQotCi1pbmplY3RUZXh0Tm9kZXMoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IikpOwotaW5qZWN0VGV4dE5vZGVzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LCAid2lkdGg6IDBweCIpOwotaW5qZWN0VGV4dE5vZGVzKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpLCAid2lkdGg6IDEwcHgiKTsKLWluamVjdFRleHROb2Rlcyhkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSwgIndpZHRoOiAxMDBweCIpOwotaW5qZWN0VGV4dE5vZGVzKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInByZSIpKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>