<?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>149456</bug_id>
          
          <creation_ts>2015-09-22 05:17:09 -0700</creation_ts>
          <short_desc>REGRESSION(r189616): suspected cause of multiple regressions (Requested by kling on #webkit).</short_desc>
          <delta_ts>2015-09-22 05:21:53 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148955</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1127982</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 05:17:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/189616 broke the build:
suspected cause of multiple regressions (Requested by kling 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>1127984</commentid>
    <comment_count>1</comment_count>
      <attachid>261738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 05:17:57 -0700</bug_when>
    <thetext>Created attachment 261738
ROLLOUT of r189616

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>1127985</commentid>
    <comment_count>2</comment_count>
      <attachid>261738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 05:21:50 -0700</bug_when>
    <thetext>Comment on attachment 261738
ROLLOUT of r189616

Clearing flags on attachment: 261738

Committed r190113: &lt;http://trac.webkit.org/changeset/190113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127986</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 05:21:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261738</attachid>
            <date>2015-09-22 05:17:57 -0700</date>
            <delta_ts>2015-09-22 05:21:50 -0700</delta_ts>
            <desc>ROLLOUT of r189616</desc>
            <filename>bug-149456-20150922051740.patch</filename>
            <type>text/plain</type>
            <size>96314</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwMTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YWU4MDE1OGFlMjhlOWNhOWRkYTk3M2ExMTFkMTliMjc0YzdjZDBiLi5lZGNhODNjOTBjZTIzOGNi
YzJiYjkwZjg4MTkwMzc2MTk4YzA4ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNS0wOS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTYxNi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTQ1NgorCisgICAg
ICAgIHN1c3BlY3RlZCBjYXVzZSBvZiBtdWx0aXBsZSByZWdyZXNzaW9ucyAoUmVxdWVzdGVkIGJ5
IGtsaW5nIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNl
dDoKKworICAgICAgICAiW0pTQ10gV2VhayBzaG91bGQgb25seSBhY2NlcHQgY2VsbCBwb2ludGVl
cy4iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg5
NTUKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg5NjE2CisKIDIw
MTUtMDktMjIgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQmFzaWMgQmxvY2sgQW5ub3RhdGlvbnMgYW5kIFR5cGUgUHJvZmlsZXIgYW5u
b3RhdGlvbnMgd3JvbmcgZm9yIHNjcmlwdCB3aXRoICJjbGFzcyIgd2l0aCBkZWZhdWx0IGNvbnN0
cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZmI5N2E1YzY4MDJjMGIwMjBiMDI0YjQ1YmE1ZGUyMmEwZWMw
NTk3Ni4uMGYyY2Q2ZWFjMWY1ZGQ1MDJiOWQ0ZTU1YzJkNzUyMjNlNGFlNGVhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA5LTIyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5NjE2
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NDU2
CisKKyAgICAgICAgc3VzcGVjdGVkIGNhdXNlIG9mIG11bHRpcGxlIHJlZ3Jlc3Npb25zIChSZXF1
ZXN0ZWQgYnkga2xpbmcgb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJbSlNDXSBXZWFrIHNob3VsZCBvbmx5IGFjY2VwdCBjZWxs
IHBvaW50ZWVzLiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0ODk1NQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xODk2
MTYKKwogMjAxNS0wOS0yMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEZpeCB0aGUgYWxsLWluLW9uZSBidWlsZCB3aXRoIEdDQwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDdmZWQyZjJlNTk2Nzg0MWMyY2YyNjYyODY1NzJmZDUxZDE4NjM2YjcuLmFiMmEzNzRlMzk5Nzgy
MGY5YTk5YTNjZjc1YWRiNDUzNmMwMzgxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxNS0wOS0yMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTYxNi4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTQ1NgorCisgICAgICAgIHN1c3BlY3Rl
ZCBjYXVzZSBvZiBtdWx0aXBsZSByZWdyZXNzaW9ucyAoUmVxdWVzdGVkIGJ5IGtsaW5nIG9uCisg
ICAgICAgICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAg
ICAiW0pTQ10gV2VhayBzaG91bGQgb25seSBhY2NlcHQgY2VsbCBwb2ludGVlcy4iCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg5NTUKKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg5NjE2CisKIDIwMTUtMDktMjEgIFRp
bW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93
IERhdGFEZXRlY3RvcnMgdG8gcHJlLWZpbHRlciB0ZWxlcGhvbmUgbnVtYmVyIG1lbnUgaXRlbXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KaW5k
ZXggNmM2ZDM5OTRmYmFkY2Q3MmYyOTQzZWNjZDY2NTlkYjE5YTAxN2M4ZS4uZWY1NDYwMmE0YTJm
NjQ1MTA4NjY4MzU4MTI5MmM0YzA0MzJiOWQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0KQEAgLTMzLDEwICszMywxMCBAQAogCiAjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKIAotY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3du
ZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgeworY2xhc3MgSlNBUElXcmFw
cGVyT2JqZWN0SGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVi
bGljOgotICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCopIG92ZXJyaWRlOwot
ICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBj
b250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogfTsK
IAogc3RhdGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmpl
Y3RIYW5kbGVPd25lcigpCkBAIC00NSwyNCArNDUsMjQgQEAgc3RhdGljIEpTQVBJV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyKiBqc0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcigpCiAgICAgcmV0
dXJuICZqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lcjsKIH0KIAotdm9pZCBKU0FQSVdyYXBwZXJP
YmplY3RIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKikKK3Zv
aWQgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKIHsKLSAgICBhdXRvJiB3cmFwcGVyT2JqZWN0ID0g
SlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmplY3QmPigqY2VsbCk7Ci0gICAgaWYgKCF3
cmFwcGVyT2JqZWN0LndyYXBwZWRPYmplY3QoKSkKKyAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVj
dCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4o
aGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBpZiAoIXdyYXBwZXJPYmplY3QtPndyYXBwZWRP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNDOjpIZWFwOjpoZWFwKCZ3cmFwcGVy
T2JqZWN0KS0+cmVsZWFzZVNvb24oYWRvcHROUyhzdGF0aWNfY2FzdDxpZD4od3JhcHBlck9iamVj
dC53cmFwcGVkT2JqZWN0KCkpKSk7Ci0gICAgSlNDOjpXZWFrU2V0OjpkZWFsbG9jYXRlKEpTQzo6
V2Vha0ltcGw6OmFzV2Vha0ltcGwoJmNlbGwpKTsKKyAgICBKU0M6OkhlYXA6OmhlYXAod3JhcHBl
ck9iamVjdCktPnJlbGVhc2VTb29uKGFkb3B0TlMoc3RhdGljX2Nhc3Q8aWQ+KHdyYXBwZXJPYmpl
Y3QtPndyYXBwZWRPYmplY3QoKSkpKTsKKyAgICBKU0M6OldlYWtTZXQ6OmRlYWxsb2NhdGUoSlND
OjpXZWFrSW1wbDo6YXNXZWFrSW1wbChoYW5kbGUuc2xvdCgpKSk7CiB9CiAKLWJvb2wgSlNBUElX
cmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SlNDZWxsJiBjZWxsLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNB
UElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCYgd3JhcHBlck9iamVjdCA9
IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Jj4oY2VsbCk7CisgICAgSlNDOjpK
U0FQSVdyYXBwZXJPYmplY3QqIHdyYXBwZXJPYmplY3QgPSBKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJ
V3JhcHBlck9iamVjdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgLy8gV2UgdXNlIHRo
ZSBKU0dsb2JhbE9iamVjdCB3aGVuIHByb2Nlc3Npbmcgd2VhayBoYW5kbGVzIHRvIHByZXZlbnQg
dGhlIHNpdHVhdGlvbiB3aGVyZSB1c2luZwogICAgIC8vIHRoZSBzYW1lIE9iamVjdGl2ZS1DIG9i
amVjdCBpbiBtdWx0aXBsZSBnbG9iYWwgb2JqZWN0cyBrZWVwcyBhbGwgb2YgdGhlIGdsb2JhbCBv
YmplY3RzIGFsaXZlLgotICAgIGlmICghd3JhcHBlck9iamVjdC53cmFwcGVkT2JqZWN0KCkpCisg
ICAgaWYgKCF3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICByZXR1cm4gSlNDOjpIZWFwOjppc01hcmtlZCh3cmFwcGVyT2JqZWN0Lmdsb2Jh
bE9iamVjdCgpKSAmJiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCh3cmFwcGVyT2JqZWN0Lndy
YXBwZWRPYmplY3QoKSk7CisgICAgcmV0dXJuIEpTQzo6SGVhcDo6aXNNYXJrZWQod3JhcHBlck9i
amVjdC0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKSAmJiB2aXNpdG9yLmNvbnRhaW5zT3Bh
cXVlUm9vdCh3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpOwogfQogCiBuYW1lc3BhY2Ug
SlNDIHsKQEAgLTg2LDcgKzg2LDcgQEAgSlNBUElXcmFwcGVyT2JqZWN0OjpKU0FQSVdyYXBwZXJP
YmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHZvaWQgSlNBUElXcmFwcGVyT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIFdlYWtTZXQ6OmFsbG9jYXRlKCp0aGlzLCBqc0FQSVdyYXBwZXJPYmplY3RIYW5k
bGVPd25lcigpLCAwKTsgLy8gQmFsYW5jZWQgaW4gSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3du
ZXI6OmZpbmFsaXplLgorICAgIFdlYWtTZXQ6OmFsbG9jYXRlKHRoaXMsIGpzQVBJV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyKCksIDApOyAvLyBCYWxhbmNlZCBpbiBKU0FQSVdyYXBwZXJPYmplY3RI
YW5kbGVPd25lcjo6ZmluYWxpemUuCiB9CiAgICAgCiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6
c2V0V3JhcHBlZE9iamVjdCh2b2lkKiB3cmFwcGVkT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KaW5kZXggN2Q4OTY0MzhiZTZjYmYyNDBiZDkzNzIw
ODEzOWMzMTgzM2M0Y2E2ZS4uYTcyZDE5YjFiZmIwOTliMTZlZDkwYWNlMWExMzNhMWI4MzgzYTE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5t
bQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdlZFZhbHVlLm1tCkBAIC0z
OSwxMCArMzksMTAgQEAKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgPHd0Zi9zcGkv
Y29jb2EvTlNNYXBUYWJsZVNQSS5oPgogCi1jbGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
IGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK2NsYXNzIEpTTWFuYWdlZFZh
bHVlSGFuZGxlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgot
ICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYsIHZvaWQq
IGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKIH07CiAKIHN0YXRpYyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKiBtYW5hZ2VkVmFs
dWVIYW5kbGVPd25lcigpCkBAIC0yOTUsMTMgKzI5NSwxMyBAQCBwcml2YXRlOgogLSAodm9pZClk
aXNjb25uZWN0VmFsdWU7CiBAZW5kCiAKLWJvb2wgSlNNYW5hZ2VkVmFsdWVIYW5kbGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1ZSAqPihjb250
ZXh0KTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3QobWFuYWdlZFZhbHVl
KTsKIH0KIAotdm9pZCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6OkpT
Q2VsbComLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyOjpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KQogewogICAg
IEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBzdGF0aWNfY2FzdDxKU01hbmFnZWRWYWx1
ZSAqPihjb250ZXh0KTsKICAgICBbbWFuYWdlZFZhbHVlIGRpc2Nvbm5lY3RWYWx1ZV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMu
Y3BwCmluZGV4IDdlZjFkYTNiMGFjMzk0M2UwMDU5M2M2OGUxZDgxNTUyN2MyNzExYTUuLjkzNzBl
N2UxZmU2NTliYWFkMTNiZDAyOWI3YjliZmY2ODQ2MmJlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCkBAIC0xMDgs
NyArMTA4LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxl
czo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFsKGNvbnN0IFMKICAgICByZXR1cm4gZnVuY3Rpb25F
eGVjdXRhYmxlOwogfQogCi12b2lkIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZmluYWxpemUoSlNDZWxs
KiYsIHZvaWQqIGNvbnRleHQpCit2b2lkIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KQogewogICAgIHN0YXRpY19jYXN0PFdlYWs8VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+Kj4oY29udGV4dCktPmNsZWFyKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKaW5k
ZXggMjM0MWM4OGQ4YzczMTJmNTU2YTk3NDgxOGNjOWEwZDA5NjI1MzYyYy4uNGU0MzIyMjVmYmQx
MGRkYzMzNjA0YTNkNjYzMzJmNjRjODY2MWRlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuaApAQCAtNTMsNyArNTMsNyBAQCBj
b25zdCBTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSB7IHJldHVybiBtXyMjbmFtZSMjU291cmNl
OyB9CiAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZURlZmF1bHRDb25zdHJ1
Y3RvcihDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogCiBwcml2YXRl
OgotICAgIHZvaWQgZmluYWxpemUoSlNDZWxsKiYsIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlk
ZTsKIAogICAgIFZNJiBtX3ZtOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDVkM2Q3NDNjMjRkM2NkZWNhMDFmOTgxOWNkOTdhZjZhMzJiZDFhYWYuLmNjZDMyYTRmNmQxNDJm
MTBhY2EwYmMzM2YwNGI2NGM0MzA5OWNkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC0xMzU4LDE0ICsxMzU4LDE1IEBAIGJvb2wgSGVhcDo6aXNWYWxpZEFsbG9jYXRpb24o
c2l6ZV90KQogCiB2b2lkIEhlYXA6OmFkZEZpbmFsaXplcihKU0NlbGwqIGNlbGwsIEZpbmFsaXpl
ciBmaW5hbGl6ZXIpCiB7Ci0gICAgV2Vha1NldDo6YWxsb2NhdGUoKmNlbGwsICZtX2ZpbmFsaXpl
ck93bmVyLCByZWludGVycHJldF9jYXN0PHZvaWQqPihmaW5hbGl6ZXIpKTsgLy8gQmFsYW5jZWQg
YnkgRmluYWxpemVyT3duZXI6OmZpbmFsaXplKCkuCisgICAgV2Vha1NldDo6YWxsb2NhdGUoY2Vs
bCwgJm1fZmluYWxpemVyT3duZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGZpbmFsaXplcikp
OyAvLyBCYWxhbmNlZCBieSBGaW5hbGl6ZXJPd25lcjo6ZmluYWxpemUoKS4KIH0KIAotdm9pZCBI
ZWFwOjpGaW5hbGl6ZXJPd25lcjo6ZmluYWxpemUoSlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4
dCkKK3ZvaWQgSGVhcDo6RmluYWxpemVyT3duZXI6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBo
YW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7CisgICAgSGFuZGxlU2xvdCBzbG90ID0gaGFuZGxlLnNs
b3QoKTsKICAgICBGaW5hbGl6ZXIgZmluYWxpemVyID0gcmVpbnRlcnByZXRfY2FzdDxGaW5hbGl6
ZXI+KGNvbnRleHQpOwotICAgIGZpbmFsaXplcihjZWxsKTsKLSAgICBXZWFrU2V0OjpkZWFsbG9j
YXRlKFdlYWtJbXBsOjphc1dlYWtJbXBsKCZjZWxsKSk7CisgICAgZmluYWxpemVyKHNsb3QtPmFz
Q2VsbCgpKTsKKyAgICBXZWFrU2V0OjpkZWFsbG9jYXRlKFdlYWtJbXBsOjphc1dlYWtJbXBsKHNs
b3QpKTsKIH0KIAogdm9pZCBIZWFwOjphZGRFeGVjdXRhYmxlKEV4ZWN1dGFibGVCYXNlKiBleGVj
dXRhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IGMzZTA1NDllZTMzYzA2MDdi
YmVmMWJlZDUwOTIyODlhZmFkODc1YTIuLjZkMmY2MWQ2MzYyNjgxMjVlMmY2ZjAwYjA1MDljNGYz
MjZjN2FhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTI2OCw4ICsyNjgsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYU1lbW9yeSA9IDI1
NjsKICAgICAKLSAgICBjbGFzcyBGaW5hbGl6ZXJPd25lciBmaW5hbCA6IHB1YmxpYyBXZWFrSGFu
ZGxlT3duZXIgewotICAgICAgICB2b2lkIGZpbmFsaXplKEpTQ2VsbComLCB2b2lkKiBjb250ZXh0
KSBvdmVycmlkZTsKKyAgICBjbGFzcyBGaW5hbGl6ZXJPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxl
T3duZXIgeworICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2
b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc1ZhbGlkQWxsb2NhdGlvbihzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1dlYWtCbG9jay5jcHAKaW5kZXggMTNkZGJjN2I1N2FlYzk3NTQ2OTNlYTkyOWUwYzgwZTRmZThm
MmU4NS4uN2M3ZDg2YzU5MjI1ZjRjM2MyMjE5YmRiMTRmOGFmZTQ3MmY1MzAyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Jsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrQmxvY2suY3BwCkBAIC0xMTIsMTcgKzExMiwxOCBAQCB2
b2lkIFdlYWtCbG9jazo6dmlzaXQoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3IpCiAg
ICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtX21hcmtlZEJsb2NrLT5pc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQod2Vha0ltcGwtPm1fY2VsbCkpCisgICAgICAgIGNvbnN0IEpTVmFsdWUmIGpz
VmFsdWUgPSB3ZWFrSW1wbC0+anNWYWx1ZSgpOworICAgICAgICBpZiAobV9tYXJrZWRCbG9jay0+
aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgV2Vha0hhbmRsZU93bmVyKiB3ZWFrSGFuZGxlT3duZXIgPSB3
ZWFrSW1wbC0+d2Vha0hhbmRsZU93bmVyKCk7CiAgICAgICAgIGlmICghd2Vha0hhbmRsZU93bmVy
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXIt
PmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKCp3ZWFrSW1wbC0+bV9jZWxsLCB3ZWFrSW1wbC0+
Y29udGV4dCgpLCB2aXNpdG9yKSkKKyAgICAgICAgaWYgKCF3ZWFrSGFuZGxlT3duZXItPmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhhbmRsZTxVbmtub3duPjo6d3JhcFNsb3QoJmNvbnN0X2Nh
c3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKSwgd2Vha0ltcGwtPmNvbnRleHQoKSwgdmlzaXRvcikpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJndl
YWtJbXBsLT5tX2NlbGwpOworICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJmNvbnN0X2Nh
c3Q8SlNWYWx1ZSY+KGpzVmFsdWUpKTsKICAgICB9CiB9CiAKQEAgLTE0Myw3ICsxNDQsNyBAQCB2
b2lkIFdlYWtCbG9jazo6cmVhcCgpCiAgICAgICAgIGlmICh3ZWFrSW1wbC0+c3RhdGUoKSA+IFdl
YWtJbXBsOjpEZWFkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fbWFy
a2VkQmxvY2stPmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh3ZWFrSW1wbC0+Y2VsbCgpKSkgewor
ICAgICAgICBpZiAobV9tYXJrZWRCbG9jay0+aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKHdlYWtJ
bXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQod2Vha0ltcGwt
PnN0YXRlKCkgPT0gV2Vha0ltcGw6OkxpdmUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtIYW5kbGVP
d25lci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuY3Bw
CmluZGV4IGRmZjkxYTlhYTAzM2VhMjllMDhiYzJkNTExYzNmM2JhOWFmNzE2ZGEuLjA0NDUxOGY3
YTMxMzA3Y2YzNjZjMThmYTNiMmU2N2ZkZTgwNWZlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtIYW5kbGVPd25lci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93bmVyLmNwcApAQCAtMzcsMTIgKzM3LDEyIEBAIFdlYWtI
YW5kbGVPd25lcjo6fldlYWtIYW5kbGVPd25lcigpCiB7CiB9CiAKLWJvb2wgV2Vha0hhbmRsZU93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0NlbGwmLCB2b2lkKiwgU2xvdFZpc2l0
b3ImKQorYm9vbCBXZWFrSGFuZGxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEhh
bmRsZTxVbmtub3duPiwgdm9pZCosIFNsb3RWaXNpdG9yJikKIHsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgV2Vha0hhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCopCit2
b2lkIFdlYWtIYW5kbGVPd25lcjo6ZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKikKIHsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0hhbmRsZU93
bmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuaAppbmRl
eCAzMWExNzZmOTc4YTliM2E1NTk4MTZiMmRkY2FjMDM3Mjk0OGMxMTRhLi42MzA0ZGQyMGIyMjFi
YzM2YjUyZTRmOTRkZjljYjJlODAxYmZjNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9XZWFrSGFuZGxlT3duZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrSGFuZGxlT3duZXIuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFzcyBTbG90VmlzaXRv
cjsKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFdlYWtIYW5kbGVPd25lciB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+V2Vha0hhbmRsZU93bmVyKCk7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJik7
Ci0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQ2VsbComLCB2b2lkKiBjb250ZXh0KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSGFuZGxlPFVua25vd24+
LCB2b2lkKiBjb250ZXh0LCBTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6
ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaAppbmRleCA5M2UyZDRkNzlkMzUz
YjRhMTIxOTE3YWJmZWMzZTdkNDczMjI3MjMzLi5jYTkzZmIyODY2N2I4ZGU0YTdmNDkzYTA4ZDAw
MDhhZTc2ZmM5ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsMzkg
KzQ2LDQwIEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgV2Vha0ltcGwoKTsKLSAgICBXZWFrSW1w
bChKU0NlbGwmLCBXZWFrSGFuZGxlT3duZXIqLCB2b2lkKiBjb250ZXh0KTsKKyAgICBXZWFrSW1w
bChKU1ZhbHVlLCBXZWFrSGFuZGxlT3duZXIqLCB2b2lkKiBjb250ZXh0KTsKIAotICAgIFN0YXRl
IHN0YXRlKCkgY29uc3Q7CisgICAgU3RhdGUgc3RhdGUoKTsKICAgICB2b2lkIHNldFN0YXRlKFN0
YXRlKTsKIAotICAgIEpTQ2VsbCogY2VsbCgpOworICAgIGNvbnN0IEpTVmFsdWUmIGpzVmFsdWUo
KTsKICAgICBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lcigpOwogICAgIHZvaWQqIGNv
bnRleHQoKTsKIAotICAgIHN0YXRpYyBXZWFrSW1wbCogYXNXZWFrSW1wbChKU0NlbGwqKik7Cisg
ICAgc3RhdGljIFdlYWtJbXBsKiBhc1dlYWtJbXBsKEpTVmFsdWUqKTsKIAogcHJpdmF0ZToKLSAg
ICBmcmllbmQgY2xhc3MgV2Vha0Jsb2NrOwotCi0gICAgSlNDZWxsKiBtX2NlbGwgeyBudWxscHRy
IH07Ci0gICAgV2Vha0hhbmRsZU93bmVyKiBtX3dlYWtIYW5kbGVPd25lciB7IG51bGxwdHIgfTsK
LSAgICB2b2lkKiBtX2NvbnRleHQgeyBudWxscHRyIH07CisgICAgY29uc3QgSlNWYWx1ZSBtX2pz
VmFsdWU7CisgICAgV2Vha0hhbmRsZU93bmVyKiBtX3dlYWtIYW5kbGVPd25lcjsKKyAgICB2b2lk
KiBtX2NvbnRleHQ7CiB9OwogCiBpbmxpbmUgV2Vha0ltcGw6OldlYWtJbXBsKCkKKyAgICA6IG1f
d2Vha0hhbmRsZU93bmVyKDApCisgICAgLCBtX2NvbnRleHQoMCkKIHsKICAgICBzZXRTdGF0ZShE
ZWFsbG9jYXRlZCk7CiB9CiAKLWlubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwoSlNDZWxsJiBjZWxs
LCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCogY29udGV4dCkKLSAgICA6
IG1fY2VsbCgmY2VsbCkKK2lubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwoSlNWYWx1ZSBqc1ZhbHVl
LCBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciwgdm9pZCogY29udGV4dCkKKyAgICA6
IG1fanNWYWx1ZShqc1ZhbHVlKQogICAgICwgbV93ZWFrSGFuZGxlT3duZXIod2Vha0hhbmRsZU93
bmVyKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKHN0YXRlKCkgPT0g
TGl2ZSk7CisgICAgQVNTRVJUKG1fanNWYWx1ZSAmJiBtX2pzVmFsdWUuaXNDZWxsKCkpOwogfQog
Ci1pbmxpbmUgV2Vha0ltcGw6OlN0YXRlIFdlYWtJbXBsOjpzdGF0ZSgpIGNvbnN0CitpbmxpbmUg
V2Vha0ltcGw6OlN0YXRlIFdlYWtJbXBsOjpzdGF0ZSgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN0YXRlPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV93ZWFrSGFuZGxlT3duZXIp
ICYgU3RhdGVNYXNrKTsKIH0KQEAgLTg5LDkgKzkwLDkgQEAgaW5saW5lIHZvaWQgV2Vha0ltcGw6
OnNldFN0YXRlKFdlYWtJbXBsOjpTdGF0ZSBzdGF0ZSkKICAgICBtX3dlYWtIYW5kbGVPd25lciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vha0hhbmRsZU93bmVyKj4oKHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90PihtX3dlYWtIYW5kbGVPd25lcikgJiB+U3RhdGVNYXNrKSB8IHN0YXRlKTsKIH0KIAot
aW5saW5lIEpTQ2VsbCogV2Vha0ltcGw6OmNlbGwoKQoraW5saW5lIGNvbnN0IEpTVmFsdWUmIFdl
YWtJbXBsOjpqc1ZhbHVlKCkKIHsKLSAgICByZXR1cm4gbV9jZWxsOworICAgIHJldHVybiBtX2pz
VmFsdWU7CiB9CiAKIGlubGluZSBXZWFrSGFuZGxlT3duZXIqIFdlYWtJbXBsOjp3ZWFrSGFuZGxl
T3duZXIoKQpAQCAtMTA0LDkgKzEwNSw5IEBAIGlubGluZSB2b2lkKiBXZWFrSW1wbDo6Y29udGV4
dCgpCiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAotaW5saW5lIFdlYWtJbXBsKiBXZWFrSW1w
bDo6YXNXZWFrSW1wbChKU0NlbGwqKiBzbG90KQoraW5saW5lIFdlYWtJbXBsKiBXZWFrSW1wbDo6
YXNXZWFrSW1wbChKU1ZhbHVlKiBzbG90KQogewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0
X3B0cjxXZWFrSW1wbCo+KHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPihzbG90KSk7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3RfcHRyPFdlYWtJbXBsKj4ocmVpbnRlcnByZXRfY2FzdF9w
dHI8Y2hhcio+KHNsb3QpICsgT0JKRUNUX09GRlNFVE9GKFdlYWtJbXBsLCBtX2pzVmFsdWUpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9XZWFrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lu
bGluZXMuaAppbmRleCAwZmQzMGRjYWYyODEyY2VmNjc4ODA3NmY2NGZmMmUxNjM4MjFjMTljLi5m
YmQzNTIwMTM1NmUyYzg2MTEyYzRjNGFkYmYzYTJjOTNhZjg1NWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKQEAgLTM0LDkgKzM0LDggQEAKIG5hbWVzcGFjZSBK
U0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgV2VhazxUPjo6V2VhayhUKiBjZWxs
LCBXZWFrSGFuZGxlT3duZXIqIHdlYWtPd25lciwgdm9pZCogY29udGV4dCkKLSAgICA6IG1faW1w
bChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoKmNlbGwsIHdlYWtPd25lciwgY29udGV4dCkgOiAw
KQorICAgIDogbV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShjZWxsLCB3ZWFrT3duZXIs
IGNvbnRleHQpIDogMCkKIHsKLSAgICBzdGF0aWNfYXNzZXJ0KChzdGQ6OmlzX2NvbnZlcnRpYmxl
PFQsIEpTQ2VsbD46OnZhbHVlKSwgIkpTQzo6V2VhayBjYW4gb25seSBiZSB1c2VkIHdpdGggY2Vs
bCB0eXBlcy4iKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxU
Pjo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApAQCAtNzQsMzAgKzczLDMwIEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBhdXRvIFdlYWs8VD46Om9wZXJhdG9yPShXZWFrJiYg
b3RoZXIpIC0+IFdlYWsmCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCogV2VhazxUPjo6
b3BlcmF0b3ItPigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faW1wbCAmJiBtX2ltcGwtPnN0YXRl
KCkgPT0gV2Vha0ltcGw6OkxpdmUpOwotICAgIHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+Y2Vs
bCgpKTsKKyAgICByZXR1cm4ganNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUJiBXZWFrPFQ+OjpvcGVyYXRvcioo
KSBjb25zdAogewogICAgIEFTU0VSVChtX2ltcGwgJiYgbV9pbXBsLT5zdGF0ZSgpID09IFdlYWtJ
bXBsOjpMaXZlKTsKLSAgICByZXR1cm4gKmpzQ2FzdDxUKj4obV9pbXBsLT5jZWxsKCkpOworICAg
IHJldHVybiAqanNDYXN0PFQqPihtX2ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSk7CiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBXZWFrPFQ+OjpnZXQoKSBjb25zdAogewogICAg
IGlmICghbV9pbXBsIHx8IG1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1wbDo6TGl2ZSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGpzQ2FzdDxUKj4obV9pbXBsLT5jZWxsKCkpOworICAg
IHJldHVybiBqc0Nhc3Q8VCo+KG1faW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgpKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIGJvb2wgV2VhazxUPjo6d2FzKFQqIG90aGVyKSBjb25z
dAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9pbXBsLT5jZWxsKCkpID09IG90aGVy
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9pbXBsLT5qc1ZhbHVlKCkuYXNDZWxsKCkp
ID09IG90aGVyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBXZWFrPFQ+
OjpvcGVyYXRvciEoKSBjb25zdAogewotICAgIHJldHVybiAhbV9pbXBsIHx8ICFtX2ltcGwtPmNl
bGwoKSB8fCBtX2ltcGwtPnN0YXRlKCkgIT0gV2Vha0ltcGw6OkxpdmU7CisgICAgcmV0dXJuICFt
X2ltcGwgfHwgIW1faW1wbC0+anNWYWx1ZSgpIHx8IG1faW1wbC0+c3RhdGUoKSAhPSBXZWFrSW1w
bDo6TGl2ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFdlYWs8VD46Om9wZXJh
dG9yIGJvb2woKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5oCmluZGV4IDM5
NTBjZmRiMWNjNmRjZTdhZGQ2MWQ2ZDllNzllYzcxNWYzYzgzZjMuLmRiZGU1MTA4YmNkZTk0ZWZj
ZTdjNjBhMmFlNGEzNDliYThmNTJmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1dlYWtTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2Vha1NldCB7CiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBXZWFrSW1wbCogYWxs
b2NhdGUoSlNDZWxsJiwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsK
KyAgICBzdGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciog
PSAwLCB2b2lkKiBjb250ZXh0ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShXZWFr
SW1wbCopOwogCiAgICAgV2Vha1NldChWTSosIE1hcmtlZEJsb2NrJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha1NldElubGluZXMuaAppbmRleCA5NGNiMDEyMjIyZmMxZWE2ZDYz
MDNjOGEzNzRhMzljNzc0NGIwZmI0Li5mMjM5MjI0OTMzMTViNDFhZTAzOGIzY2ZjZTk1YzQyZTcy
MzU2ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrU2V0SW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXRJbmxpbmVzLmgK
QEAgLTMwLDE2ICszMCwxNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotaW5saW5lIFdlYWtJbXBs
KiBXZWFrU2V0OjphbGxvY2F0ZShKU0NlbGwmIGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha0hh
bmRsZU93bmVyLCB2b2lkKiBjb250ZXh0KQoraW5saW5lIFdlYWtJbXBsKiBXZWFrU2V0OjphbGxv
Y2F0ZShKU1ZhbHVlIGpzVmFsdWUsIFdlYWtIYW5kbGVPd25lciogd2Vha0hhbmRsZU93bmVyLCB2
b2lkKiBjb250ZXh0KQogewotICAgIFdlYWtTZXQmIHdlYWtTZXQgPSBNYXJrZWRCbG9jazo6Ymxv
Y2tGb3IoJmNlbGwpLT53ZWFrU2V0KCk7CisgICAgV2Vha1NldCYgd2Vha1NldCA9IE1hcmtlZEJs
b2NrOjpibG9ja0Zvcihqc1ZhbHVlLmFzQ2VsbCgpKS0+d2Vha1NldCgpOwogICAgIFdlYWtCbG9j
azo6RnJlZUNlbGwqIGFsbG9jYXRvciA9IHdlYWtTZXQubV9hbGxvY2F0b3I7CiAgICAgaWYgKFVO
TElLRUxZKCFhbGxvY2F0b3IpKQogICAgICAgICBhbGxvY2F0b3IgPSB3ZWFrU2V0LmZpbmRBbGxv
Y2F0b3IoKTsKICAgICB3ZWFrU2V0Lm1fYWxsb2NhdG9yID0gYWxsb2NhdG9yLT5uZXh0OwogCiAg
ICAgV2Vha0ltcGwqIHdlYWtJbXBsID0gV2Vha0Jsb2NrOjphc1dlYWtJbXBsKGFsbG9jYXRvcik7
Ci0gICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgd2Vha0ltcGwpIFdlYWtJbXBsKGNlbGwsIHdlYWtI
YW5kbGVPd25lciwgY29udGV4dCk7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgd2Vha0ltcGwp
IFdlYWtJbXBsKGpzVmFsdWUsIHdlYWtIYW5kbGVPd25lciwgY29udGV4dCk7CiB9CiAKIGlubGlu
ZSB2b2lkIFdlYWtCbG9jazo6ZmluYWxpemUoV2Vha0ltcGwqIHdlYWtJbXBsKQpAQCAtNDksNyAr
NDksNyBAQCBpbmxpbmUgdm9pZCBXZWFrQmxvY2s6OmZpbmFsaXplKFdlYWtJbXBsKiB3ZWFrSW1w
bCkKICAgICBXZWFrSGFuZGxlT3duZXIqIHdlYWtIYW5kbGVPd25lciA9IHdlYWtJbXBsLT53ZWFr
SGFuZGxlT3duZXIoKTsKICAgICBpZiAoIXdlYWtIYW5kbGVPd25lcikKICAgICAgICAgcmV0dXJu
OwotICAgIHdlYWtIYW5kbGVPd25lci0+ZmluYWxpemUod2Vha0ltcGwtPm1fY2VsbCwgd2Vha0lt
cGwtPmNvbnRleHQoKSk7CisgICAgd2Vha0hhbmRsZU93bmVyLT5maW5hbGl6ZShIYW5kbGU8VW5r
bm93bj46OndyYXBTbG90KCZjb25zdF9jYXN0PEpTVmFsdWUmPih3ZWFrSW1wbC0+anNWYWx1ZSgp
KSksIHdlYWtJbXBsLT5jb250ZXh0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmNwcAppbmRleCBmZjBmYmYwMWY1ZjA1ZGMyM2U2
MWE3YzlmMThhNWIxYjk2NzMyN2EyLi5mYTYxMDQ0NGEwZDhjZDliZTM4NzNiYWI3YmU0ZWQ0MTQw
YTNlM2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuY3BwCkBAIC03Niw5
ICs3Niw5IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBKSVRUaHVua3M6OmN0aVN0dWIoVk0qIHZt
LCBUaHVua0dlbmVyYXRvciBnZW5lcmF0b3IpCiAgICAgcmV0dXJuIGVudHJ5Lml0ZXJhdG9yLT52
YWx1ZTsKIH0KIAotdm9pZCBKSVRUaHVua3M6OmZpbmFsaXplKEpTQ2VsbComIGNlbGwsIHZvaWQq
KQordm9pZCBKSVRUaHVua3M6OmZpbmFsaXplKEhhbmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQq
KQogewotICAgIGF1dG8qIG5hdGl2ZUV4ZWN1dGFibGUgPSBqc0Nhc3Q8TmF0aXZlRXhlY3V0YWJs
ZSo+KGNlbGwpOworICAgIGF1dG8qIG5hdGl2ZUV4ZWN1dGFibGUgPSBqc0Nhc3Q8TmF0aXZlRXhl
Y3V0YWJsZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CiAgICAgd2Vha1JlbW92ZSgqbV9ob3N0
RnVuY3Rpb25TdHViTWFwLCBzdGQ6Om1ha2VfcGFpcihuYXRpdmVFeGVjdXRhYmxlLT5mdW5jdGlv
bigpLCBuYXRpdmVFeGVjdXRhYmxlLT5jb25zdHJ1Y3RvcigpKSwgbmF0aXZlRXhlY3V0YWJsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVGh1bmtzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRodW5rcy5oCmluZGV4IDA1YWY5ODg3ZTM2
NjNhZDQ3OGE5Njg4NTcyOTIyOTUzYjhmZmM1YTEuLjJlMDI4ODNmYTJhNGE5ZTFjYWQyNGZhNTIx
Mzk5ZjEwMjcwMDE0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
VGh1bmtzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUaHVua3MuaApAQCAt
NjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckhvc3RGdW5jdGlvblN0dWJzKCk7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCogY29udGV4dCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4sIHZvaWQqIGNvbnRl
eHQpIG92ZXJyaWRlOwogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxUaHVua0dlbmVyYXRvciwg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPiBDVElTdHViTWFwOwogICAgIENUSVN0dWJNYXAgbV9jdGlT
dHViTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCAyYWU1MjI1YTEwZDdiMjVmMmIxZTAxYzg3
ZWUyMjEyOTYwNTUxYTU1Li44NmEzMjgxZTk5ZTNhN2QyYmU0YzFiOTJlYmQ1ODJmM2FjMWE0MWYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTc2LDEyICsxNzYsMTIgQEAgcHJpdmF0ZToKICAg
ICBXcml0ZUJhcnJpZXI8Um9vdD4gbV9yb290OwogfTsKIAotY2xhc3MgRWxlbWVudEhhbmRsZU93
bmVyIGZpbmFsIDogcHVibGljIFdlYWtIYW5kbGVPd25lciB7CitjbGFzcyBFbGVtZW50SGFuZGxl
T3duZXIgOiBwdWJsaWMgV2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJv
b2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIHsKLSAgICAgICAgYXV0byYgZWxlbWVudCA9IGpzQ2FzdDxFbGVtZW50Jj4oY2Vs
bCk7Ci0gICAgICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChlbGVtZW50LnJv
b3QoKSk7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0Nhc3Q8RWxlbWVudCo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFx
dWVSb290KGVsZW1lbnQtPnJvb3QoKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAppbmRleCAzODE1NWNmNjk5NzBhOTFkNTIyNmI0M2M0NjhkMmIzNzk2
NTA2MjBjLi42ZDY0OGFkMjYyOTQ0ZWQ3YjQ2NzBlMjNkZjc5YzhlNjNiMjk4NWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMjQ1LDEzICsyNDUsNiBAQCBwcml2
YXRlOgogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+Ci1pbmxpbmUg
VG8mIGpzQ2FzdChGcm9tJiBmcm9tKQotewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGZyb20uSlNDZWxsOjppbmhlcml0cyhzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8VG8+Ojp0
eXBlOjppbmZvKCkpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VG8mPihmcm9tKTsKLX0KLQot
dGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CiBpbmxpbmUgVG8ganNDYXN0KEZy
b20qIGZyb20pCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWZyb20g
fHwgZnJvbS0+SlNDZWxsOjppbmhlcml0cyhzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlwZTo6
aW5mbygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5j
cHAKaW5kZXggMjdhM2ZkZjFkNmMzMjIwNDdmOTFhODE2NTY2OGEyMTM0NjAzODkzMy4uOGY0NjYw
YTc4YjQyM2IxNTMxOTZhMWQxMWZkN2MwZGZhODk0MTYxZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmNwcApAQCAtNTYsOSArNTYsOSBAQCBSZWdFeHBD
YWNoZTo6UmVnRXhwQ2FjaGUoVk0qIHZtKQogewogfQogCi12b2lkIFJlZ0V4cENhY2hlOjpmaW5h
bGl6ZShKU0NlbGwqJiBjZWxsLCB2b2lkKikKK3ZvaWQgUmVnRXhwQ2FjaGU6OmZpbmFsaXplKEhh
bmRsZTxVbmtub3duPiBoYW5kbGUsIHZvaWQqKQogewotICAgIFJlZ0V4cCogcmVnRXhwID0ganND
YXN0PFJlZ0V4cCo+KGNlbGwpOworICAgIFJlZ0V4cCogcmVnRXhwID0gc3RhdGljX2Nhc3Q8UmVn
RXhwKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKICAgICB3ZWFrUmVtb3ZlKG1fd2Vha0NhY2hl
LCByZWdFeHAtPmtleSgpLCByZWdFeHApOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwQ2FjaGUuaAppbmRleCBmZTA0ZDU0YTVlYmNlMDcxOGQwZTIzZmRlYzk3YjU5
NmUwZDE5OWJjLi45NDJmM2RjYjk4NmE2OTdjODdlMTM4NmE2ZDcxZTY4MGNmMTQ0MDEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKQEAgLTU0LDcgKzU0
LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4U3Ryb25nQ2FjaGVhYmxl
RW50cmllcyA9IDMyOwogCi0gICAgdm9pZCBmaW5hbGl6ZShKU0NlbGwqJiwgdm9pZCogY29udGV4
dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEhhbmRsZTxVbmtub3duPiwg
dm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICBSZWdFeHAqIGxvb2t1cE9yQ3JlYXRlKGNv
bnN0IFdURjo6U3RyaW5nJiBwYXR0ZXJuU3RyaW5nLCBSZWdFeHBGbGFncyk7CiAgICAgdm9pZCBh
ZGRUb1N0cm9uZ0NhY2hlKFJlZ0V4cCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAKaW5kZXggMDNlMzc2MTU3YWUyOTU0YzI5ODNjNTRiZmNmNmIxMzA0YTBk
MDYyMy4uYTQyYjdhMWEzNGIzYjgxMDA2ZTg0NWE3M2EyZjcyZDFjNDFkMDAwOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC02Miw3ICs2Miw3IEBA
IHN0YXRpYyBIYXNoU2V0PFN0cnVjdHVyZSo+JiBsaXZlU3RydWN0dXJlU2V0ID0gKihuZXcgSGFz
aFNldDxTdHJ1Y3R1cmUqPik7CiAjZW5kaWYKIAogY2xhc3MgU2luZ2xlU2xvdFRyYW5zaXRpb25X
ZWFrT3duZXIgZmluYWwgOiBwdWJsaWMgV2Vha0hhbmRsZU93bmVyIHsKLSAgICB2b2lkIGZpbmFs
aXplKEpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZQorICAgIHZvaWQgZmluYWxpemUo
SGFuZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
U3RydWN0dXJlVHJhbnNpdGlvblRhYmxlKiB0YWJsZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0
dXJlVHJhbnNpdGlvblRhYmxlKj4oY29udGV4dCk7CiAgICAgICAgIEFTU0VSVCh0YWJsZS0+aXNV
c2luZ1NpbmdsZVNsb3QoKSk7CkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6c2luZ2xlVHJhbnNpdGlvbigpIGNvbnN0CiAgICAgQVNT
RVJUKGlzVXNpbmdTaW5nbGVTbG90KCkpOwogICAgIGlmIChXZWFrSW1wbCogaW1wbCA9IHRoaXMt
PndlYWtJbXBsKCkpIHsKICAgICAgICAgaWYgKGltcGwtPnN0YXRlKCkgPT0gV2Vha0ltcGw6Okxp
dmUpCi0gICAgICAgICAgICByZXR1cm4ganNDYXN0PFN0cnVjdHVyZSo+KGltcGwtPmNlbGwoKSk7
CisgICAgICAgICAgICByZXR1cm4ganNDYXN0PFN0cnVjdHVyZSo+KGltcGwtPmpzVmFsdWUoKS5h
c0NlbGwoKSk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAtOTIsNyArOTIsNyBA
QCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6OnNldFNpbmdsZVRyYW5zaXRp
b24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgQVNTRVJUKGlzVXNpbmdTaW5nbGVTbG90KCkp
OwogICAgIGlmIChXZWFrSW1wbCogaW1wbCA9IHRoaXMtPndlYWtJbXBsKCkpCiAgICAgICAgIFdl
YWtTZXQ6OmRlYWxsb2NhdGUoaW1wbCk7Ci0gICAgV2Vha0ltcGwqIGltcGwgPSBXZWFrU2V0Ojph
bGxvY2F0ZSgqc3RydWN0dXJlLCAmc2luZ2xlU2xvdFRyYW5zaXRpb25XZWFrT3duZXIoKSwgdGhp
cyk7CisgICAgV2Vha0ltcGwqIGltcGwgPSBXZWFrU2V0OjphbGxvY2F0ZShzdHJ1Y3R1cmUsICZz
aW5nbGVTbG90VHJhbnNpdGlvbldlYWtPd25lcigpLCB0aGlzKTsKICAgICBtX2RhdGEgPSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihpbXBsKSB8IFVzaW5nU2luZ2xlU2xvdEZsYWc7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTUnVsZUxpc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5j
cHAKaW5kZXggNmRiZTRjYWE4ZmI1NGE0MzFhZDIxN2FmY2IyNTM5ZmUxOGU5YmI1Mi4uODllOTky
MTUwNmZmNTBlODFlMGM4YjhiODM5ZjJlOTg2YmRhOTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAKQEAgLTM2LDE0ICszNiwx
NCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
SlNDU1NSdWxlTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2Vs
bCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU0NTU1J1bGVMaXN0
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byYganND
U1NSdWxlTGlzdCA9IGpzQ2FzdDxKU0NTU1J1bGVMaXN0Jj4oY2VsbCk7Ci0gICAgaWYgKCFqc0NT
U1J1bGVMaXN0Lmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICBKU0NTU1J1bGVMaXN0KiBqc0NT
U1J1bGVMaXN0ID0ganNDYXN0PEpTQ1NTUnVsZUxpc3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwo
KSk7CisgICAgaWYgKCFqc0NTU1J1bGVMaXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGpz
Q1NTUnVsZUxpc3QuaW1wbCgpLnN0eWxlU2hlZXQoKSkKKyAgICBpZiAoQ1NTU3R5bGVTaGVldCog
c3R5bGVTaGVldCA9IGpzQ1NTUnVsZUxpc3QtPmltcGwoKS5zdHlsZVNoZWV0KCkpCiAgICAgICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0eWxlU2hlZXQpKTsKLSAg
ICBpZiAoQ1NTUnVsZSogY3NzUnVsZSA9IGpzQ1NTUnVsZUxpc3QuaW1wbCgpLml0ZW0oMCkpCisg
ICAgaWYgKENTU1J1bGUqIGNzc1J1bGUgPSBqc0NTU1J1bGVMaXN0LT5pbXBsKCkuaXRlbSgwKSkK
ICAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QoY3NzUnVsZSkp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NWYWx1ZUN1c3RvbS5jcHAKaW5kZXggYzVlYjg0ZjZmMGJiNTgzOTAwOTQwZWM0NDVkZTc0
NTA4NTY2NzJhOC4uZWQ1MTI1MzNlZDMzYTM5MjI1MmJmNjQ1MmMyMWViYzlhZWE5YTE3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKQEAg
LTQ0LDI0ICs0NCwyNCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWJvb2wgSlNDU1NWYWx1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiti
b29sIEpTQ1NTVmFsdWVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewotICAgIGF1dG8mIGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NWYWx1ZSY+KGNlbGwp
OwotICAgIGlmICghanNDU1NWYWx1ZS5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgSlNDU1NW
YWx1ZSoganNDU1NWYWx1ZSA9IGpzQ2FzdDxKU0NTU1ZhbHVlKj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOworICAgIGlmICghanNDU1NWYWx1ZS0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCA9ICpzdGF0aWNf
Y2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB2b2lkKiByb290ID0gd29ybGQu
bV9jc3NWYWx1ZVJvb3RzLmdldCgmanNDU1NWYWx1ZS5pbXBsKCkpOworICAgIERPTVdyYXBwZXJX
b3JsZCogd29ybGQgPSBzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKKyAg
ICB2b2lkKiByb290ID0gd29ybGQtPm1fY3NzVmFsdWVSb290cy5nZXQoJmpzQ1NTVmFsdWUtPmlt
cGwoKSk7CiAgICAgaWYgKCFyb290KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QpOwogfQogCi12b2lkIEpTQ1NTVmFsdWVP
d25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKiBjb250ZXh0KQordm9pZCBK
U0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8mIGpzQ1NTVmFsdWUgPSBqc0Nhc3Q8SlNDU1NW
YWx1ZSY+KCpjZWxsKTsKKyAgICBKU0NTU1ZhbHVlKiBqc0NTU1ZhbHVlID0ganNDYXN0PEpTQ1NT
VmFsdWUqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAgICB3b3Js
ZC5tX2Nzc1ZhbHVlUm9vdHMucmVtb3ZlKCZqc0NTU1ZhbHVlLmltcGwoKSk7Ci0gICAgdW5jYWNo
ZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLmltcGwoKSwgJmpzQ1NTVmFsdWUpOworICAgIHdv
cmxkLm1fY3NzVmFsdWVSb290cy5yZW1vdmUoJmpzQ1NTVmFsdWUtPmltcGwoKSk7CisgICAgdW5j
YWNoZVdyYXBwZXIod29ybGQsICZqc0NTU1ZhbHVlLT5pbXBsKCksIGpzQ1NTVmFsdWUpOwogfQog
CiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ1NTVmFsdWUqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxs
YmFja0RhdGEuY3BwCmluZGV4IGVhM2RmOTNkN2Q3NTZjMGJkNWVjY2ExN2VlNWI0ZGNjOGJlZTBm
MjEuLjZkNDBhNDdmNzExYWI0NTliZmY1MTExMzYxYmYwZDY3NDYzOTc5YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTkwLDcgKzkwLDcg
QEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxi
YWNrLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29s
IEpTQ2FsbGJhY2tEYXRhV2Vhazo6V2Vha093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9v
bCBKU0NhbGxiYWNrRGF0YVdlYWs6OldlYWtPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KGNvbnRl
eHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFj
a0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKaW5k
ZXggMDIwNzE3MTJjY2VjZDIxNWQ5YzFlMzhhYmM3NWE1NmVjNjhlNTcyOC4uN2FjZjkyMWY0OGUz
NWJjMGY4MGE1NzE3YjVkZTI1ZDViODM4MThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NhbGxiYWNrRGF0YS5oCkBAIC0xMDUsOCArMTA1LDggQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBjbGFzcyBXZWFrT3duZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewotICAgICAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwor
ICAgIGNsYXNzIFdlYWtPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CiAgICAgfTsK
ICAgICBXZWFrT3duZXIgbV93ZWFrT3duZXI7CiAgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+
IG1fY2FsbGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCBjYTZiMWUxZjJmNGNiZTc4Y2NjMWY4NmE0
OTEwNzRlN2RlMmNlODM2Li4zODA1NTcyNDcyMDI2YjJhNDhkNDIzMzZhNmNiMDlkNDhiZGE2Yjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlKiBleGVjKQogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNPYnNlcnZlcik7CiB9CiAKLWJvb2wgSlNNdXRhdGlv
bk9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBj
ZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTTXV0YXRpb25PYnNlcnZl
ck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIE11dGF0aW9u
T2JzZXJ2ZXImIG9ic2VydmVyID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlciY+KGNlbGwpLmlt
cGwoKTsKKyAgICBNdXRhdGlvbk9ic2VydmVyJiBvYnNlcnZlciA9IGpzQ2FzdDxKU011dGF0aW9u
T2JzZXJ2ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPmltcGwoKTsKICAgICBhdXRvIG9i
c2VydmVkTm9kZXMgPSBvYnNlcnZlci5nZXRPYnNlcnZlZE5vZGVzKCk7CiAgICAgZm9yIChhdXRv
IGl0ID0gb2JzZXJ2ZWROb2Rlcy5iZWdpbigpLCBlbmQgPSBvYnNlcnZlZE5vZGVzLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290
KHJvb3QoKml0KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05v
ZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNw
cAppbmRleCBkZWVlNjc1YTkyNTEyMTA1NGYxNzIzMjdlNTM2YWE0ZGY4ZTVmNzU5Li5mM2E0MmEw
ZDk3OWJhNTg1OTg1YzA1ZDY3MGE1ZjkwYTcxNzlmM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKQEAgLTc1LDExICs3NSwxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1JlYWNoYWJsZUZyb21ET00oTm9kZSYgbm9kZSwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNSZWFjaGFibGVGcm9tRE9NKE5vZGUqIG5vZGUsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIGlmICghbm9kZS5pbkRvY3VtZW50KCkpIHsKLSAgICAg
ICAgaWYgKGlzPEVsZW1lbnQ+KG5vZGUpKSB7Ci0gICAgICAgICAgICBhdXRvJiBlbGVtZW50ID0g
ZG93bmNhc3Q8RWxlbWVudD4obm9kZSk7CisgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpIHsK
KyAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkgeworICAgICAgICAgICAgYXV0byYgZWxl
bWVudCA9IGRvd25jYXN0PEVsZW1lbnQ+KCpub2RlKTsKIAogICAgICAgICAgICAgLy8gSWYgYSB3
cmFwcGVyIGlzIHRoZSBsYXN0IHJlZmVyZW5jZSB0byBhbiBpbWFnZSBlbGVtZW50CiAgICAgICAg
ICAgICAvLyB0aGF0IGlzIGxvYWRpbmcgYnV0IG5vdCBpbiB0aGUgZG9jdW1lbnQsIHRoZSB3cmFw
cGVyIGlzIG9ic2VydmFibGUKQEAgLTEwMCwxNyArMTAwLDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1JlYWNoYWJsZUZyb21ET00oTm9kZSYgbm9kZSwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAK
ICAgICAgICAgLy8gSWYgYSBub2RlIGlzIGZpcmluZyBldmVudCBsaXN0ZW5lcnMsIGl0cyB3cmFw
cGVyIGlzIG9ic2VydmFibGUgYmVjYXVzZQogICAgICAgICAvLyBpdHMgd3JhcHBlciBpcyByZXNw
b25zaWJsZSBmb3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCi0gICAgICAgIGlmIChu
b2RlLmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgaWYgKG5vZGUtPmlzRmlyaW5n
RXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KCZub2RlKSk7CisgICAgcmV0
dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qobm9kZSkpOwogfQogCi1ib29sIEpT
Tm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwg
dm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU05vZGVPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvJiBqc05vZGUgPSBqc0Nhc3Q8SlNO
b2RlJj4oY2VsbCk7Ci0gICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTShqc05vZGUuaW1wbCgp
LCB2aXNpdG9yKTsKKyAgICBKU05vZGUqIGpzTm9kZSA9IGpzQ2FzdDxKU05vZGUqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgcmV0dXJuIGlzUmVhY2hhYmxlRnJvbURPTSgmanNOb2Rl
LT5pbXBsKCksIHZpc2l0b3IpOwogfQogCiBKU1ZhbHVlIEpTTm9kZTo6aW5zZXJ0QmVmb3JlKEV4
ZWNTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxp
c3RDdXN0b20uY3BwCmluZGV4IDhjY2ExODhiNmM1YWJlZDIwZDAxZTQzNjM5NGYwNzI4NTQ3NTVh
Y2QuLmY3ZDg2M2I4ZTM5NWRiZmNmMTEzY2M2ODZiMzVmNDY4NzRkNTAwYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCkBAIC0zNywxNyAr
MzcsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1i
b29sIEpTTm9kZUxpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0Nl
bGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNOb2RlTGlzdE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8mIGpzTm9k
ZUxpc3QgPSBqc0Nhc3Q8SlNOb2RlTGlzdCY+KGNlbGwpOwotICAgIGlmICghanNOb2RlTGlzdC5o
YXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgSlNOb2RlTGlzdCoganNOb2RlTGlzdCA9IGpzQ2Fz
dDxKU05vZGVMaXN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGlmICghanNOb2Rl
TGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKGpzTm9kZUxpc3QuaW1wbCgpLmlzTGl2ZU5vZGVMaXN0KCkpCi0gICAgICAgIHJldHVybiB2
aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PExpdmVOb2RlTGlzdCY+
KGpzTm9kZUxpc3QuaW1wbCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05vZGVMaXN0Lmlt
cGwoKS5pc0NoaWxkTm9kZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8Q2hpbGROb2RlTGlzdCY+KGpzTm9kZUxpc3QuaW1w
bCgpKS5vd25lck5vZGUoKSkpOwotICAgIGlmIChqc05vZGVMaXN0LmltcGwoKS5pc0VtcHR5Tm9k
ZUxpc3QoKSkKLSAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qo
c3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QuaW1wbCgpKS5vd25lck5vZGUo
KSkpOworICAgIGlmIChqc05vZGVMaXN0LT5pbXBsKCkuaXNMaXZlTm9kZUxpc3QoKSkKKyAgICAg
ICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8TGl2
ZU5vZGVMaXN0Jj4oanNOb2RlTGlzdC0+aW1wbCgpKS5vd25lck5vZGUoKSkpOworICAgIGlmIChq
c05vZGVMaXN0LT5pbXBsKCkuaXNDaGlsZE5vZGVMaXN0KCkpCisgICAgICAgIHJldHVybiB2aXNp
dG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PENoaWxkTm9kZUxpc3QmPihq
c05vZGVMaXN0LT5pbXBsKCkpLm93bmVyTm9kZSgpKSk7CisgICAgaWYgKGpzTm9kZUxpc3QtPmlt
cGwoKS5pc0VtcHR5Tm9kZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8RW1wdHlOb2RlTGlzdCY+KGpzTm9kZUxpc3QtPmlt
cGwoKSkub3duZXJOb2RlKCkpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcAppbmRleCBk
NWMxN2RjMjFlMzEyZDZkZmExZjIzMzk3NmRmMjIzMWM1NjQ2NDY5Li41N2Y4OGI5NTVjZjU4NTE4
OGMyYTZiZWU0ZGY3NzRmNGYyOTUxYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RleHRUcmFja0N1ZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC0zOCwxMCArMzgsMTAgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTVGV4dFRy
YWNrQ3VlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxs
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGV4dFRyYWNrQ3VlT3duZXI6
OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFu
ZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byYganNUZXh0VHJh
Y2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUmPihjZWxsKTsKLSAgICBUZXh0VHJhY2tDdWUm
IHRleHRUcmFja0N1ZSA9IGpzVGV4dFRyYWNrQ3VlLmltcGwoKTsKKyAgICBKU1RleHRUcmFja0N1
ZSoganNUZXh0VHJhY2tDdWUgPSBqc0Nhc3Q8SlNUZXh0VHJhY2tDdWUqPihoYW5kbGUuc2xvdCgp
LT5hc0NlbGwoKSk7CisgICAgVGV4dFRyYWNrQ3VlJiB0ZXh0VHJhY2tDdWUgPSBqc1RleHRUcmFj
a0N1ZS0+aW1wbCgpOwogCiAgICAgLy8gSWYgdGhlIGN1ZSBpcyBmaXJpbmcgZXZlbnQgbGlzdGVu
ZXJzLCBpdHMgd3JhcHBlciBpcyByZWFjaGFibGUgYmVjYXVzZQogICAgIC8vIHRoZSB3cmFwcGVy
IGlzIHJlc3BvbnNpYmxlIGZvciBtYXJraW5nIHRob3NlIGV2ZW50IGxpc3RlbmVycy4KQEAgLTQ5
LDcgKzQ5LDcgQEAgYm9vbCBKU1RleHRUcmFja0N1ZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCosIFMKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBJZiB0aGUgY3VlIGhhcyBubyBldmVudCBsaXN0ZW5lcnMgYW5kIGhhcyBubyBj
dXN0b20gcHJvcGVydGllcywgaXQgaXMgbm90IHJlYWNoYWJsZS4KLSAgICBpZiAoIXRleHRUcmFj
a0N1ZS5oYXNFdmVudExpc3RlbmVycygpICYmICFqc1RleHRUcmFja0N1ZS5oYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkpCisgICAgaWYgKCF0ZXh0VHJhY2tDdWUuaGFzRXZlbnRMaXN0ZW5lcnMoKSAmJiAh
anNUZXh0VHJhY2tDdWUtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gSWYgdGhlIGN1ZSBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgdHJhY2ss
IGl0IGlzIG5vdCByZWFjaGFibGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAppbmRleCBmYWI3MzU3Zjg3
YjVlY2UyNjZhNGRiZGNlOTA5NWIwNzI1ODljYmNiLi4xMTA2OTI5OGRjODkzMzA3NTk2NDk1YmRl
NWYwZmZmZmJjMTJiMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9X
ZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAKQEAgLTQ3LDE3ICs0NywxNyBA
QCBKU0M6OkpTQXJyYXlCdWZmZXIqIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6dG9KUyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQwogICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0M6OkpT
QXJyYXlCdWZmZXIqPihXZWJDb3JlOjp0b0pTKHN0YXRlLCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCksIGJ1ZmZlcikpOwogfQogCi1ib29sIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCosIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCitib29sIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZlck93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0byYgd3Jh
cHBlciA9IEpTQzo6anNDYXN0PEpTQzo6SlNBcnJheUJ1ZmZlciY+KGNlbGwpOworICAgIGF1dG8m
IHdyYXBwZXIgPSAqSlNDOjpqc0Nhc3Q8SlNDOjpKU0FycmF5QnVmZmVyKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpOwogICAgIGlmICghd3JhcHBlci5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJv
b3Qod3JhcHBlci5pbXBsKCkpOwogfQogCi12b2lkIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxl
cjo6SlNBcnJheUJ1ZmZlck93bmVyOjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNlbGwsIHZvaWQq
IGNvbnRleHQpCit2b2lkIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlcjo6SlNBcnJheUJ1ZmZl
ck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8SlNDOjpKU0FycmF5
QnVmZmVyJj4oKmNlbGwpOworICAgIGF1dG8mIHdyYXBwZXIgPSAqc3RhdGljX2Nhc3Q8SlNDOjpK
U0FycmF5QnVmZmVyKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIGJ1ZmZl
ciA9ICp3cmFwcGVyLmltcGwoKTsKICAgICB1bmNhY2hlV3JhcHBlcigqc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCksICZidWZmZXIsICZ3cmFwcGVyKTsKICAgICBidWZmZXIu
ZGVyZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29y
ZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKaW5kZXggYzkwOTljZTJiMDlmODA2YTMxYzZhYTM4OTkz
ZDcwZmM5OGUwNDNhZS4uN2UwNDRjNGYwZDFiOGNiMzQ2M2NkZGM0YmM3YzNjNWRmNmM4MGU1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZVR5cGVk
QXJyYXlDb250cm9sbGVyLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgV2Vha0hhbmRsZU93bmVy
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYkNvcmVUeXBlZEFycmF5Q29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9sbGVyIHsKK2NsYXNzIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlciA6IHB1YmxpYyBKU0M6OlR5cGVkQXJyYXlDb250cm9s
bGVyIHsKIHB1YmxpYzoKICAgICBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKICAgICB2
aXJ0dWFsIH5XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIoKTsKQEAgLTQ1LDEwICs0NSwxMCBA
QCBwdWJsaWM6CiAgICAgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcigpIHsgcmV0
dXJuICZtX293bmVyOyB9CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgSlNBcnJheUJ1ZmZlck93bmVy
IGZpbmFsIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKKyAgICBjbGFzcyBKU0FycmF5
QnVmZmVyT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIHB1YmxpYzoK
LSAgICAgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYsIHZv
aWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKLSAgICAgICAgdm9pZCBm
aW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICAgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBKU0FycmF5QnVmZmVyT3duZXIg
bV9vd25lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggZWEzNTYwNWI0NjU0MjZhNDQzMDdhODU1OWI1ODQyNmUzMDA5Yzg0
Yi4uN2JlMDE3OWNkOTVhZWRjNGIyMDU2MGM3NmEwMjNjZmMzZGVjZTE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTEx
ODYsOCArMTE4Niw4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB9CiAgICAgICAgICRo
ZWFkZXJJbmNsdWRlc3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgInB1YmxpYzpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2
b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7XG4iKTsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZv
aWQqIGNvbnRleHQpIG92ZXJyaWRlO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTtcbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTtcbiIpOwogICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAifTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImlubGluZSBKU0M6OldlYWtI
YW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsICRpbXBsVHlwZSopXG4i
KTsKQEAgLTI5NjEsNyArMjk2MSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICBpZiAoKCEkaGFzUGFyZW50ICYmICFHZXRDdXN0b21Jc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSkg
fHwgR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fCAkY29kZUdlbmVyYXRvci0+
SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0Iikp
IHsKIAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgSlMke2ludGVyZmFjZU5hbWV9
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJib29sIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAg
ICMgQWxsIEFjdGl2ZURPTU9iamVjdHMgaW1wbGVtZW50IGhhc1BlbmRpbmdBY3Rpdml0eSgpLCBi
dXQgbm90IGFsbCBvZiB0aGVtCiAgICAgICAgICMgaW5jcmVtZW50IHRoZWlyIEMrKyByZWZlcmVu
Y2UgY291bnRzIHdoZW4gaGFzUGVuZGluZ0FjdGl2aXR5KCkgYmVjb21lcwpAQCAtMjk3Miw3MCAr
Mjk3Miw3MCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAjIGNoZWNrIGp1
c3QgYWJvdmUgdGhlIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBs
IikgY2hlY2sgYmVsb3cuCiAgICAgICAgIG15ICRlbWl0dGVkSlNDYXN0ID0gMDsKICAgICAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2Us
ICJBY3RpdmVET01PYmplY3QiKSkgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byYganMke2ludGVyZmFjZU5hbWV9ID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSY+
KGNlbGwpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBq
cyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAkZW1pdHRlZEpTQ2FzdCA9IDE7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoanMke2ludGVyZmFjZU5hbWV9
LmltcGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSlcbiIpOworICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmhhc1BlbmRpbmdB
Y3Rpdml0eSgpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PkluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikpIHsK
ICAgICAgICAgICAgIGlmICghJGVtaXR0ZWRKU0Nhc3QpIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMk
e2ludGVyZmFjZU5hbWV9Jj4oY2VsbCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVy
ZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKGpzJHtpbnRlcmZhY2VOYW1lfS5pbXBsKCkuaXNGaXJpbmdF
dmVudExpc3RlbmVycygpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygp
KVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRy
dWU7XG4iKTsKICAgICAgICAgfQogICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkluaGVyaXRz
SW50ZXJmYWNlKCRpbnRlcmZhY2UsICJOb2RlIikpIHsKICAgICAgICAgICAgIGlmICghJGVtaXR0
ZWRKU0Nhc3QpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
JiBqcyR7aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Jj4oY2VsbCk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7
aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgJGVtaXR0ZWRKU0Nhc3QgPSAxOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpT
Tm9kZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhjZWxsLCAwLCB2aXNpdG9yKSlc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpTTm9kZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhoYW5kbGUsIDAsIHZpc2l0b3IpKVxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNl
KSkgewogICAgICAgICAgICAgaWYgKCEkZW1pdHRlZEpTQ2FzdCkgewotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2Fz
dDxKUyR7aW50ZXJmYWNlTmFtZX0mPihjZWxsKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGF1dG8qIGpzJHtpbnRlcmZhY2VOYW1lfSA9IGpzQ2FzdDxKUyR7
aW50ZXJmYWNlTmFtZX0qPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7XG4iKTsKICAgICAgICAg
ICAgICAgICAkZW1pdHRlZEpTQ2FzdCA9IDE7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IG15ICRyb290U3RyaW5nOwogICAgICAgICAgICAgaWYgKEdldEdlbmVyYXRlSXNSZWFjaGFibGUo
JGludGVyZmFjZSkgZXEgIkltcGwiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0g
IiAgICAke2ltcGxUeXBlfSogcm9vdCA9ICZqcyR7aW50ZXJmYWNlTmFtZX0uaW1wbCgpO1xuIjsK
KyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgICR7aW1wbFR5cGV9KiByb290ID0g
JmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdl
dEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQiKSB7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiByb290ID0gV1RGOjpnZXRQdHIoanMke2ludGVyZmFjZU5hbWV9Lmlt
cGwoKS5jb250ZXh0KCkpO1xuIjsKKyAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHJvb3QgPSBXVEY6OmdldFB0cihqcyR7aW50ZXJm
YWNlTmFtZX0tPmltcGwoKS5jb250ZXh0KCkpO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdl
dEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxGcmFtZSIpIHsKLSAgICAg
ICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEZyYW1lKiByb290ID0gV1RGOjpnZXRQdHIo
anMke2ludGVyZmFjZU5hbWV9LmltcGwoKS5mcmFtZSgpKTtcbiI7CisgICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgID0gIiAgICBGcmFtZSogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtpbnRlcmZh
Y2VOYW1lfS0+aW1wbCgpLmZyYW1lKCkpO1xuIjsKICAgICAgICAgICAgICAgICAkcm9vdFN0cmlu
ZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgLj0g
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKEdldEdlbmVy
YXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxEb2N1bWVudCIpIHsKLSAgICAgICAg
ICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIERvY3VtZW50KiByb290ID0gV1RGOjpnZXRQdHIo
anMke2ludGVyZmFjZU5hbWV9LmltcGwoKS5kb2N1bWVudCgpKTtcbiI7CisgICAgICAgICAgICAg
ICAgJHJvb3RTdHJpbmcgID0gIiAgICBEb2N1bWVudCogcm9vdCA9IFdURjo6Z2V0UHRyKGpzJHtp
bnRlcmZhY2VOYW1lfS0+aW1wbCgpLmRvY3VtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAgICAk
cm9vdFN0cmluZyAuPSAiICAgIGlmICghcm9vdClcbiI7CiAgICAgICAgICAgICAgICAgJHJvb3RT
dHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYg
KEdldEdlbmVyYXRlSXNSZWFjaGFibGUoJGludGVyZmFjZSkgZXEgIkltcGxFbGVtZW50Um9vdCIp
IHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50LmgifSA9IDE7CiAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9IDE7Ci0gICAgICAg
ICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICBFbGVtZW50KiBlbGVtZW50ID0gV1RGOjpnZXRQ
dHIoanMke2ludGVyZmFjZU5hbWV9LmltcGwoKS5lbGVtZW50KCkpO1xuIjsKKyAgICAgICAgICAg
ICAgICAkcm9vdFN0cmluZyAgPSAiICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBXVEY6OmdldFB0cihq
cyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5lbGVtZW50KCkpO1xuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgIGlmICghZWxlbWVudClcbiI7CiAgICAgICAgICAgICAgICAg
JHJvb3RTdHJpbmcgLj0gIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIjsKICAgICAgICAgICAgICAg
ICAkcm9vdFN0cmluZyAuPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpyb290KGVsZW1lbnQp
O1xuIjsKICAgICAgICAgICAgIH0gZWxzaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0IikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkVsZW1lbnQu
aCJ9ID0gMTsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGVDdXN0b20uaCJ9
ID0gMTsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBX
ZWJDb3JlOjpyb290KGpzJHtpbnRlcmZhY2VOYW1lfS5pbXBsKCkuY2FudmFzKCkpO1xuIjsKKyAg
ICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQqIHJvb3QgPSBXZWJDb3JlOjpy
b290KGpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLmNhbnZhcygpKTtcbiI7CiAgICAgICAgICAg
ICB9IGVsc2lmIChHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIGVxICJJbXBsT3du
ZXJOb2RlUm9vdCIpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFbGVtZW50Lmgi
fSA9IDE7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlQ3VzdG9tLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2Vi
Q29yZTo6cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0uaW1wbCgpLm93bmVyTm9kZSgpKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6
cm9vdChqcyR7aW50ZXJmYWNlTmFtZX0tPmltcGwoKS5vd25lck5vZGUoKSk7XG4iOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAkcm9vdFN0cmluZyAgPSAiICAgIHZvaWQq
IHJvb3QgPSBXZWJDb3JlOjpyb290KCZqcyR7aW50ZXJmYWNlTmFtZX0uaW1wbCgpKTtcbiI7Cisg
ICAgICAgICAgICAgICAgJHJvb3RTdHJpbmcgID0gIiAgICB2b2lkKiByb290ID0gV2ViQ29yZTo6
cm9vdCgmanMke2ludGVyZmFjZU5hbWV9LT5pbXBsKCkpO1xuIjsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRyb290U3RyaW5nKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9v
dChyb290KTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKCEkZW1pdHRl
ZEpTQ2FzdCkgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNF
RF9QQVJBTShjZWxsKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBmYWxzZTtcbiIpOwpAQCAt
MzA0OCwxMSArMzA0OCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
R2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSB8fAogICAgICAgICAgR2V0Q3VzdG9t
SXNSZWFjaGFibGUoJGludGVyZmFjZSkgfHwKICAgICAgICAgICRjb2RlR2VuZXJhdG9yLT5Jbmhl
cml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVET01PYmplY3QiKSkpIHsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVy
OjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNlbGwsIHZvaWQqIGNvbnRleHQpXG4iKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ2b2lkIEpTJHtpbnRlcmZhY2VOYW1lfU93bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dClcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0PEpTJHtpbnRlcmZhY2VOYW1lfSY+
KCpjZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBqcyR7
aW50ZXJmYWNlTmFtZX0gPSBqc0Nhc3Q8SlMke2ludGVyZmFjZU5hbWV9Kj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8m
IHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpO1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3Jh
cHBlci5pbXBsKCksICZ3cmFwcGVyKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzJHtpbnRlcmZhY2VOYW1lfS0+aW1wbCgpLCBq
cyR7aW50ZXJmYWNlTmFtZX0pO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggOTgy
ZTYxMDliMTcxMWUxNzk1NGNiMWM5NzAzMTBlZDVkNTkzZmU1Ni4uZGY3MjA3N2JhMDJlZWRlMTJh
YjY4NTk2YzdkZmJkMjBkMTM0YmQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5j
cHAKQEAgLTI0MCwxOCArMjQwLDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotYm9vbCBKU1Rlc3RBY3Rp
dmVET01PYmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwm
IGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5V
U0VEX1BBUkFNKGNlbGwpOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0QWN0aXZl
RE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4
dCkKK3ZvaWQgSlNUZXN0QWN0aXZlRE9NT2JqZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8mIHdyYXBw
ZXIgPSBqc0Nhc3Q8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Jj4oKmNlbGwpOworICAgIGF1dG8qIGpz
VGVzdEFjdGl2ZURPTU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3QqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9N
V3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFw
cGVyLmltcGwoKSwgJndyYXBwZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0
QWN0aXZlRE9NT2JqZWN0LT5pbXBsKCksIGpzVGVzdEFjdGl2ZURPTU9iamVjdCk7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgK
aW5kZXggM2U2ZDQ2Njk2NTViNmM5ZmMzMzE1MDI5YTQ1MmZlYTNlYWZhNTFhNC4uOGM5NTg4N2Jj
MTRmZDE4MjdmM2E5OGI5NDgwOWU2YjhjMTQ2MWNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuaApAQCAtNzIsOCArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdEFjdGl2
ZURPTU9iamVjdE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoK
LSAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCog
Y29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluYWxpemUo
SlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxp
emUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7CiB9OwogCiBpbmxp
bmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBU
ZXN0QWN0aXZlRE9NT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDNlM2ZhNDk0
ZDQ5M2EyNzVjMjY2NWM0ZjQxYzhjZDYzYWMyOGVkOTIuLmEzYWZhZWY1Yzc4ZjM4NzY1NGI1YTFi
OWM0ODdmY2YzYzliNzczZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTU3LDE4ICsx
NTcsMTggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGNvbnN0cnVjdG9yKTsKIH0KIAotYm9vbCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpT
Q2VsbCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZyb21P
cGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShjZWxsKTsKKyAgICBVTlVTRURf
UEFSQU0oaGFuZGxlKTsKICAgICBVTlVTRURfUEFSQU0odmlzaXRvcik7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0T3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3Zv
aWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lcjo6Zmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7
Ci0gICAgYXV0byYgd3JhcHBlciA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdCY+KCpjZWxsKTsKKyAgICBhdXRvKiBqc1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCA9IGpzQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKICAgICBh
dXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250ZXh0KTsKLSAg
ICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBlcik7CisgICAg
dW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC0+aW1wbCgpLCBqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdCk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5oCmluZGV4IDYyMmY4NjY2NTA0MjZhZDBkZDcyMDUyYmIyYWQwNzA1ZDc5YTQxZWEuLjBk
MjM5YWYwOTg1ZThiMzBkMWYyZTE0MDJhNzZiZGQwYzIxOTNiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5oCkBAIC02OCw4ICs2OCw4IEBAIHByb3RlY3RlZDoKIAogY2xhc3MgSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRs
ZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7CisgICAg
dmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNv
bnRleHQpOwogfTsKIAogaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVyT3duZXIo
RE9NV3JhcHBlcldvcmxkJiwgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDA3YzdiNDJl
Yzg3Y2NiYjJkYzNhYzQ2MjMwYjUyYzY5OTY5ZTk0YjYuLjQ1OWY1MDRkOWM4M2FiNTE5OGVmZDY3
NWFhNzgzYmM3YjhhMGM0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cApAQCAtMjI1LDE4ICsyMjUsMTggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmMKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1ib29sIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxs
JiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGNlbGwpOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAgIFVOVVNF
RF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKiBj
b250ZXh0KQordm9pZCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRv
JiB3cmFwcGVyID0ganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyJj4oKmNlbGwpOworICAg
IGF1dG8qIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyID0ganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyLT5pbXBsKCksIGpzVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggNjVhMzNkYmZiOWNkMjg5ZWE4M2Q2YzI1NGExNDRh
ZDRhZWMwYmRkYy4uMjRjMDgwYmUxZGIwYTc4OTIzZGM5NmM4YTY5YzIwM2Q4OTIwMGI5MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0
ZToKIAogY2xhc3MgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJPd25lciA6IHB1YmxpYyBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CiBwdWJsaWM6Ci0gICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkpTQ2VsbCYsIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQqIGNvbnRleHQpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJik7
CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOwogfTsKIAogaW5saW5lIEpTQzo6V2Vha0hhbmRsZU93bmVyKiB3cmFwcGVy
T3duZXIoRE9NV3JhcHBlcldvcmxkJiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBlNTY4NzJlYzQ3Y2VmNmYzM2E5MGVkNjA2
Nzc4OWJmMDkzNTA0ZDMzLi41NDUxOWQ0NDUwYWIwOWRiNjVhOWYzZjljZDU1OTNiMzVkYTVmODdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0yNDQsMTggKzI0NCwx
OCBAQCBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2
b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFS
QU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZp
c2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3Zv
aWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0g
anNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3ImPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0
RXZlbnRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oaGFuZGxl
LnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdy
YXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBl
ci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEV2
ZW50Q29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0RXZlbnRDb25zdHJ1Y3Rvcik7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aAppbmRleCA3NDcxZTA0NzY4OWViN2M2NGNiYjI1MGM1NGMwZDYwMGUyMzdkNmE1Li4zZjFkYjI2
MTVlZTkwYzAwNzg5NGJkMTRiZDVlNDBlNTQwOWU4Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENv
bnN0cnVjdG9yLmgKQEAgLTcxLDggKzcxLDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVi
bGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2
b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5h
bGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAK
IGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3Js
ZCYsIFRlc3RFdmVudENvbnN0cnVjdG9yKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4
IDgyODZmN2QyOGI2ODJlNjMyNWZhMjQwYWZjMWM5OWY4MzI4MTFiZGIuLjhlMmUxNWE3NjQ1ZGJl
MDA1NWQ1MTkxYThjZTQxODg2NjQ3YjQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcApA
QCAtMzE2LDIwICszMTYsMjAgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPmlt
cGwoKS52aXNpdEpTRXZlbnRMaXN0ZW5lcnModmlzaXRvcik7CiB9CiAKLWJvb2wgSlNUZXN0RXZl
bnRUYXJnZXRPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNl
bGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0RXZlbnRUYXJnZXRP
d25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
PiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvJiBqc1Rl
c3RFdmVudFRhcmdldCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCY+KGNlbGwpOwotICAgIGlm
IChqc1Rlc3RFdmVudFRhcmdldC5pbXBsKCkuaXNGaXJpbmdFdmVudExpc3RlbmVycygpKQorICAg
IGF1dG8qIGpzVGVzdEV2ZW50VGFyZ2V0ID0ganNDYXN0PEpTVGVzdEV2ZW50VGFyZ2V0Kj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOworICAgIGlmIChqc1Rlc3RFdmVudFRhcmdldC0+aW1wbCgp
LmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5V
U0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RF
dmVudFRhcmdldE93bmVyOjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNlbGwsIHZvaWQqIGNvbnRl
eHQpCit2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0T3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpT
Qzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8mIHdyYXBwZXIg
PSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQmPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0RXZl
bnRUYXJnZXQgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4o
Y29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmltcGwoKSwgJndy
YXBwZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0RXZlbnRUYXJnZXQtPmlt
cGwoKSwganNUZXN0RXZlbnRUYXJnZXQpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdS
SVRZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCAyZWRiNjRjYWNiZGFjNzNkMWI4ZjEzYTcx
NGQzNDU0NWQ1NDJiODY3Li5hMjFiN2VmOTJkZTc3MGYxNzQwYjFhOGFmZDM3YTBiYWFkYTg5MTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogCiBj
bGFzcyBKU1Rlc3RFdmVudFRhcmdldE93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVy
IHsKIHB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlND
ZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwotICAgIHZv
aWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7
CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQmLCBUZXN0RXZlbnRUYXJnZXQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA1
NDM1N2FkMmZiZmRlMDU4ZTg5NTM0MDBlMGE4N2QxY2ZkYjgzNGI4Li5kNjBhYjEzMGVjMDk0OGZi
MDFlZjZmOWQ5NDIwN2VjNDBiZGNjYjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTkw
LDE4ICsxOTAsMTggQEAgSlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RFeGNlcHRpb25Pd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAg
IFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmZpbmFsaXplKEpT
Qzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0RXhjZXB0aW9uT3du
ZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250
ZXh0KQogewotICAgIGF1dG8mIHdyYXBwZXIgPSBqc0Nhc3Q8SlNUZXN0RXhjZXB0aW9uJj4oKmNl
bGwpOworICAgIGF1dG8qIGpzVGVzdEV4Y2VwdGlvbiA9IGpzQ2FzdDxKU1Rlc3RFeGNlcHRpb24q
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQs
ICZ3cmFwcGVyLmltcGwoKSwgJndyYXBwZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNUZXN0RXhjZXB0aW9uLT5pbXBsKCksIGpzVGVzdEV4Y2VwdGlvbik7CiB9CiAKICNpZiBFTkFC
TEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKaW5kZXggNjcyZjMzODkwZWMx
NTlmOTZlMjg5MWM1Mzc0NWI0Mjk5NmI3MmExNi4uMzhiNGY2YTRmYjg5NGYyNTUzOTA2YTY2NGNm
MmZmNWFkYjI4ZmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaApAQCAtNzMsOCArNzMsOCBAQCBwcm90
ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdEV4Y2VwdGlvbk93bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCk7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25l
cihET01XcmFwcGVyV29ybGQmLCBUZXN0RXhjZXB0aW9uKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCBiN2UxNzM5NzQ3Y2VlMWNkOTNiNzdhMmQ1OTNjZGEw
NGEyNThmNjFmLi40ZWJkNTQ1ODJkZmNmMDU1ZDg5NjE2Yzc4OWFlYTgwNDk1YWUwNzA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC0xNTIsMTggKzE1Miwx
OCBAQCBKU1ZhbHVlIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rv
cjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotYm9vbCBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBj
ZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBh
dXRvJiBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGUmPihjZWxsKTsKLSAgICBUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSogcm9vdCA9ICZq
c1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmltcGwoKTsKKyAgICBhdXRvKiBqc1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqPihoYW5kbGUu
c2xvdCgpLT5hc0NlbGwoKSk7CisgICAgVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIHJvb3QgPSAm
anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS0+aW1wbCgpOwogICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdChyb290KTsKIH0KIAotdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3Zv
aWQgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVy
ID0ganNDYXN0PEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUmPigqY2VsbCk7CisgICAgYXV0byog
anNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSA9IGpzQ2FzdDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUtPmltcGwoKSwganNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZSk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaAppbmRleCBmMmIwMzNlOTNmZTI4NzczNThjMDQxYWI5
YTgwNjkxNWZmY2JhMDllLi5mZTM4MGEwYTBjMzNlMDRlNzJmZmFlMjA3NWM5Y2ZlOGFjZWYyMGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKQEAgLTY5LDggKzY5LDgg
QEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlT3duZXIgOiBw
dWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggMjJhZmJhNjYwMGUxNGRhNWJjODY1MWRj
OWNlNGQzN2M4ODYyNjYxMC4uZmVkMjYzNDE0YWJiODU1MzY1MzdlZTYwOGQ2N2ZkNzM0YmIzNzI5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTkzOSwyMCArOTM5LDIwIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3JGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvCiAKICNlbmRpZgogCi1ib29sIEpTVGVzdEludGVyZmFjZU93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpTQ2VsbCYgY2VsbCwgdm9pZCosIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU1Rlc3RJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvJiBqc1Rlc3RJbnRlcmZhY2UgPSBqc0Nh
c3Q8SlNUZXN0SW50ZXJmYWNlJj4oY2VsbCk7Ci0gICAgaWYgKGpzVGVzdEludGVyZmFjZS5pbXBs
KCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCisgICAgYXV0byoganNUZXN0SW50ZXJmYWNlID0ganND
YXN0PEpTVGVzdEludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKKyAgICBpZiAo
anNUZXN0SW50ZXJmYWNlLT5pbXBsKCkuaGFzUGVuZGluZ0FjdGl2aXR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYg
Y2VsbCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAg
IGF1dG8mIHdyYXBwZXIgPSBqc0Nhc3Q8SlNUZXN0SW50ZXJmYWNlJj4oKmNlbGwpOworICAgIGF1
dG8qIGpzVGVzdEludGVyZmFjZSA9IGpzQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihoYW5kbGUuc2xv
dCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBl
cldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmlt
cGwoKSwgJndyYXBwZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0SW50ZXJm
YWNlLT5pbXBsKCksIGpzVGVzdEludGVyZmFjZSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGVzdEludGVyZmFjZSogaW1wbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAppbmRleCAxMGNmOGZiMjQw
NjEyMWQwYTcwYmVhMmNiNTVhYWIzODhlYWU0YzIwLi5mMjBlZWYwOTlhYzkxOTE5OTQ5NjBjOGRj
NWExMWY5YjU4ZmZmODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBAIC05OSw4ICs5OSw4IEBAIHBy
b3RlY3RlZDoKIAogY2xhc3MgSlNUZXN0SW50ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lk
KiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93
bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RJbnRlcmZhY2UqKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDI5N2EwYTAwNDM3YTBmODU5MjJmZjgw
YjRkMTZkOTRhNjZiMWQzZmUuLjIyN2YyN2ZkZWIzOGNhZTEyYzhhYzNhYTJiYWVhNzM3YTA2Yzcx
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAg
LTE3NywxOCArMTc3LDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotYm9vbCBKU1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxs
JiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2Vs
bCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lck93bmVy
OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4
dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXImPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA9
IGpzQ2FzdDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oaGFuZGxlLnNsb3QoKS0+YXND
ZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+
KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3
cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXItPmltcGwoKSwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik7CiB9CiAKICNp
ZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuaAppbmRleCBhZmVmNWQxMWE3YjQ4YTRmYjUwNDQ0Zjk3YWU3MDlmM2UyMjRk
YTdlLi5lMTY5MGI0M2M4MWJiODJhYTMyMmU2MzJkOGY5YWNhZDMyNzNiNThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTY5LDggKzY5LDggQEAgcHJv
dGVjdGVkOgogCiBjbGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNp
dG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90
VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25l
ciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA1YmJhNDJlZjkx
Yjc4ZjQwNjM2Njk3MzRiNDIwMGJjNzIzYmIxNDVjLi4xOGY3NmYwNmI3NDc5OTA2OGY1ZjMyZGRl
YzMzNWQzZGIyM2NkZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0yMzAsMjAgKzIzMCwyMCBAQCBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5h
bWVkQ29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcj4o
dm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1ib29s
IEpTVGVzdE5hbWVkQ29uc3RydWN0b3JPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewotICAgIGF1dG8mIGpzVGVzdE5hbWVkQ29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvciY+KGNlbGwpOwotICAgIGlmIChqc1Rlc3ROYW1lZENvbnN0cnVjdG9yLmlt
cGwoKS5oYXNQZW5kaW5nQWN0aXZpdHkoKSkKKyAgICBhdXRvKiBqc1Rlc3ROYW1lZENvbnN0cnVj
dG9yID0ganNDYXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3IqPihoYW5kbGUuc2xvdCgpLT5hc0Nl
bGwoKSk7CisgICAgaWYgKGpzVGVzdE5hbWVkQ29uc3RydWN0b3ItPmltcGwoKS5oYXNQZW5kaW5n
QWN0aXZpdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0
b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
T3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3ZvaWQg
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0ganND
YXN0PEpTVGVzdE5hbWVkQ29uc3RydWN0b3ImPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0TmFt
ZWRDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKj4oaGFuZGxlLnNs
b3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBw
ZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBlci5p
bXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdE5hbWVk
Q29uc3RydWN0b3ItPmltcGwoKSwganNUZXN0TmFtZWRDb25zdHJ1Y3Rvcik7CiB9CiAKICNpZiBF
TkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaApp
bmRleCBiZTgxNmMyNDFkNzFkZjNiN2MxZDZhZmNiZGU5OTllYWE3Y2NhOTEwLi5lM2E1MzY2MTg4
NjVmYzM1ZmZlNjJjNTA1ZjFkMjdjMzBiNWUzOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmgKQEAgLTcwLDggKzcwLDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGlj
OgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lk
KiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6
ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwg
dm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlu
bGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYs
IFRlc3ROYW1lZENvbnN0cnVjdG9yKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cAppbmRleCAxMDhhZWFkYmI2OTU5YTMzOWY0OWZkZTVmOWNhYzdiOTk2MjczZDFmLi5kNTc1M2Yz
ODhlYmM3MmY2MmNiNGRlYjcyNGIzMWRiZDlmMjkwY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRl
dGVybWluaXN0aWMuY3BwCkBAIC00ODMsMTggKzQ4MywxOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGVGdW5jdGlvbk5vbmRldGVy
bWluaQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotYm9vbCBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTVGVzdE5v
bmRldGVybWluaXN0aWNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9p
ZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY093bmVyOjpmaW5hbGl6ZShK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBh
dXRvJiB3cmFwcGVyID0ganNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMmPigqY2VsbCk7Cisg
ICAgYXV0byoganNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyA9IGpzQ2FzdDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0
YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVy
KHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3
b3JsZCwgJmpzVGVzdE5vbmRldGVybWluaXN0aWMtPmltcGwoKSwganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpYy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
bmRldGVybWluaXN0aWMuaAppbmRleCA2ODE2YTVhMTNjMTc3NGY4ODExZmU1YzhmMjVkNDBhZjU1
Y2NhODUxLi5jNWQ2NjMzMDBjYjI0MDkzZTM1MTM1ZDVkNWYxNjViN2MyNTRkMGE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgog
CiBjbGFzcyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFu
ZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBj
b250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KERPTVdyYXBwZXJXb3JsZCYsIFRlc3ROb25kZXRlcm1pbmlzdGljKikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXgg
MmUzNTVhZjk3N2I0NDkzZmVjNWNhZDc3NWQwNjNhYWI0MGMxZjQyYS4uZTVhNWQ5ODA1NzhmYmFh
YzBlMjgwM2ZlZDc4YzAxNWIxZjQ0ZmNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ5MzAsMTggKzQ5MzAs
MTggQEAgdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWNoZWRB
dHRyaWJ1dGUyKTsKIH0KIAotYm9vbCBKU1Rlc3RPYmpPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K2Jvb2wgSlNUZXN0T2JqT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwogICAg
IFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSlNU
ZXN0T2JqT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkK
K3ZvaWQgSlNUZXN0T2JqT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8mIHdyYXBwZXIgPSBqc0Nhc3Q8SlNU
ZXN0T2JqJj4oKmNlbGwpOworICAgIGF1dG8qIGpzVGVzdE9iaiA9IGpzQ2FzdDxKU1Rlc3RPYmoq
PihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nh
c3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0gICAgdW5jYWNoZVdyYXBwZXIod29ybGQs
ICZ3cmFwcGVyLmltcGwoKSwgJndyYXBwZXIpOworICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAm
anNUZXN0T2JqLT5pbXBsKCksIGpzVGVzdE9iaik7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19J
TlRFR1JJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKaW5kZXggODhjYWI4NjkwMmJiY2ViNjg2MDU3MWJlMGRkYzA0NTY0NDEz
MWU5YS4uMDg5MmE4MGU4ZGI5YWEyNjkwMTExOTNiMDNjYmVkOTNhZWU1ZWEzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApA
QCAtODUsOCArODUsOCBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdE9iak93bmVyIDogcHVi
bGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90Vmlz
aXRvciYpIG92ZXJyaWRlOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCog
Y29udGV4dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xv
dFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCogY29udGV4dCk7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3du
ZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0T2JqKikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCAyN2U1YjM4NjZlZThkZThi
MTNiNjRhYzNiYjE5MTE0NDA0MzcwZjljLi5mNzE3OWM1M2MxZDE0ZTJiMmU5ZTBhODYwYjFkZjlk
ZjRkZDIwOWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC0yNDYsMTggKzI0NiwxOCBAQCBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAotYm9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCitib29sIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVG
cm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5V
U0VEX1BBUkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmZp
bmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0
PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMmPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyA9IGpzQ2FzdDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRp
Y19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdv
cmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3Js
ZCwgJmpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMtPmltcGwoKSwganNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAppbmRleCBmZmFmMWZiNGY4Yjdh
OTE4OTQ5ZmQwZTg3NTkyOWM0ZjQ3ZTU5YWNhLi4xMWUyOTE5OTg2MmUxMjVhMTRmYWU1MWY3NDA1
ZjY0OTY5NDVkYjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGlj
OgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lk
KiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6
ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwg
dm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlu
bGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYs
IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zLmNwcAppbmRleCA5MmU4OGU4MjFmNWQzMDVmODg5ODI5Y2MyY2ZhNWUzZTU2OGIwZmI4Li44
YjZmZDgxMDIwOWVlOGI4Mzg2MWI3M2E4NTM1OWRmOTBkNzhjYTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC0yMjEsMTggKzIyMSwxOCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbShFeAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotYm9v
bCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpT
VGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKIHsKLSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2Vs
bCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyOjpmaW5h
bGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsK
LSAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMmPigqY2Vs
bCk7CisgICAgYXV0byoganNUZXN0T3ZlcnJpZGVCdWlsdGlucyA9IGpzQ2FzdDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxk
ID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVX
cmFwcGVyKHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3Jh
cHBlcih3b3JsZCwgJmpzVGVzdE92ZXJyaWRlQnVpbHRpbnMtPmltcGwoKSwganNUZXN0T3ZlcnJp
ZGVCdWlsdGlucyk7CiB9CiAKICNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJVFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJp
ZGVCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCA5MjA2ZmVjMmI3MWZmYjA4NjQ3MjhlYmExZDRk
OGZkNzlmNGFmNmVkLi5iYmEzNzUzODFmZDIzZTM1YmMyNGIzM2NlNzdmNjkxOGQyYzE5Y2E3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKQEAgLTc1LDggKzc1LDggQEAgcHJpdmF0
ZToKIAogY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vh
a0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJy
aWRlOwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9p
ZCogY29udGV4dCk7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJP
d25lcihET01XcmFwcGVyV29ybGQmLCBUZXN0T3ZlcnJpZGVCdWlsdGlucyopCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4
IGU1NWUwNDczNjM0ODAxMDAxNWI4ZDllMTBhZThkNDU2NDFmOWZkMjYuLjY2NGE1Y2EzNmM5Njk2
ZmY1YWIzNGVmYjJkNWNhNjEwNmMxNGJjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMTEsMTggKzMxMSwxOCBA
QCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2NhY2hlZFJlYWRvbmx5VmFsdWUpOwogfQogCi1ib29sIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkpT
Q2VsbCYgY2VsbCwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorYm9vbCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKLSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhh
bmRsZSk7CiAgICAgVU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxp
emUoSlNDOjpKU0NlbGwqJiBjZWxsLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgYXV0byYgd3JhcHBlciA9IGpz
Q2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UmPigqY2VsbCk7CisgICAg
YXV0byoganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID0ganNDYXN0PEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKICAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250
ZXh0KTsKLSAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJndyYXBwZXIuaW1wbCgpLCAmd3JhcHBl
cik7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UtPmltcGwoKSwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
KTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCBhNTFhNjA5NTNj
MzQwNWEyMmMyM2E5MTI0Y2E5OGJhZjQ1MjRhMjYyLi4xNzM1ZGE5YWE2NjkwNTliNzk0M2MyODk1
ZTQ3YzUxYWRjMmIyZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC03NSw4ICs3NSw4IEBAIHByb3RlY3RlZDoKIAogY2xh
c3MgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlT3duZXIgOiBwdWJsaWMgSlND
OjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRv
ciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3Jh
cHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggY2VlZGNlNDE0NzBhM2JiOTI4YzJmNDkx
NWZkNzMxNGQ4Y2I4MWIyNC4uMjNmMzVlMTljMDNkMWI4ZGJhNGMzYjczZjgwMzhlZjViZTcwNmFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC03MjAsMTggKzcyMCwxOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLWJvb2wgSlNUZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpKU0NlbGwmIGNlbGwsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK2Jvb2wg
SlNUZXN0VHlwZWRlZnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5k
bGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
LSAgICBVTlVTRURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU1Rl
c3RUeXBlZGVmc093bmVyOjpmaW5hbGl6ZShKU0M6OkpTQ2VsbComIGNlbGwsIHZvaWQqIGNvbnRl
eHQpCit2b2lkIEpTVGVzdFR5cGVkZWZzT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKiBjb250ZXh0KQogewotICAgIGF1dG8mIHdyYXBwZXIgPSBq
c0Nhc3Q8SlNUZXN0VHlwZWRlZnMmPigqY2VsbCk7CisgICAgYXV0byoganNUZXN0VHlwZWRlZnMg
PSBqc0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAgICAg
YXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7Ci0g
ICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZ3cmFwcGVyLmltcGwoKSwgJndyYXBwZXIpOworICAg
IHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmanNUZXN0VHlwZWRlZnMtPmltcGwoKSwganNUZXN0VHlw
ZWRlZnMpOwogfQogCiAjaWYgRU5BQkxFKEJJTkRJTkdfSU5URUdSSVRZKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMu
aAppbmRleCBkZDE0OWE3NTA5MjVlNWYxMzM5ODUzMDg5Nzg0MzA0MDQyNzVlOGI1Li5iM2E1YWQ2
NzY2YjA1ODVhYjIxNjNmNTFiYWUyN2I0ZDU5MjY5Y2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuaApAQCAt
NzIsOCArNzIsOCBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEpTVGVzdFR5cGVkZWZzT3duZXIgOiBw
dWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RW
aXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lk
KiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpT
bG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6OldlYWtIYW5kbGVP
d25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIFRlc3RUeXBlZGVmcyopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmli
dXRlLmNwcAppbmRleCA1Zjc1ZWVmODgzYzQwMDlhOWNiZjM1ZGNjMDQzYWExMDVhNDc2MzZjLi4x
ZTcyNDNkMDNkNTY2MmMzZDFiMzE2MTQ4Njk2NTc5ZGM4ZDc2N2ZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAK
QEAgLTE3MywxOCArMTczLDE4IEBAIEpTVmFsdWUgSlNhdHRyaWJ1dGU6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1ib29sIEpTYXR0cmlidXRlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCitib29sIEpTYXR0cmlidXRlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGNlbGwpOworICAgIFVOVVNFRF9Q
QVJBTShoYW5kbGUpOwogICAgIFVOVVNFRF9QQVJBTSh2aXNpdG9yKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgSlNhdHRyaWJ1dGVPd25lcjo6ZmluYWxpemUoSlNDOjpKU0NlbGwqJiBj
ZWxsLCB2b2lkKiBjb250ZXh0KQordm9pZCBKU2F0dHJpYnV0ZU93bmVyOjpmaW5hbGl6ZShKU0M6
OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRv
JiB3cmFwcGVyID0ganNDYXN0PEpTYXR0cmlidXRlJj4oKmNlbGwpOworICAgIGF1dG8qIGpzYXR0
cmlidXRlID0ganNDYXN0PEpTYXR0cmlidXRlKj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwog
ICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERPTVdyYXBwZXJXb3JsZCo+KGNvbnRleHQp
OwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3JhcHBlci5pbXBsKCksICZ3cmFwcGVyKTsK
KyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzYXR0cmlidXRlLT5pbXBsKCksIGpzYXR0cmli
dXRlKTsKIH0KIAogI2lmIEVOQUJMRShCSU5ESU5HX0lOVEVHUklUWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKaW5kZXgg
MzBkMmZjYjQ0NTBhYjEyNTllYjA5N2E3OWVjZTJjZTllMjg1Y2JiNC4uNTc4ZTA1ZmVlOWQ2ODE3
MzY2MDhhZjliZDU2NWVjODFkZTU5ZDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKQEAgLTcwLDggKzcwLDggQEAg
cHJvdGVjdGVkOgogCiBjbGFzcyBKU2F0dHJpYnV0ZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SlNDZWxsJiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRl
OwotICAgIHZvaWQgZmluYWxpemUoSlNDOjpKU0NlbGwqJiwgdm9pZCogY29udGV4dCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFu
ZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCog
Y29udGV4dCk7CiB9OwogCiBpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25l
cihET01XcmFwcGVyV29ybGQmLCBhdHRyaWJ1dGUqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IGQwM2FmNDQw
ZDg0ODA0MTYyYzEwMWQ5ZTNiM2FlNWU0OTYyOGMwZGYuLjQyMzFhYzY4ZDJlOTkzYzMwYWVjYWRl
Y2EzMWQ4ODhjZGI5MDA3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTE1MiwxOCArMTUyLDE4IEBAIEpT
VmFsdWUgSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU3JlYWRvbmx5Q29u
c3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsK
IH0KIAotYm9vbCBKU3JlYWRvbmx5T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SlNDZWxsJiBjZWxsLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCitib29sIEpTcmVh
ZG9ubHlPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBVTlVT
RURfUEFSQU0oY2VsbCk7CisgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHZpc2l0b3IpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBKU3JlYWRvbmx5T3du
ZXI6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwgdm9pZCogY29udGV4dCkKK3ZvaWQgSlNy
ZWFkb25seU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKIHsKLSAgICBhdXRvJiB3cmFwcGVyID0ganNDYXN0PEpTcmVhZG9ubHkm
PigqY2VsbCk7CisgICAgYXV0byoganNyZWFkb25seSA9IGpzQ2FzdDxKU3JlYWRvbmx5Kj4oaGFu
ZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogICAgIGF1dG8mIHdvcmxkID0gKnN0YXRpY19jYXN0PERP
TVdyYXBwZXJXb3JsZCo+KGNvbnRleHQpOwotICAgIHVuY2FjaGVXcmFwcGVyKHdvcmxkLCAmd3Jh
cHBlci5pbXBsKCksICZ3cmFwcGVyKTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzcmVh
ZG9ubHktPmltcGwoKSwganNyZWFkb25seSk7CiB9CiAKIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlD
cmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
cmVhZG9ubHkqIGltcGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTcmVhZG9ubHkuaAppbmRleCBjZTNjZGYwN2ZiYzA1NDU5ZTE1NTAyOTYwNDIz
ZmU0MjdmYzZmMTU4Li4yNDVlYjcxZmJhYzNmODIwMDA3MjczOGM1ODZhNDFjNTFlNDg5NTEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFk
b25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3Jl
YWRvbmx5LmgKQEAgLTY5LDggKzY5LDggQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBKU3JlYWRvbmx5
T3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogcHVibGljOgotICAgIGJvb2wg
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpKU0NlbGwmLCB2b2lkKiBjb250ZXh0LCBK
U0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBmaW5hbGl6ZShKU0M6OkpTQ2Vs
bComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4
dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KTsKIH07CiAKIGlubGluZSBKU0M6Oldl
YWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdyYXBwZXJXb3JsZCYsIHJlYWRvbmx5KikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKaW5kZXggNjJmZWU3ZTM2YzczNjcw
YjM2OGZiZWUyY2M5MTZkMjczZTEzYjJmMi4uYTYxZDFkMzQxZTY0OGQ0NTg4MzhhZTQ1NGE4MWU4
NGY3MmI5ZjI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKQEAgLTE5
Niw5ICsxOTYsOSBAQCB2b2lkIFJvb3RPYmplY3Q6OnJlbW92ZVJ1bnRpbWVPYmplY3QoUnVudGlt
ZU9iamVjdCogb2JqZWN0KQogICAgIHdlYWtSZW1vdmUobV9ydW50aW1lT2JqZWN0cywgb2JqZWN0
LCBvYmplY3QpOwogfQogCi12b2lkIFJvb3RPYmplY3Q6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYg
Y2VsbCwgdm9pZCopCit2b2lkIFJvb3RPYmplY3Q6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4gaGFuZGxlLCB2b2lkKikKIHsKLSAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBq
c0Nhc3Q8UnVudGltZU9iamVjdCo+KGNlbGwpOworICAgIFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9
IHN0YXRpY19jYXN0PFJ1bnRpbWVPYmplY3QqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7CiAK
ICAgICBSZWY8Um9vdE9iamVjdD4gcHJvdGVjdCgqdGhpcyk7CiAgICAgb2JqZWN0LT5pbnZhbGlk
YXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmgKaW5kZXggNTRmYzdmMTg1Y2Fl
MTJkZTdkNDhlNGUwNmZlZjJiNmMxN2NjYjBiYy4uNDEzODVhNmU5ODRmZWViNDdmZjZmNTlhZWI1
MzFkZTBlYzgyYmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
cm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaApAQCAtODIs
NyArODIsNyBAQCBwcml2YXRlOgogICAgIFJvb3RPYmplY3QoY29uc3Qgdm9pZCogbmF0aXZlSGFu
ZGxlLCBKU0dsb2JhbE9iamVjdCopOwogCiAgICAgLy8gV2Vha0hhbmRsZU93bmVyCi0gICAgdm9p
ZCBmaW5hbGl6ZShKU0M6OkpTQ2VsbComLCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29u
dGV4dCkgb3ZlcnJpZGU7CiAKICAgICBib29sIG1faXNWYWxpZDsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05Q
UnVudGltZU9iamVjdE1hcC5jcHAKaW5kZXggODllYzM0NDU2ZWM3MzIwZDkxZWI2NGFiYmRiMzgw
MzMxYTlmN2EwZC4uNDljMWQzYmFjNjM0MjRiNDAxNDg5MTRjYjYzYjQ0OTBlZjU5YmM3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVu
dGltZU9iamVjdE1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05QUnVudGltZU9iamVjdE1hcC5jcHAKQEAgLTMwNSwxMSArMzA1LDExIEBAIHZv
aWQgTlBSdW50aW1lT2JqZWN0TWFwOjphZGRUb0ludmFsaWRhdGlvblF1ZXVlKE5QT2JqZWN0KiBu
cE9iamVjdCkKICAgICBtX25wT2JqZWN0c1RvRmluYWxpemUuYXBwZW5kKG5wT2JqZWN0KTsKIH0K
IAotdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmZpbmFsaXplKEpTQzo6SlNDZWxsKiYgY2VsbCwg
dm9pZCogY29udGV4dCkKK3ZvaWQgTlBSdW50aW1lT2JqZWN0TWFwOjpmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBKU05QT2Jq
ZWN0JiBvYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCY+KCpjZWxsKTsKLSAgICB3ZWFrUmVtb3Zl
KG1fanNOUE9iamVjdHMsIHN0YXRpY19jYXN0PE5QT2JqZWN0Kj4oY29udGV4dCksICZvYmplY3Qp
OwotICAgIGFkZFRvSW52YWxpZGF0aW9uUXVldWUob2JqZWN0LmxlYWtOUE9iamVjdCgpKTsKKyAg
ICBKU05QT2JqZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNOUE9iamVjdCo+KGhhbmRsZS5nZXQoKS5h
c0NlbGwoKSk7CisgICAgd2Vha1JlbW92ZShtX2pzTlBPYmplY3RzLCBzdGF0aWNfY2FzdDxOUE9i
amVjdCo+KGNvbnRleHQpLCBvYmplY3QpOworICAgIGFkZFRvSW52YWxpZGF0aW9uUXVldWUob2Jq
ZWN0LT5sZWFrTlBPYmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGlt
ZU9iamVjdE1hcC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05QUnVudGltZU9iamVjdE1hcC5oCmluZGV4IDQ4YWE0ZjE3Y2VjNGRiODQ5ZGYzYTI3YWNmNzY5
ZjM4M2I4OTRhNmMuLmZhZGU0MWRmNThkNDc5ODFkMzE0YzlhOGY0NGFkMzFhNzBmYWVlZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1
bnRpbWVPYmplY3RNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmgKQEAgLTUyLDcgKzUyLDcgQEAgY2xhc3MgTlBK
U09iamVjdDsKIGNsYXNzIFBsdWdpblZpZXc7CiAKIC8vIEEgcGVyIHBsdWctaW4gbWFwIG9mIE5Q
T2JqZWN0cyB0aGF0IHdyYXAgSmF2YVNjcmlwdCBvYmplY3RzLgotY2xhc3MgTlBSdW50aW1lT2Jq
ZWN0TWFwIGZpbmFsIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitjbGFzcyBOUFJ1
bnRpbWVPYmplY3RNYXAgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBOUFJ1bnRpbWVPYmplY3RNYXAoUGx1Z2luVmlldyopOwogCkBAIC05MCw4
ICs5MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBXZWFrSGFuZGxlT3duZXIKLSAg
ICB2b2lkIGZpbmFsaXplKEpTQzo6SlNDZWxsKiYsIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOwot
CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZv
aWQqIGNvbnRleHQpOwogICAgIHZvaWQgYWRkVG9JbnZhbGlkYXRpb25RdWV1ZShOUE9iamVjdCop
OwogICAgIHZvaWQgaW52YWxpZGF0ZVF1ZXVlZE9iamVjdHMoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>