<?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>101074</bug_id>
          
          <creation_ts>2012-11-02 11:25:16 -0700</creation_ts>
          <short_desc>[GTK] Use a private struct and placement new syntax in GObject DOM bindings</short_desc>
          <delta_ts>2012-12-09 07:50:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>101072</dependson>
    
    <dependson>103992</dependson>
          <blocked>101077</blocked>
    
    <blocked>101079</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757371</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 11:25:16 -0700</bug_when>
    <thetext>It allows to use RefPtr for the wrapped object and it simplifies the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757385</commentid>
    <comment_count>1</comment_count>
      <attachid>172093</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 11:30:40 -0700</bug_when>
    <thetext>Created attachment 172093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757445</commentid>
    <comment_count>2</comment_count>
      <attachid>172103</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-11-02 12:13:09 -0700</bug_when>
    <thetext>Created attachment 172103
Updated patch to include test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780702</commentid>
    <comment_count>3</comment_count>
      <attachid>172103</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-12-01 02:46:19 -0800</bug_when>
    <thetext>Comment on attachment 172103
Updated patch to include test results

Looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782432</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-04 03:11:41 -0800</bug_when>
    <thetext>Committed r136498: &lt;http://trac.webkit.org/changeset/136498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782479</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 05:26:02 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 103992</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783833</commentid>
    <comment_count>6</comment_count>
      <attachid>177776</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-05 09:25:16 -0800</bug_when>
    <thetext>Created attachment 177776
New patch

Now constructor/finalize are only implemented for classes deriving directly from Object, so the core object is added/removed to the cache only once per object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786722</commentid>
    <comment_count>7</comment_count>
      <attachid>177776</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-12-09 02:20:01 -0800</bug_when>
    <thetext>Comment on attachment 177776
New patch

This looks good. I&apos;d just put a comment somewhere explaining why we do the Object parent class thing, and noting that this works now because the classes we care about happen to be direct subclasses of Object. That way people changing this code in the future will have a chance to get it right ;)

(Also, &apos;constructed&apos; and the signal handling all seem to be garbage code from the old event listener era, we can remove that in a follow-up patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786783</commentid>
    <comment_count>8</comment_count>
      <attachid>177776</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-12-09 07:49:52 -0800</bug_when>
    <thetext>Comment on attachment 177776
New patch

Committed r137072: &lt;http://trac.webkit.org/changeset/137072&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172093</attachid>
            <date>2012-11-02 11:30:40 -0700</date>
            <delta_ts>2012-11-02 12:13:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-dom-refptr.diff</filename>
            <type>text/plain</type>
            <size>8005</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMmUxYjA2Li44MzNmNWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTItMTEtMDIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFNpbXBsaWZ5IEdPYmplY3QgRE9NIGJpbmRpbmdzIGNvZGUgZm9y
IGhhbmRsaW5nIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMTA3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEl0IGFsbG93cyB0byB1c2UgUmVmUHRyIGZvciB0aGUgd3JhcHBlZCBvYmpl
Y3QgYW5kIGl0IHNpbXBsaWZpZXMKKyAgICAgICAgdGhlIGNvZGUuCisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAgICAoR2VuZXJhdGVQ
cm9wZXJ0aWVzKTogCisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChHZW5lcmF0
ZUNGaWxlKToKKyAgICAgICAgKEdlbmVyYXRlRXZlbnRUYXJnZXRJZmFjZSk6CisgICAgICAgIChX
cml0ZURhdGEpOgorCiAyMDEyLTExLTAxICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1pZGRsZSBjbGljayBjbG9zZXMgYW4g
ZWRpdG9yIGFuZCBwYXN0ZXMgc2VsZWN0aW9uIGludG8gY3VycmVudCBlZGl0b3Igb24gTGludXgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtCmluZGV4IDUzZDI2NjYuLmY3MDhhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAt
NjQzLDE5ICs2NDMsMTEgQEAgRU9GCiAgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CiBzdGF0
aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZmluYWxpemUoR09iamVjdCogb2JqZWN0KQog
eworICAgICR7Y2xhc3NOYW1lfVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30o
b2JqZWN0KS0+cHJpdjsKICRjb25kaXRpb25HdWFyZFN0YXJ0Ci0gICAgV2ViS2l0RE9NT2JqZWN0
KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChk
b21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1l
fSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihk
b21PYmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKLQotICAg
ICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KKyAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAkY29uZGl0aW9uR3Vh
cmRFbmQKLQorICAgIHByaXYtPn4ke2NsYXNzTmFtZX1Qcml2YXRlKCk7CiAgICAgR19PQkpFQ1Rf
Q0xBU1MoJHtsb3dlckNhc2VJZmFjZU5hbWV9X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CiB9CiAKQEAgLTY4OSwxMCArNjgxLDIyIEBAIEVPRgogICAgIH0KIAogICAgICRpbXBsQ29u
dGVudCA9IDw8ICJFT0YiOworc3RhdGljIEdPYmplY3QqICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9j
b25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdP
YmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0
KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUygke2xvd2VyQ2FzZUlmYWNlTmFtZX1fcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKKyRjb25kaXRpb25HdWFyZFN0YXJ0CisgICAgJHtjbGFzc05hbWV9UHJp
dmF0ZSogcHJpdiA9IFdFQktJVF9ET01fJHtjbHNDYXBzfShvYmplY3QpLT5wcml2OworICAgIHBy
aXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9Kj4o
V0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CiskY29uZGl0aW9uR3VhcmRF
bmQKKyAgICByZXR1cm4gb2JqZWN0OworfQorCiBzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNl
TmFtZX1fY2xhc3NfaW5pdCgke2NsYXNzTmFtZX1DbGFzcyogcmVxdWVzdENsYXNzKQogewogICAg
IEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNz
KTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gJHtsb3dlckNhc2VJZmFjZU5hbWV9
X2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSAke2xvd2VyQ2FzZUlm
YWNlTmFtZX1fZmluYWxpemU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RD
bGFzcywgc2l6ZW9mKCR7Y2xhc3NOYW1lfVByaXZhdGUpKTsKIEVPRgogICAgIHB1c2goQGNCb2R5
UHJvcGVydGllcywgJGltcGxDb250ZW50KTsKIApAQCAtNzE2LDggKzcyMCwxMSBAQCBFT0YKICAg
ICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKIH0KIAotc3RhdGljIHZvaWQgJHtsb3dlckNhc2VJ
ZmFjZU5hbWV9X2luaXQoJHtjbGFzc05hbWV9KiByZXF1ZXN0KQorc3RhdGljIHZvaWQgJHtsb3dl
ckNhc2VJZmFjZU5hbWV9X2luaXQoJHtjbGFzc05hbWV9KiBzZWxmKQogeworICAgICR7Y2xhc3NO
YW1lfVByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2VsZiwgV0VC
S0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30sICR7Y2xhc3NOYW1lfVByaXZhdGUpOworICAgIHNlbGYt
PnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgJHtjbGFzc05hbWV9UHJpdmF0ZSgpOwogfQog
CiBFT0YKQEAgLTc2MCw4ICs3NjcsMTIgQEAgRU9GCiAjZGVmaW5lIFdFQktJVF9ET01fSVNfJHtj
bHNDYXBzfV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSkpCiAjZGVmaW5lIFdFQktJVF9ET01fJHtjbHNDYXBz
fV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJL
SVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFzc05hbWV9Q2xhc3MpKQogCit0eXBlZGVmIHN0
cnVjdCBfJHtjbGFzc05hbWV9UHJpdmF0ZSAke2NsYXNzTmFtZX1Qcml2YXRlOworCiBzdHJ1Y3Qg
XyR7Y2xhc3NOYW1lfSB7CiAgICAgJHtwYXJlbnRDbGFzc05hbWV9IHBhcmVudF9pbnN0YW5jZTsK
KworICAgICR7Y2xhc3NOYW1lfVByaXZhdGUgKnByaXY7CiB9OwogCiBzdHJ1Y3QgXyR7Y2xhc3NO
YW1lfUNsYXNzIHsKQEAgLTEyNDYsNiArMTI1NywxMyBAQCBzdWIgR2VuZXJhdGVDRmlsZSB7CiAg
ICAgbXkgJGNsc0NhcHMgPSB1YyhGaXhVcERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRpbnRl
cmZhY2VOYW1lKSkpOwogICAgIG15ICRsb3dlckNhc2VJZmFjZU5hbWUgPSAid2Via2l0X2RvbV8i
IC4gRml4VXBEZWNhbWVsaXplZE5hbWUoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOwogCisg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGRhdGFOb2RlKTsKKyAgICBwdXNoKEBjU3RydWN0UHJpdiwgInN0cnVjdCBf
JHtjbGFzc05hbWV9UHJpdmF0ZSB7XG4iKTsKKyAgICBwdXNoKEBjU3RydWN0UHJpdiwgIiNpZiAk
e2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIHB1c2go
QGNTdHJ1Y3RQcml2LCAiICAgIFJlZlB0cjxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9PiBjb3Jl
T2JqZWN0O1xuIik7CisgICAgcHVzaChAY1N0cnVjdFByaXYsICIjZW5kaWYgLy8gJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICBwdXNoKEBjU3RydWN0
UHJpdiwgIn07XG5cbiIpOworCiAgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CiAke2RlZmlu
ZVR5cGVNYWNyb30oJHtjbGFzc05hbWV9LCAke2xvd2VyQ2FzZUlmYWNlTmFtZX0sICR7cGFyZW50
R09ialR5cGV9JHtkZWZpbmVUeXBlSW50ZXJmYWNlSW1wbGVtZW50YXRpb259CiAKQEAgLTEyNTYs
MTEgKzEyNzQsNyBAQCBFT0YKIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmUoJHtjbGFz
c05hbWV9KiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDAp
OwotCi0gICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0
KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7
Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29y
ZU9iamVjdC5nZXQoKTsKIH0KIAogRU9GCkBAIC0xMjczLDExICsxMjg3LDYgQEAgRU9GCiAke2Ns
YXNzTmFtZX0qIHdyYXAke2ludGVyZmFjZU5hbWV9KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7
Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBv
aW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMt
YWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3Ig
dGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgY29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1
cm4gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fJHtj
bHNDYXBzfSwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC0xMzA4
LDYgKzEzMTcsNyBAQCBzdWIgR2VuZXJhdGVFdmVudFRhcmdldElmYWNlIHsKIAogICAgIG15ICRp
bnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOwogICAgIG15ICRkZWNhbWVsaXplID0gRml4
VXBEZWNhbWVsaXplZE5hbWUoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkpOworICAgIG15ICRj
bHNDYXBzID0gdWMoJGRlY2FtZWxpemUpOwogCiAgICAgJGltcGxJbmNsdWRlc3siR09iamVjdEV2
ZW50TGlzdGVuZXIuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJXZWJLaXRET01FdmVudFRh
cmdldC5oIn0gPSAxOwpAQCAtMTMxNiwxMSArMTMyNiw4IEBAIHN1YiBHZW5lcmF0ZUV2ZW50VGFy
Z2V0SWZhY2UgewogICAgIG15ICRpbXBsID0gPDwgIkVPRiI7CiBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tXyR7ZGVjYW1lbGl6ZX1fZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRh
cmdldCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKIHsKLSAgICBXZWJD
b3JlOjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBXZWJDb3Jl
Ojoke2ludGVyZmFjZU5hbWV9KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtp
bnRlcmZhY2VOYW1lfSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOwot
CiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29yZVRhcmdldC0+ZGlz
cGF0Y2hFdmVudChjb3JlRXZlbnQsIGVjKTsKKyAgICBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30odGFy
Z2V0KS0+cHJpdi0+Y29yZU9iamVjdC0+ZGlzcGF0Y2hFdmVudChXZWJLaXQ6OmNvcmUoZXZlbnQp
LCBlYyk7CiAgICAgaWYgKGVjKSB7CiAgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBkZXNjcmlwdGlvbihlYyk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJy
b3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZGVzY3JpcHRpb24uY29kZSwg
ZGVzY3JpcHRpb24ubmFtZSk7CkBAIC0xMzI5LDEzICsxMzM2LDEzIEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fJHtkZWNhbWVsaXplfV9kaXNwYXRjaF9ldmVudChXZWJLaXRET01FdmVudFRhcmdl
dCogdGFyZ2V0CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tXyR7ZGVjYW1lbGl6ZX1fYWRk
X2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIq
IGV2ZW50TmFtZSwgR0NhbGxiYWNrIGhhbmRsZXIsIGdib29sZWFuIGJ1YmJsZSwgZ3BvaW50ZXIg
dXNlckRhdGEpCiB7Ci0gICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZVRhcmdldCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVD
VCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBj
b3JlVGFyZ2V0ID0gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KHRhcmdldCktPnByaXYtPmNvcmVPYmpl
Y3QuZ2V0KCk7CiAgICAgcmV0dXJuIFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjphZGRF
dmVudExpc3RlbmVyKEdfT0JKRUNUKHRhcmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFu
ZGxlciwgYnViYmxlLCB1c2VyRGF0YSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9t
XyR7ZGVjYW1lbGl6ZX1fcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0
KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0NhbGxiYWNrIGhhbmRsZXIsIGdib29s
ZWFuIGJ1YmJsZSkKIHsKLSAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3JlVGFyZ2V0
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KFdFQktJVF9ET01fT0JK
RUNUKHRhcmdldCktPmNvcmVPYmplY3QpOworICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IGNvcmVUYXJnZXQgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30odGFyZ2V0KS0+cHJpdi0+Y29yZU9i
amVjdC5nZXQoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1l
LCBoYW5kbGVyLCBidWJibGUpOwogfQogCkBAIC0xNDkxLDYgKzE0OTgsNyBAQCBFT0YKICAgICBw
cmludCBJTVBMICIjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cbiI7CiAgICAgcHJpbnQgSU1QTCAi
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD5cbiI7CiAgICAgcHJpbnQgSU1QTCAiI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD5cblxuIjsKKyAgICBwcmludCBJTVBMIEBjU3RydWN0UHJpdjsKICAgICBwcmlu
dCBJTVBMICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cblxuIiBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAKICAgICBwcmludCBJTVBMICJuYW1lc3BhY2UgV2ViS2l0IHtcblxuIjsKQEAgLTE1MTIs
NiArMTUyMCw3IEBAIEVPRgogICAgIEBjQm9keSA9ICgpOwogICAgIEBjQm9keVByaXYgPSAoKTsK
ICAgICBAY0JvZHlQcm9wZXJ0aWVzID0gKCk7CisgICAgQGNTdHJ1Y3RQcml2ID0gKCk7CiB9CiAK
IHN1YiBHZW5lcmF0ZUludGVyZmFjZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172103</attachid>
            <date>2012-11-02 12:13:09 -0700</date>
            <delta_ts>2012-12-05 09:25:16 -0800</delta_ts>
            <desc>Updated patch to include test results</desc>
            <filename>wk-dom-refptr2.diff</filename>
            <type>text/plain</type>
            <size>82485</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMmUxYjA2Li4wMDRhN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU2
IEBACisyMDEyLTExLTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXSBVc2UgYSBwcml2YXRlIHN0cnVjdCBhbmQgcGxhY2VtZW50IG5l
dyBzeW50YXggaW4gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IGFsbG93cyB0byB1c2UgUmVmUHRyIGZvciB0aGUg
d3JhcHBlZCBvYmplY3QgYW5kIGl0IHNpbXBsaWZpZXMKKyAgICAgICAgdGhlIGNvZGUuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorICAgICAg
ICAoR2VuZXJhdGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAg
ICAgKEdlbmVyYXRlQ0ZpbGUpOgorICAgICAgICAoR2VuZXJhdGVFdmVudFRhcmdldElmYWNlKToK
KyAgICAgICAgKFdyaXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKF9XZWJLaXRET01GbG9h
dDY0QXJyYXlQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJL
aXQ6OndyYXBGbG9hdDY0QXJyYXkpOgorICAgICAgICAod2Via2l0X2RvbV9mbG9hdDY0YXJyYXlf
ZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfY29uc3RydWN0b3Ip
OgorICAgICAgICAod2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfY2xhc3NfaW5pdCk6CisgICAgICAg
ICh3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuaDoKKyAgICAgICAgKF9XZWJL
aXRET01GbG9hdDY0QXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoX1dlYktpdERP
TVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6Cisg
ICAgICAgIChXZWJLaXQ6OndyYXBUZXN0QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuaDoKKyAgICAg
ICAgKF9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAo
X1dlYktpdERPTVRlc3RDYWxsYmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToK
KyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDYWxsYmFjayk6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2NhbGxi
YWNrX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jbGFz
c19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19pbml0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2su
aDoKKyAgICAgICAgKF9XZWJLaXRET01UZXN0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6
CisgICAgICAgIChfV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2Zp
bmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2Nv
bnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVy
X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0
ZXJfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmg6CisgICAgICAgIChfV2ViS2l0RE9NVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChfV2ViS2l0RE9NVGVz
dEV2ZW50Q29uc3RydWN0b3JQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAg
ICAgIChXZWJLaXQ6OndyYXBUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoX1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoX1dlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGUpOgorICAgICAgICAoV2ViS2l0Ojpj
b3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RFdmVudFRhcmdldCk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2Rpc3BhdGNoX2V2ZW50KToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfYWRkX2V2ZW50X2xpc3RlbmVyKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZmluYWxpemUpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9jb25zdHJ1Y3Rvcik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X2V2ZW50X3RhcmdldF9pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKF9XZWJLaXRE
T01UZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3RF
eGNlcHRpb25Qcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJL
aXQ6OndyYXBUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9leGNlcHRp
b25fZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1
Y3Rvcik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9pbml0KToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmg6CisgICAg
ICAgIChfV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChfV2Vi
S2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAg
ICAgICAgKFdlYktpdDo6d3JhcFRlc3RJbnRlcmZhY2UpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJm
YWNlX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xh
c3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2luaXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZh
Y2UuaDoKKyAgICAgICAgKF9XZWJLaXRET01UZXN0SW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lci5jcHA6CisgICAgICAgIChfV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQ
cml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OndyYXBU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfbWVk
aWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9jb25zdHJ1Y3Rvcik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9jbGFzc19pbml0KToKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2luaXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChfV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKF9XZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3RvclByaXZhdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAg
KFdlYktpdDo6d3JhcFRlc3ROYW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfbmFtZWRfY29uc3RydWN0b3JfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmg6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRE
T01UZXN0Tm9kZVByaXZhdGUpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdl
YktpdDo6d3JhcFRlc3ROb2RlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ub2RlX2Rpc3Bh
dGNoX2V2ZW50KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ub2RlX2FkZF9ldmVudF9saXN0
ZW5lcik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9yZW1vdmVfZXZlbnRfbGlzdGVu
ZXIpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X25vZGVfZmluYWxpemUpOgorICAgICAgICAo
d2Via2l0X2RvbV90ZXN0X25vZGVfY29uc3RydWN0b3IpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X25vZGVfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9pbml0
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
Tm9kZS5oOgorICAgICAgICAoX1dlYktpdERPTVRlc3ROb2RlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKF9X
ZWJLaXRET01UZXN0T2JqUHJpdmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAg
ICAoV2ViS2l0Ojp3cmFwVGVzdE9iaik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Zp
bmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY29uc3RydWN0b3IpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE9iai5oOgorICAgICAgICAoX1dlYktpdERPTVRlc3RPYmopOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6Y29y
ZSk6CisgICAgICAgIChXZWJLaXQ6OndyYXBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9p
bnRlcmZhY2VfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRf
c2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9jb25zdHJ1Y3Rvcik6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2NsYXNzX2luaXQpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9p
bml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChfV2ViS2l0RE9N
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk6CisKIDIwMTItMTEtMDEgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTWlkZGxlIGNsaWNrIGNsb3NlcyBhbiBlZGl0b3IgYW5kIHBhc3RlcyBzZWxlY3Rpb24gaW50
byBjdXJyZW50IGVkaXRvciBvbiBMaW51eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KaW5kZXggNTNkMjY2Ni4uZjcw
OGEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yR09iamVjdC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC02NDMsMTkgKzY0MywxMSBAQCBFT0YKICAgICAkaW1w
bENvbnRlbnQgPSA8PCAiRU9GIjsKIHN0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgJHtjbGFzc05hbWV9UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fJHtjbHNDYXBzfShvYmplY3QpLT5wcml2OwogJGNvbmRpdGlvbkd1YXJk
U3RhcnQKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNU
KG9iamVjdCk7Ci0gICAgCi0gICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAg
ICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7Ci0KLSAgICAg
ICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBj
b3JlT2JqZWN0LT5kZXJlZigpOwotCi0gICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7
Ci0gICAgfQorICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpKTsKICRjb25kaXRpb25HdWFyZEVuZAotCisgICAgcHJpdi0+fiR7Y2xhc3NOYW1l
fVByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUygke2xvd2VyQ2FzZUlmYWNlTmFtZX1fcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtNjg5LDEwICs2ODEsMjIgQEAg
RU9GCiAgICAgfQogCiAgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CitzdGF0aWMgR09iamVj
dCogJHtsb3dlckNhc2VJZmFjZU5hbWV9X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNv
bnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQ
cm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKCR7bG93
ZXJDYXNlSWZhY2VOYW1lfV9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOworJGNvbmRpdGlvbkd1YXJk
U3RhcnQKKyAgICAke2NsYXNzTmFtZX1Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV8ke2Nsc0Nh
cHN9KG9iamVjdCktPnByaXY7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3Jl
T2JqZWN0KTsKKyRjb25kaXRpb25HdWFyZEVuZAorICAgIHJldHVybiBvYmplY3Q7Cit9CisKIHN0
YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9jbGFzc19pbml0KCR7Y2xhc3NOYW1lfUNs
YXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0
b3IgPSAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNz
LT5maW5hbGl6ZSA9ICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9maW5hbGl6ZTsKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoJHtjbGFzc05hbWV9UHJpdmF0
ZSkpOwogRU9GCiAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAkaW1wbENvbnRlbnQpOwogCkBA
IC03MTYsOCArNzIwLDExIEBAIEVPRgogICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOwogfQog
Ci1zdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1faW5pdCgke2NsYXNzTmFtZX0qIHJl
cXVlc3QpCitzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1faW5pdCgke2NsYXNzTmFt
ZX0qIHNlbGYpCiB7CisgICAgJHtjbGFzc05hbWV9UHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgJHtjbGFz
c05hbWV9UHJpdmF0ZSk7CisgICAgc2VsZi0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSAk
e2NsYXNzTmFtZX1Qcml2YXRlKCk7CiB9CiAKIEVPRgpAQCAtNzYwLDggKzc2NywxMiBAQCBFT0YK
ICNkZWZpbmUgV0VCS0lUX0RPTV9JU18ke2Nsc0NhcHN9X0NMQVNTKGtsYXNzKSAoR19UWVBFX0NI
RUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9KSkKICNk
ZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9LCAke2NsYXNz
TmFtZX1DbGFzcykpCiAKK3R5cGVkZWYgc3RydWN0IF8ke2NsYXNzTmFtZX1Qcml2YXRlICR7Y2xh
c3NOYW1lfVByaXZhdGU7CisKIHN0cnVjdCBfJHtjbGFzc05hbWV9IHsKICAgICAke3BhcmVudENs
YXNzTmFtZX0gcGFyZW50X2luc3RhbmNlOworCisgICAgJHtjbGFzc05hbWV9UHJpdmF0ZSAqcHJp
djsKIH07CiAKIHN0cnVjdCBfJHtjbGFzc05hbWV9Q2xhc3MgewpAQCAtMTI0Niw2ICsxMjU3LDEz
IEBAIHN1YiBHZW5lcmF0ZUNGaWxlIHsKICAgICBteSAkY2xzQ2FwcyA9IHVjKEZpeFVwRGVjYW1l
bGl6ZWROYW1lKGRlY2FtZWxpemUoJGludGVyZmFjZU5hbWUpKSk7CiAgICAgbXkgJGxvd2VyQ2Fz
ZUlmYWNlTmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiBGaXhVcERlY2FtZWxpemVkTmFtZShkZWNhbWVs
aXplKCRpbnRlcmZhY2VOYW1lKSk7CiAKKyAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZGF0YU5vZGUpOworICAgIHB1
c2goQGNTdHJ1Y3RQcml2LCAic3RydWN0IF8ke2NsYXNzTmFtZX1Qcml2YXRlIHtcbiIpOworICAg
IHB1c2goQGNTdHJ1Y3RQcml2LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CisgICAgcHVzaChAY1N0cnVjdFByaXYsICIgICAgUmVmUHRyPFdlYkNv
cmU6OiR7aW50ZXJmYWNlTmFtZX0+IGNvcmVPYmplY3Q7XG4iKTsKKyAgICBwdXNoKEBjU3RydWN0
UHJpdiwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOworICAgIHB1c2goQGNTdHJ1Y3RQcml2LCAifTtcblxuIik7CisKICAgICAkaW1wbENv
bnRlbnQgPSA8PCAiRU9GIjsKICR7ZGVmaW5lVHlwZU1hY3JvfSgke2NsYXNzTmFtZX0sICR7bG93
ZXJDYXNlSWZhY2VOYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0ke2RlZmluZVR5cGVJbnRlcmZhY2VJ
bXBsZW1lbnRhdGlvbn0KIApAQCAtMTI1NiwxMSArMTI3NCw3IEBAIEVPRgogV2ViQ29yZTo6JHtp
bnRlcmZhY2VOYW1lfSogY29yZSgke2NsYXNzTmFtZX0qIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7Ci0KLSAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5h
bWV9KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAg
IHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpOwogfQogCiBFT0YKQEAgLTEy
NzMsMTEgKzEyODcsNiBAQCBFT0YKICR7Y2xhc3NOYW1lfSogd3JhcCR7aW50ZXJmYWNlTmFtZX0o
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVy
IHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEg
QysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNl
ZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3Jl
T2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30oZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9LCAiY29yZS1vYmplY3QiLCBjb3JlT2Jq
ZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTEzMDgsNiArMTMxNyw3IEBAIHN1YiBHZW5lcmF0ZUV2ZW50
VGFyZ2V0SWZhY2UgewogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkZGF0YU5vZGUtPm5hbWU7
CiAgICAgbXkgJGRlY2FtZWxpemUgPSBGaXhVcERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRp
bnRlcmZhY2VOYW1lKSk7CisgICAgbXkgJGNsc0NhcHMgPSB1YygkZGVjYW1lbGl6ZSk7CiAKICAg
ICAkaW1wbEluY2x1ZGVzeyJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogICAgICRpbXBs
SW5jbHVkZXN7IldlYktpdERPTUV2ZW50VGFyZ2V0LmgifSA9IDE7CkBAIC0xMzE2LDExICsxMzI2
LDggQEAgc3ViIEdlbmVyYXRlRXZlbnRUYXJnZXRJZmFjZSB7CiAgICAgbXkgJGltcGwgPSA8PCAi
RU9GIjsKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fJHtkZWNhbWVsaXplfV9kaXNwYXRjaF9ldmVu
dChXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZlbnQsIEdF
cnJvcioqIGVycm9yKQogewotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6
OmNvcmUoZXZlbnQpOwotICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVUYXJnZXQg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9Kj4oV0VCS0lUX0RPTV9PQkpF
Q1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGNvcmVFdmVudCwgZWMpOworICAg
IFdFQktJVF9ET01fJHtjbHNDYXBzfSh0YXJnZXQpLT5wcml2LT5jb3JlT2JqZWN0LT5kaXNwYXRj
aEV2ZW50KFdlYktpdDo6Y29yZShldmVudCksIGVjKTsKICAgICBpZiAoZWMpIHsKICAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uKGVjKTsKICAgICAg
ICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lU
X0RPTSIpLCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKQEAgLTEzMjksMTMg
KzEzMzYsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV8ke2RlY2FtZWxpemV9X2Rpc3BhdGNo
X2V2ZW50KFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQKIAogc3RhdGljIGdib29sZWFuIHdl
YmtpdF9kb21fJHtkZWNhbWVsaXplfV9hZGRfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRU
YXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2FsbGJhY2sgaGFuZGxlciwg
Z2Jvb2xlYW4gYnViYmxlLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBXZWJDb3JlOjoke2lu
dGVyZmFjZU5hbWV9KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZh
Y2VOYW1lfSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOworICAgIFdl
YkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVUYXJnZXQgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fw
c30odGFyZ2V0KS0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6
R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwg
Y29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCBidWJibGUsIHVzZXJEYXRhKTsKIH0KIAog
c3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fJHtkZWNhbWVsaXplfV9yZW1vdmVfZXZlbnRfbGlz
dGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1l
LCBHQ2FsbGJhY2sgaGFuZGxlciwgZ2Jvb2xlYW4gYnViYmxlKQogewotICAgIFdlYkNvcmU6OiR7
aW50ZXJmYWNlTmFtZX0qIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVy
ZmFjZU5hbWV9Kj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7CisgICAg
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZVRhcmdldCA9IFdFQktJVF9ET01fJHtjbHND
YXBzfSh0YXJnZXQpLT5wcml2LT5jb3JlT2JqZWN0LmdldCgpOwogICAgIHJldHVybiBXZWJDb3Jl
OjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVDVCh0YXJn
ZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIGJ1YmJsZSk7CiB9CiAKQEAgLTE0
OTEsNiArMTQ5OCw3IEBAIEVPRgogICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDxnbGliLW9iamVj
dC5oPlxuIjsKICAgICBwcmludCBJTVBMICIjaW5jbHVkZSA8d3RmL0dldFB0ci5oPlxuIjsKICAg
ICBwcmludCBJTVBMICIjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPlxuXG4iOworICAgIHByaW50IElN
UEwgQGNTdHJ1Y3RQcml2OwogICAgIHByaW50IElNUEwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuXG4iIGlmICRjb25kaXRpb25hbFN0cmluZzsKIAogICAgIHByaW50IElNUEwgIm5hbWVzcGFj
ZSBXZWJLaXQge1xuXG4iOwpAQCAtMTUxMiw2ICsxNTIwLDcgQEAgRU9GCiAgICAgQGNCb2R5ID0g
KCk7CiAgICAgQGNCb2R5UHJpdiA9ICgpOwogICAgIEBjQm9keVByb3BlcnRpZXMgPSAoKTsKKyAg
ICBAY1N0cnVjdFByaXYgPSAoKTsKIH0KIAogc3ViIEdlbmVyYXRlSW50ZXJmYWNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTUZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01GbG9hdDY0QXJyYXkuY3BwCmluZGV4IDVjMWRjN2UuLjU0ZjRi
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcApAQCAtNDAs
NiArNDAsMTAgQEAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCitzdHJ1Y3QgX1dlYktpdERPTUZsb2F0NjRBcnJheVByaXZhdGUgeworICAgIFJlZlB0
cjxXZWJDb3JlOjpGbG9hdDY0QXJyYXk+IGNvcmVPYmplY3Q7Cit9OworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiBraXQoV2ViQ29yZTo6RmxvYXQ2NEFycmF5
KiBvYmopCkBAIC01NSwyMSArNTksMTIgQEAgV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiBraXQoV2Vi
Q29yZTo6RmxvYXQ2NEFycmF5KiBvYmopCiBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmUoV2Vi
S2l0RE9NRmxvYXQ2NEFycmF5KiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHJlcXVlc3QsIDApOwotCi0gICAgV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBjb3JlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RmxvYXQ2NEFycmF5Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVx
dWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3Qs
IDApOwotCi0gICAgcmV0dXJuIGNvcmVPYmplY3Q7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYt
PmNvcmVPYmplY3QuZ2V0KCk7CiB9CiAKIFdlYktpdERPTUZsb2F0NjRBcnJheSogd3JhcEZsb2F0
NjRBcnJheShXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJh
dGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9y
ZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJl
LiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAg
Y29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9GTE9BVDY0QVJSQVko
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9GTE9BVDY0QVJSQVksICJjb3JlLW9iamVjdCIs
IGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtNzksMzAgKzc0LDM3IEBAIEdfREVGSU5FX1RZ
UEUoV2ViS2l0RE9NRmxvYXQ2NEFycmF5LCB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheSwgV0VCS0lU
X1RZUEVfRE9NX0FSCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5X2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICBXZWJLaXRET01GbG9hdDY0QXJyYXlQcml2YXRl
KiBwcml2ID0gV0VCS0lUX0RPTV9GTE9BVDY0QVJSQVkob2JqZWN0KS0+cHJpdjsKIAotICAgIFdl
YktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAg
ICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OkZs
b2F0NjRBcnJheSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkZsb2F0NjRBcnJh
eSo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCi0gICAgICAgIFdlYktpdDo6RE9NT2Jq
ZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYo
KTsKKyAgICBwcml2LT5+V2ViS2l0RE9NRmxvYXQ2NEFycmF5UHJpdmF0ZSgpOworICAgIEdfT0JK
RUNUX0NMQVNTKHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5X3BhcmVudF9jbGFzcyktPmZpbmFsaXpl
KG9iamVjdCk7Cit9CiAKLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9
CitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfY29uc3RydWN0b3IoR1R5
cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0
UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVz
KTsKIAorICAgIFdlYktpdERPTUZsb2F0NjRBcnJheVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X0ZMT0FUNjRBUlJBWShvYmplY3QpLT5wcml2OworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpGbG9hdDY0QXJyYXkqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3Qp
LT5jb3JlT2JqZWN0KTsKIAotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fZmxvYXQ2NGFy
cmF5X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsK
IH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfY2xhc3NfaW5pdChXZWJL
aXRET01GbG9hdDY0QXJyYXlDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFz
cyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2Jq
ZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfY29uc3RydWN0
b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fZmxvYXQ2NGFycmF5
X2ZpbmFsaXplOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNp
emVvZihXZWJLaXRET01GbG9hdDY0QXJyYXlQcml2YXRlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fZmxvYXQ2NGFycmF5X2luaXQoV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiByZXF1ZXN0
KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfaW5pdChXZWJLaXRET01GbG9h
dDY0QXJyYXkqIHNlbGYpCiB7CisgICAgV2ViS2l0RE9NRmxvYXQ2NEFycmF5UHJpdmF0ZSogcHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fRkxP
QVQ2NEFSUkFZLCBXZWJLaXRET01GbG9hdDY0QXJyYXlQcml2YXRlKTsKKyAgICBzZWxmLT5wcml2
ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTUZsb2F0NjRBcnJheVByaXZhdGUoKTsK
IH0KIAogV2ViS2l0RE9NSW50MzJBcnJheSoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2
NEFycmF5LmgKaW5kZXggYWRkYmM4NS4uOTExN2Q3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NRmxvYXQ2NEFycmF5LmgKQEAgLTM0LDggKzM0LDEyIEBAIEdfQkVHSU5fREVDTFMKICNkZWZp
bmUgV0VCS0lUX0RPTV9JU19GTE9BVDY0QVJSQVlfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX0ZMT0FUNjRBUlJBWSkpCiAjZGVm
aW5lIFdFQktJVF9ET01fRkxPQVQ2NEFSUkFZX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9GTE9BVDY0QVJSQVksIFdlYktp
dERPTUZsb2F0NjRBcnJheUNsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUZsb2F0
NjRBcnJheVByaXZhdGUgV2ViS2l0RE9NRmxvYXQ2NEFycmF5UHJpdmF0ZTsKKwogc3RydWN0IF9X
ZWJLaXRET01GbG9hdDY0QXJyYXkgewogICAgIFdlYktpdERPTUFycmF5QnVmZmVyVmlldyBwYXJl
bnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRET01GbG9hdDY0QXJyYXlQcml2YXRlICpwcml2Owog
fTsKIAogc3RydWN0IF9XZWJLaXRET01GbG9hdDY0QXJyYXlDbGFzcyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IDI5MjFkMGMu
Ljg4N2RiMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVE
T01PYmplY3QuY3BwCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdEFjdGl2ZURP
TU9iamVjdFByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0
PiBjb3JlT2JqZWN0OworfTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RB
Y3RpdmVET01PYmplY3QqIGtpdChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBvYmopCkBA
IC01MiwyMSArNTYsMTIgQEAgV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCoga2l0KFdlYkNv
cmU6OlRlc3RBY3RpdmVET01PYmplY3QqIG9iaikKIFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmpl
Y3QqIGNvcmUoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCogcmVxdWVzdCkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLQotICAgIFdlYkNvcmU6OlRlc3RBY3Rp
dmVET01PYmplY3QqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgcmV0dXJuIGNvcmVP
YmplY3Q7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CiB9CiAK
IFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqIHdyYXBUZXN0QWN0aXZlRE9NT2JqZWN0KFdl
YkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhl
ciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBh
IEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBT
ZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgY29y
ZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0FDVElWRV9ET01f
T0JKRUNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVD
VCwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC04MSwxOSArNzYs
MTEgQEAgZW51bSB7CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29i
amVjdF9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdEFjdGl2
ZURPTU9iamVjdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfQUNUSVZFX0RPTV9PQkpF
Q1Qob2JqZWN0KS0+cHJpdjsKIAotICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAgICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2Jq
ZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIGNvcmVPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oZG9tT2JqZWN0LT5j
b3JlT2JqZWN0KTsKLQotICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29y
ZU9iamVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0KLSAgICAgICAgZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9Ci0KKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hl
Ojpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAKKyAgICBwcml2LT5+V2ViS2l0RE9N
VGVzdEFjdGl2ZURPTU9iamVjdFByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRf
ZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKIH0KIApAQCAtMTE1LDEwICsxMDIsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2FjdGl2ZV9kb21fb2JqZWN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW4KICAg
ICB9CiB9CiAKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmpl
Y3RfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50
LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09i
amVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21f
b2JqZWN0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRp
ZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0QWN0aXZl
RE9NT2JqZWN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVD
VChvYmplY3QpLT5wcml2OworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29y
ZU9iamVjdCk7CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0QWN0aXZl
RE9NT2JqZWN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNz
LT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9jb25zdHJ1
Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2FjdGl2
ZV9kb21fb2JqZWN0X2ZpbmFsaXplOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2Jq
ZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0UHJpdmF0ZSkpOwog
ICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9k
b21fb2JqZWN0X2dldF9wcm9wZXJ0eTsKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdENsYXNzLApAQCAtMTMyLDggKzEzMSwxMSBAQCBHX01BWExPTkcsIC8qIG1h
eCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2luaXQoV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9i
amVjdCogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29i
amVjdF9pbml0KFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqIHNlbGYpCiB7CisgICAgV2Vi
S2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdFByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUoc2VsZiwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfQUNUSVZFX0RPTV9PQkpFQ1Qs
IFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlKTsKKyAgICBzZWxmLT5wcml2ID0g
cHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRl
KCk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVE
T01PYmplY3QuaAppbmRleCA0MjU5NGEwLi4wYjMwMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdC5oCkBAIC0zNCw4ICszNCwxMiBAQCBHX0JF
R0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9BQ1RJVkVfRE9NX09CSkVDVF9D
TEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRfVFlQ
RV9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVCkpCiAjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9B
Q1RJVkVfRE9NX09CSkVDVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xB
U1MoKG9iaiksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVCwgV2ViS2l0
RE9NVGVzdEFjdGl2ZURPTU9iamVjdENsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlIFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQ
cml2YXRlOworCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QgewogICAgIFdl
YktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRET01UZXN0QWN0aXZl
RE9NT2JqZWN0UHJpdmF0ZSAqcHJpdjsKIH07CiAKIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEFjdGl2
ZURPTU9iamVjdENsYXNzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2su
Y3BwCmluZGV4IDFkNzc3MzQuLjRjOWRiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcApAQCAtNDcsNiArNDcsMTIgQEAKICNpbmNsdWRlIDx3dGYvR2V0UHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RDYWxs
YmFja1ByaXZhdGUgeworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgUmVmUHRyPFdlYkNv
cmU6OlRlc3RDYWxsYmFjaz4gY29yZU9iamVjdDsKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFC
QVNFKQorfTsKKwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtNjQsMjEgKzcwLDEyIEBAIFdlYktpdERPTVRlc3RDYWxsYmFjayoga2l0KFdlYkNvcmU6
OlRlc3RDYWxsYmFjayogb2JqKQogV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlKFdlYktpdERP
TVRlc3RDYWxsYmFjayogcmVxdWVzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1
ZXN0LCAwKTsKLQotICAgIFdlYkNvcmU6OlRlc3RDYWxsYmFjayogY29yZU9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlRlc3RDYWxsYmFjayo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3Qp
LT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsK
LQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3Jl
T2JqZWN0LmdldCgpOwogfQogCiBXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHdyYXBUZXN0Q2FsbGJh
Y2soV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIg
dGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBD
Kysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2Vl
IHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNvcmVP
YmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9DQUxMQkFDSyhnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfQ0FMTEJBQ0ssICJjb3JlLW9iamVjdCIsIGNv
cmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtOTAsMzAgKzg3LDM3IEBAIEdfREVGSU5FX1RZUEUo
V2ViS2l0RE9NVGVzdENhbGxiYWNrLCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2ssIFdFQktJVF9U
WVBFX0RPTV9PCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDSyhvYmplY3QpLT5wcml2OwogI2lmIEVOQUJM
RShTUUxfREFUQUJBU0UpCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRf
RE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3Qp
IHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQotICAg
ICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAg
IGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0KLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0g
MDsKLSAgICB9CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVP
YmplY3QuZ2V0KCkpOwogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJBU0UpCi0KKyAgICBwcml2
LT5+V2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwog
fQogCitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NvbnN0cnVjdG9y
KEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0
cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19wYXJlbnRfY2xhc3MpLT5j
b25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3Bl
cnRpZXMpOworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgV2ViS2l0RE9NVGVzdENhbGxi
YWNrUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDSyhvYmplY3QpLT5wcml2
OworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyNlbmRpZiAvLyBF
TkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIHJldHVybiBvYmplY3Q7Cit9CisKIHN0YXRpYyB2b2lk
IHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jbGFzc19pbml0KFdlYktpdERPTVRlc3RDYWxsYmFj
a0NsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3Mg
PSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3Ry
dWN0b3IgPSB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY29uc3RydWN0b3I7CiAgICAgZ29iamVj
dENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19maW5hbGl6ZTsKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9N
VGVzdENhbGxiYWNrUHJpdmF0ZSkpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
Y2FsbGJhY2tfaW5pdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHJlcXVlc3QpCitzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfaW5pdChXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHNl
bGYpCiB7CisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9DQUxMQkFDSywg
V2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSk7CisgICAgc2VsZi0+cHJpdiA9IHByaXY7Cisg
ICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0Q2FsbGJhY2tQcml2YXRlKCk7CiB9CiAKIGdib29s
ZWFuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCmluZGV4IDliMmUxNDAu
LjNhYzYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5oCkBAIC0z
NCw4ICszNCwxMiBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9ET01fSVNfVEVTVF9D
QUxMQkFDS19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9ET01fVEVTVF9DQUxMQkFDSykpCiAjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9D
QUxMQkFDS19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBXRUJLSVRfVFlQRV9ET01fVEVTVF9DQUxMQkFDSywgV2ViS2l0RE9NVGVzdENhbGxiYWNrQ2xh
c3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSBXZWJL
aXRET01UZXN0Q2FsbGJhY2tQcml2YXRlOworCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RDYWxsYmFj
ayB7CiAgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdERP
TVRlc3RDYWxsYmFja1ByaXZhdGUgKnByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RD
YWxsYmFja0NsYXNzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IGVhMWM2ZjkuLmExOTBmNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMzUs
NiArMzUsMTAgQEAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGUgewor
ICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IGNvcmVPYmplY3Q7Cit9
OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
KiBraXQoV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBvYmopCkBAIC01MCwyMSArNTQs
MTIgQEAgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBraXQoV2ViQ29yZTo6VGVzdEN1
c3RvbU5hbWVkR2V0dGVyKiBvYmopCiBXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNv
cmUoV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiByZXF1ZXN0KQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwotCi0gICAgV2ViQ29yZTo6VGVzdEN1c3RvbU5h
bWVkR2V0dGVyKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEN1c3RvbU5h
bWVkR2V0dGVyKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgcmV0dXJuIGNvcmVP
YmplY3Q7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CiB9CiAK
IFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlciogd3JhcFRlc3RDdXN0b21OYW1lZEdldHRl
cihXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigp
IHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBz
dG9yZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0
dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0g
ICAgY29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX0NVU1RP
TV9OQU1FRF9HRVRURVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NVU1RPTV9O
QU1FRF9HRVRURVIsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAt
NzQsMzAgKzY5LDM3IEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyLCB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlCiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKIHsKKyAgICBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVIob2JqZWN0KS0+cHJpdjsKIAotICAg
IFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsK
LSAgICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6
OlRlc3RDdXN0b21OYW1lZEdldHRlciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6
OlRlc3RDdXN0b21OYW1lZEdldHRlcio+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CisgICAgV2Vi
S2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCi0g
ICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAg
ICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdEN1c3RvbU5h
bWVkR2V0dGVyUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9j
dXN0b21fbmFtZWRfZ2V0dGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CiAK
LSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9CitzdGF0aWMgR09iamVj
dCogd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfY29uc3RydWN0b3IoR1R5cGUg
dHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFy
YW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfcGFyZW50X2NsYXNz
KS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQ
cm9wZXJ0aWVzKTsKIAorICAgIFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGUq
IHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfQ1VTVE9NX05BTUVEX0dFVFRFUihvYmplY3QpLT5wcml2
OworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKIAot
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX3Bh
cmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAog
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfY2xhc3NfaW5p
dChXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDbGFzcyogcmVxdWVzdENsYXNzKQogewog
ICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X2N1
c3RvbV9uYW1lZF9nZXR0ZXJfY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6
ZSA9IHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2ZpbmFsaXplOworICAgIGdf
dHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2luaXQoV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0
dGVyKiByZXF1ZXN0KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9n
ZXR0ZXJfaW5pdChXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHNlbGYpCiB7CisgICAg
V2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNU
QU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9DVVNUT01fTkFNRURf
R0VUVEVSLCBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlKTsKKyAgICBzZWxm
LT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdl
dHRlclByaXZhdGUoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBmMDE2ZTNmLi5kY2RmMzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAt
MzQsOCArMzQsMTIgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1Rf
Q1VTVE9NX05BTUVEX0dFVFRFUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSKSkKICNk
ZWZpbmUgV0VCS0lUX0RPTV9URVNUX0NVU1RPTV9OQU1FRF9HRVRURVJfR0VUX0NMQVNTKG9iaikg
IChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
Q1VTVE9NX05BTUVEX0dFVFRFUiwgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ2xhc3Mp
KQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0
ZSBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlOworCiBzdHJ1Y3QgX1dlYktp
dERPTVRlc3RDdXN0b21OYW1lZEdldHRlciB7CiAgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9p
bnN0YW5jZTsKKworICAgIFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGUgKnBy
aXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlckNsYXNzIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCA4ZGZhOWVmLi40ODBiNjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3N0cnVjdCBfV2Vi
S2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
VGVzdEV2ZW50Q29uc3RydWN0b3I+IGNvcmVPYmplY3Q7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIGtpdChXZWJDb3JlOjpUZXN0RXZl
bnRDb25zdHJ1Y3Rvciogb2JqKQpAQCAtNTAsMjEgKzU0LDEyIEBAIFdlYktpdERPTVRlc3RFdmVu
dENvbnN0cnVjdG9yKiBraXQoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIG9iaikKIFdl
YkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKFdlYktpdERPTVRlc3RFdmVudENvbnN0
cnVjdG9yKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDAp
OwotCi0gICAgV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNvcmVPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2Jq
ZWN0LCAwKTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVybiByZXF1ZXN0LT5w
cml2LT5jb3JlT2JqZWN0LmdldCgpOwogfQogCiBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
ciogd3JhcFRlc3RFdmVudENvbnN0cnVjdG9yKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9y
KiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDAp
OwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBw
b2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgLy8gaW4gYSBD
LWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9y
IHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNvcmVPYmplY3QtPnJlZigpOwotCiAgICAgcmV0
dXJuIFdFQktJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUihnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IsICJjb3JlLW9iamVjdCIsIGNvcmVPYmpl
Y3QsIE5VTEwpKTsKIH0KIApAQCAtODAsMTkgKzc1LDExIEBAIGVudW0gewogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQogeworICAgIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUihvYmplY3QpLT5wcml2OwogCi0gICAg
V2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwot
ICAgIAotICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6
VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7Ci0KLSAgICAgICAg
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3Jl
T2JqZWN0LT5kZXJlZigpOwotCi0gICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7Ci0g
ICAgfQotCisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmpl
Y3QuZ2V0KCkpOwogCisgICAgcHJpdi0+fldlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJp
dmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1
Y3Rvcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC0xMTgsMTAgKzEw
NSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbgogICAgIH0KIH0KIAorc3RhdGljIEdPYmpl
Y3QqIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3RvcihHVHlwZSB0
eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJh
bSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfcGFyZW50X2NsYXNzKS0+
Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9w
ZXJ0aWVzKTsKKworICAgIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUihvYmplY3QpLT5wcml2OworICAg
IHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1
Y3Rvcio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworCisgICAgcmV0
dXJuIG9iamVjdDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0
cnVjdG9yX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JDbGFzcyogcmVx
dWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RD
bGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZmluYWxp
emU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdl
YktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSkpOwogICAgIGdvYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2dldF9wcm9w
ZXJ0eTsKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNz
LApAQCAtMTQwLDggKzEzOSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRf
Y29uc3RydWN0b3JfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0RXZlbnRDb25zdAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBREFCTEUpKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V2ZW50
X2NvbnN0cnVjdG9yX2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHJlcXVlc3Qp
CitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfaW5pdChXZWJL
aXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvciogc2VsZikKIHsKKyAgICBXZWJLaXRET01UZXN0RXZl
bnRDb25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
c2VsZiwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IsIFdlYktpdERPTVRl
c3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSk7CisgICAgc2VsZi0+cHJpdiA9IHByaXY7CisgICAg
bmV3IChwcml2KSBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUoKTsKIH0KIAog
Z2NoYXIqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0
b3IuaAppbmRleCBjMmY0MDU1Li5kZjU2MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTM0LDggKzM0LDEyIEBAIEdfQkVHSU5f
REVDTFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0VWRU5UX0NPTlNUUlVDVE9SX0NMQVNT
KGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RP
TV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SKSkKICNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0VWRU5U
X0NPTlNUUlVDVE9SX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SLCBXZWJLaXRET01U
ZXN0RXZlbnRDb25zdHJ1Y3RvckNsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRl
c3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclBy
aXZhdGU7CisKIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgewogICAgIFdl
YktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRET01UZXN0RXZlbnRD
b25zdHJ1Y3RvclByaXZhdGUgKnByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RFdmVu
dENvbnN0cnVjdG9yQ2xhc3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVu
dFRhcmdldC5jcHAKaW5kZXggZWI0ZjMxMC4uNWNmODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFy
Z2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3N0cnVjdCBfV2Vi
S2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RF
dmVudFRhcmdldD4gY29yZU9iamVjdDsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJL
aXRET01UZXN0RXZlbnRUYXJnZXQqIGtpdChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqIG9iaikK
QEAgLTU4LDIxICs2MiwxMiBAQCBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIGtpdChXZWJDb3Jl
OjpUZXN0RXZlbnRUYXJnZXQqIG9iaikKIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZShX
ZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwocmVxdWVzdCwgMCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqIGNvcmVP
YmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqPihXRUJLSVRfRE9N
X09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29yZU9iamVjdCwgMCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gcmVx
dWVzdC0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKIH0KIAogV2ViS2l0RE9NVGVzdEV2ZW50VGFy
Z2V0KiB3cmFwVGVzdEV2ZW50VGFyZ2V0KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZU9i
amVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAg
IC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBi
ZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0
ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0
Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJL
SVRfRE9NX1RFU1RfRVZFTlRfVEFSR0VUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVT
VF9FVkVOVF9UQVJHRVQsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApA
QCAtODAsMTEgKzc1LDggQEAgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0KiB3cmFwVGVzdEV2ZW50
VGFyZ2V0KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZU9iamUKIAogc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9kaXNwYXRjaF9ldmVudChXZWJLaXRET01FdmVu
dFRhcmdldCogdGFyZ2V0LCBXZWJLaXRET01FdmVudCogZXZlbnQsIEdFcnJvcioqIGVycm9yKQog
ewotICAgIFdlYkNvcmU6OkV2ZW50KiBjb3JlRXZlbnQgPSBXZWJLaXQ6OmNvcmUoZXZlbnQpOwot
ICAgIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3RFdmVudFRhcmdldCo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVP
YmplY3QpOwotCiAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29yZVRh
cmdldC0+ZGlzcGF0Y2hFdmVudChjb3JlRXZlbnQsIGVjKTsKKyAgICBXRUJLSVRfRE9NX1RFU1Rf
RVZFTlRfVEFSR0VUKHRhcmdldCktPnByaXYtPmNvcmVPYmplY3QtPmRpc3BhdGNoRXZlbnQoV2Vi
S2l0Ojpjb3JlKGV2ZW50KSwgZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwogICAgICAgICBnX3NldF9l
cnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGRl
c2NyaXB0aW9uLmNvZGUsIGRlc2NyaXB0aW9uLm5hbWUpOwpAQCAtOTMsMTMgKzg1LDEzIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZGlzcGF0Y2hfZXZlbnQoV2Vi
S2l0RE9NRXZlbnRUYXJnZXQqIHRhCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3Rf
ZXZlbnRfdGFyZ2V0X2FkZF9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFy
Z2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdDYWxsYmFjayBoYW5kbGVyLCBnYm9vbGVhbiBi
dWJibGUsIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdl
dCogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCo+KFdF
QktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOworICAgIFdlYkNvcmU6OlRlc3RF
dmVudFRhcmdldCogY29yZVRhcmdldCA9IFdFQktJVF9ET01fVEVTVF9FVkVOVF9UQVJHRVQodGFy
Z2V0KS0+cHJpdi0+Y29yZU9iamVjdC5nZXQoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6R09iamVj
dEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19PQkpFQ1QodGFyZ2V0KSwgY29yZVRh
cmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCBidWJibGUsIHVzZXJEYXRhKTsKIH0KIAogc3RhdGlj
IGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfcmVtb3ZlX2V2ZW50X2xpc3Rl
bmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwg
R0NhbGxiYWNrIGhhbmRsZXIsIGdib29sZWFuIGJ1YmJsZSkKIHsKLSAgICBXZWJDb3JlOjpUZXN0
RXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRU
YXJnZXQqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJD
b3JlOjpUZXN0RXZlbnRUYXJnZXQqIGNvcmVUYXJnZXQgPSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRf
VEFSR0VUKHRhcmdldCktPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CiAgICAgcmV0dXJuIFdlYkNv
cmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpyZW1vdmVFdmVudExpc3RlbmVyKEdfT0JKRUNUKHRh
cmdldCksIGNvcmVUYXJnZXQsIGV2ZW50TmFtZSwgaGFuZGxlciwgYnViYmxlKTsKIH0KIApAQCAt
MTE0LDMwICsxMDYsMzcgQEAgR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoV2ViS2l0RE9NVGVzdEV2
ZW50VGFyZ2V0LCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0LAogCiBzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsK
KyAgICBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9U
RVNUX0VWRU5UX1RBUkdFVChvYmplY3QpLT5wcml2OwogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBk
b21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21P
YmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBj
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0Kj4oZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJp
di0+Y29yZU9iamVjdC5nZXQoKSk7CiAKLSAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOworICAgIHBy
aXYtPn5XZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xB
U1Mod2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmplY3QpOworfQogCi0gICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7Ci0gICAgfQor
c3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfY29uc3RydWN0b3Io
R1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3Ry
dWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0g
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9wYXJlbnRfY2xhc3Mp
LT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFBy
b3BlcnRpZXMpOwogCisgICAgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fVEVTVF9FVkVOVF9UQVJHRVQob2JqZWN0KS0+cHJpdjsKKyAgICBwcml2LT5j
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0Kj4oV0VCS0lU
X0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CiAKLSAgICBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2V2ZW50X3RhcmdldF9jbGFzc19pbml0KFdlYktpdERPTVRlc3RFdmVudFRhcmdldENsYXNzKiBy
ZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3
ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RDbGFz
cy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2ZpbmFsaXplOworICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01U
ZXN0RXZlbnRUYXJnZXRQcml2YXRlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9ldmVudF90YXJnZXRfaW5pdChXZWJLaXRET01UZXN0RXZlbnRUYXJnZXQqIHJlcXVlc3QpCitz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NVGVz
dEV2ZW50VGFyZ2V0KiBzZWxmKQogeworICAgIFdlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZh
dGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2VsZiwgV0VCS0lUX1RZUEVf
RE9NX1RFU1RfRVZFTlRfVEFSR0VULCBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlKTsK
KyAgICBzZWxmLT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RFdmVu
dFRhcmdldFByaXZhdGUoKTsKIH0KIAogV2ViS2l0RE9NTm9kZSoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggODBmOWQ1Mi4uYjdmOTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTM0LDggKzM0LDEy
IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0VWRU5UX1RBUkdF
VF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
VFlQRV9ET01fVEVTVF9FVkVOVF9UQVJHRVQpKQogI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfRVZF
TlRfVEFSR0VUX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX0VWRU5UX1RBUkdFVCwgV2ViS2l0RE9NVGVzdEV2ZW50
VGFyZ2V0Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0
UHJpdmF0ZSBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlOworCiBzdHJ1Y3QgX1dlYktp
dERPTVRlc3RFdmVudFRhcmdldCB7CiAgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5j
ZTsKKworICAgIFdlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGUgKnByaXY7CiB9OwogCiBz
dHJ1Y3QgX1dlYktpdERPTVRlc3RFdmVudFRhcmdldENsYXNzIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggNzA5YmQ4Ny4uYWJjZjA2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDEw
IEBACiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAor
c3RydWN0IF9XZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSB7CisgICAgUmVmUHRyPFdlYkNv
cmU6OlRlc3RFeGNlcHRpb24+IGNvcmVPYmplY3Q7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbioga2l0KFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIG9i
aikKQEAgLTUwLDIxICs1NCwxMiBAQCBXZWJLaXRET01UZXN0RXhjZXB0aW9uKiBraXQoV2ViQ29y
ZTo6VGVzdEV4Y2VwdGlvbiogb2JqKQogV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiogY29yZShXZWJL
aXRET01UZXN0RXhjZXB0aW9uKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHJlcXVlc3QsIDApOwotCi0gICAgV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiogY29yZU9iamVjdCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qPihXRUJLSVRfRE9NX09CSkVDVChy
ZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVj
dCwgMCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJp
di0+Y29yZU9iamVjdC5nZXQoKTsKIH0KIAogV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbiogd3JhcFRl
c3RFeGNlcHRpb24oV2ViQ29yZTo6VGVzdEV4Y2VwdGlvbiogY29yZU9iamVjdCkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwgcmVm
KCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0
IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1
Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4K
LSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfRVhD
RVBUSU9OKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9FWENFUFRJT04sICJjb3Jl
LW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtNzksMTkgKzc0LDExIEBAIGVu
dW0gewogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2ZpbmFsaXplKEdP
YmplY3QqIG9iamVjdCkKIHsKKyAgICBXZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fVEVTVF9FWENFUFRJT04ob2JqZWN0KS0+cHJpdjsKIAotICAgIFdlYktp
dERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAgICAK
LSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3RF
eGNlcHRpb24qIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXhjZXB0aW9u
Kj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQotICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENh
Y2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0K
LSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9Ci0KKyAgICBXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAKKyAgICBw
cml2LT5+V2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUoKTsKICAgICBHX09CSkVDVF9DTEFT
Uyh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CiB9CiAKQEAgLTExMywxMCArMTAwLDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9leGNlcHRpb25fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVyCiAg
ICAgfQogfQogCitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25z
dHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmpl
Y3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBv
YmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3BhcmVudF9j
bGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3Ry
dWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSogcHJp
diA9IFdFQktJVF9ET01fVEVTVF9FWENFUFRJT04ob2JqZWN0KS0+cHJpdjsKKyAgICBwcml2LT5j
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KFdFQktJVF9E
T01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworCisgICAgcmV0dXJuIG9iamVjdDsKK30K
Kwogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jbGFzc19pbml0KFdlYktp
dERPTVRlc3RFeGNlcHRpb25DbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFz
cyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2Jq
ZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1
Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2V4Y2Vw
dGlvbl9maW5hbGl6ZTsKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNz
LCBzaXplb2YoV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUpKTsKICAgICBnb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fZ2V0X3Byb3BlcnR5
OwogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCkBA
IC0xMjgsOCArMTI3LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25f
Y2xhc3NfaW5pdChXZWJLaXRET01UZXN0RXhjZXB0aW9uQ2xhc3MqIHJlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9u
X2luaXQoV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbiogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9leGNlcHRpb25faW5pdChXZWJLaXRET01UZXN0RXhjZXB0aW9uKiBzZWxmKQog
eworICAgIFdlYktpdERPTVRlc3RFeGNlcHRpb25Qcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKHNlbGYsIFdFQktJVF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTiwgV2Vi
S2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUpOworICAgIHNlbGYtPnByaXYgPSBwcml2OworICAg
IG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUoKTsKIH0KIAogZ2NoYXIq
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmgKaW5kZXggMWUxYWE1Yy4u
NWQ2YjQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFeGNlcHRpb24uaApAQCAt
MzQsOCArMzQsMTIgQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1Rf
RVhDRVBUSU9OX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
IFdFQktJVF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTikpCiAjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9FWENFUFRJT05fR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChv
YmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVhDRVBUSU9OLCBXZWJLaXRET01UZXN0RXhjZXB0
aW9uQ2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZh
dGUgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGU7CisKIHN0cnVjdCBfV2ViS2l0RE9NVGVz
dEV4Y2VwdGlvbiB7CiAgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAg
IFdlYktpdERPTVRlc3RFeGNlcHRpb25Qcml2YXRlICpwcml2OwogfTsKIAogc3RydWN0IF9XZWJL
aXRET01UZXN0RXhjZXB0aW9uQ2xhc3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SW50ZXJmYWNlLmNwcAppbmRleCAwOGU0NTllLi40NDYwODNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcApAQCAtNDIsNiArNDIsMTIgQEAKICNpbmNsdWRl
IDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitzdHJ1Y3QgX1dlYktp
dERPTVRlc3RJbnRlcmZhY2VQcml2YXRlIHsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RJbnRlcmZhY2U+IGNvcmVP
YmplY3Q7CisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24y
KQorfTsKKwogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC01OSwyMSArNjUsMTIgQEAgV2ViS2l0RE9NVGVzdEludGVy
ZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIG9iaikKIFdlYkNvcmU6OlRlc3RJbnRl
cmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVzdCkKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLQotICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZh
Y2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKj4oV0VC
S0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgcmV0dXJuIGNvcmVPYmplY3Q7CisgICAgcmV0
dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmplY3QuZ2V0KCk7CiB9CiAKIFdlYktpdERPTVRlc3RJ
bnRlcmZhY2UqIHdyYXBUZXN0SW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVP
YmplY3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAg
ICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIg
YmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2Nh
dGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1h
dGNoaW5nIGRlcmVmKCkuCi0gICAgY29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VC
S0lUX0RPTV9URVNUX0lOVEVSRkFDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
SU5URVJGQUNFLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTky
LDE5ICs4OSwxMSBAQCBlbnVtIHsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVy
ZmFjZV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdEludGVy
ZmFjZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFKG9iamVjdCktPnBy
aXY7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIFdl
YktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAg
ICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRl
c3RJbnRlcmZhY2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0SW50ZXJm
YWNlKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQotICAgICAgICBXZWJLaXQ6OkRPTU9iamVj
dENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7
Ci0KLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9CisgICAgV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKLQorICAgIHByaXYt
Pn5XZWJLaXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsK
IH0KIApAQCAtMTkzLDEwICsxODIsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2lu
dGVyZmFjZV9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXIKICAgICB9
CiB9CiAKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2NvbnN0cnVj
dG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENv
bnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVj
dCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfcGFyZW50X2NsYXNz
KS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQ
cm9wZXJ0aWVzKTsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIp
CisgICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RF
U1RfSU5URVJGQUNFKG9iamVjdCktPnByaXY7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRp
Y19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3Qp
LT5jb3JlT2JqZWN0KTsKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENv
bmRpdGlvbjIpCisgICAgcmV0dXJuIG9iamVjdDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9jbGFzc19pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyog
cmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0g
d2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9maW5hbGl6ZTsKKyAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdElu
dGVyZmFjZVByaXZhdGUpKTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X3Byb3BlcnR5OwogICAgIGdvYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfcHJvcGVydHk7CiAKQEAg
LTIyMyw4ICsyMjQsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9j
bGFzc19pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2VDbGFzcyogcmUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2luaXQoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmKQog
eworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RB
TkNFX0dFVF9QUklWQVRFKHNlbGYsIFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVSRkFDRSwgV2Vi
S2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUpOworICAgIHNlbGYtPnByaXYgPSBwcml2OworICAg
IG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUoKTsKIH0KIAogdm9pZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5oCmluZGV4IGM1NDYxZTkuLmIx
ODk5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmgKQEAgLTM0
LDggKzM0LDEyIEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX0lO
VEVSRkFDRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBX
RUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0UpKQogI2RlZmluZSBXRUJLSVRfRE9NX1RFU1Rf
SU5URVJGQUNFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2Jq
KSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX0lOVEVSRkFDRSwgV2ViS2l0RE9NVGVzdEludGVyZmFj
ZUNsYXNzKSkKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRl
IFdlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlOworCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RJ
bnRlcmZhY2UgewogICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBX
ZWJLaXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZSAqcHJpdjsKIH07CiAKIHN0cnVjdCBfV2ViS2l0
RE9NVGVzdEludGVyZmFjZUNsYXNzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBhOTI1OWVhLi4yMTUw
YjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9H
ZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK3N0cnVjdCBfV2ViS2l0RE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGNvcmVPYmplY3Q7Cit9OworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGtpdChXZWJDb3Jl
OjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogb2JqKQpAQCAtNTAsMjEgKzU0LDEyIEBAIFdl
YktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBraXQoV2ViQ29yZTo6VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIqIG9iCiBXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciogY29yZShXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogcmVxdWVzdCkKIHsK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKLQotICAgIFdlYkNvcmU6OlRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0
KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7
Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gcmVxdWVzdC0+cHJpdi0+Y29y
ZU9iamVjdC5nZXQoKTsKIH0KIAogV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIq
IHdyYXBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciogY29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3Jl
T2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBD
Kysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAotICAg
IC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUo
KSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsK
LQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUihn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5F
UiwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC03NCwyOSArNjks
MzYgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciwg
d2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2wKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQog
eworICAgIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSKG9iamVjdCktPnByaXY7
CiAKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9i
amVjdCk7Ci0gICAgCi0gICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBX
ZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oZG9tT2JqZWN0LT5jb3Jl
T2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9i
amVjdC5nZXQoKSk7CiAKLSAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNv
cmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOworICAgIHByaXYtPn5XZWJL
aXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworfQogCi0gICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVj
dCA9IDA7Ci0gICAgfQorc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVy
eV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFBy
b3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVz
KQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVz
dF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5
cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CiAKKyAg
ICBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUqIHByaXYgPSBXRUJL
SVRfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUihvYmplY3QpLT5wcml2OworICAg
IHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lcio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwogCi0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVu
ZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0Owog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5l
cl9jbGFzc19pbml0KFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2xhc3MqIHJl
cXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdl
YmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdG9yOwogICAg
IGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlz
dF9saXN0ZW5lcl9maW5hbGl6ZTsKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVj
dENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRl
KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xp
c3RlbmVyX2luaXQoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIHJlcXVlc3Qp
CitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9p
bml0KFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBzZWxmKQogeworICAgIFdl
YktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9J
TlNUQU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9NRURJQV9RVUVS
WV9MSVNUX0xJU1RFTkVSLCBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZh
dGUpOworICAgIHNlbGYtPnByaXYgPSBwcml2OworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCmluZGV4IDkw
NjExMjcuLjk5ZWYwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMzQsOCArMzQsMTIgQEAgR19CRUdJTl9E
RUNMUwogI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5F
Ul9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksICBXRUJLSVRf
VFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSKSkKICNkZWZpbmUgV0VCS0lU
X0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTUVESUFf
UVVFUllfTElTVF9MSVNURU5FUiwgV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
bGFzcykpCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByaXZhdGUgV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlOwor
CiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKICAgICBXZWJL
aXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgICAgV2ViS2l0RE9NVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJQcml2YXRlICpwcml2OwogfTsKIAogc3RydWN0IF9XZWJLaXRET01UZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNsYXNzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCAzZGZjZjNiLi5jMTJhYmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCkBAIC0zNSw2ICszNSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKK3N0cnVjdCBfV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3JQ
cml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3I+IGNvcmVP
YmplY3Q7Cit9OworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViS2l0RE9NVGVzdE5hbWVkQ29u
c3RydWN0b3IqIGtpdChXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvciogb2JqKQpAQCAtNTAs
MjEgKzU0LDEyIEBAIFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yKiBraXQoV2ViQ29yZTo6
VGVzdE5hbWVkQ29uc3RydWN0b3IqIG9iaikKIFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9y
KiBjb3JlKFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yKiByZXF1ZXN0KQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwotCi0gICAgV2ViQ29yZTo6VGVzdE5hbWVk
Q29uc3RydWN0b3IqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TmFtZWRD
b25zdHJ1Y3Rvcio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIHJldHVybiBjb3Jl
T2JqZWN0OworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5jb3JlT2JqZWN0LmdldCgpOwogfQog
CiBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvciogd3JhcFRlc3ROYW1lZENvbnN0cnVjdG9y
KFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSBy
YXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3Rv
cmUgYSBDKysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVy
ZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAg
IGNvcmVPYmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9OQU1FRF9D
T05TVFJVQ1RPUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfTkFNRURfQ09OU1RS
VUNUT1IsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtNzQsMjkg
KzY5LDM2IEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IsIHdl
YmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3RvciwKIAogc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAg
ICBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X1RFU1RfTkFNRURfQ09OU1RSVUNUT1Iob2JqZWN0KS0+cHJpdjsKIAotICAgIFdlYktpdERPTU9i
amVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAgICAKLSAgICBp
ZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3ROYW1lZENv
bnN0cnVjdG9yKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5hbWVkQ29u
c3RydWN0b3IqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0
Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKIAotICAgICAgICBXZWJLaXQ6
OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3Qt
PmRlcmVmKCk7CisgICAgcHJpdi0+fldlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0
ZSgpOworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rv
cl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQogCi0gICAgICAgIGRvbU9iamVj
dC0+Y29yZU9iamVjdCA9IDA7Ci0gICAgfQorc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGVz
dF9uYW1lZF9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVy
dGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9t
X3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwg
Y29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKIAorICAgIFdl
YktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVT
VF9OQU1FRF9DT05TVFJVQ1RPUihvYmplY3QpLT5wcml2OworICAgIHByaXYtPmNvcmVPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KFdFQktJVF9ET01f
T0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOwogCi0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X25hbWVkX2NvbnN0cnVjdG9yX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0
b3JDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0
cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yOwog
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3Ry
dWN0b3JfZmluYWxpemU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFz
cywgc2l6ZW9mKFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSkpOwogfQogCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfaW5pdChXZWJLaXRE
T01UZXN0TmFtZWRDb25zdHJ1Y3RvciogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9pbml0KFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9y
KiBzZWxmKQogeworICAgIFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSogcHJp
diA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShzZWxmLCBXRUJLSVRfVFlQRV9ET01fVEVT
VF9OQU1FRF9DT05TVFJVQ1RPUiwgV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3JQcml2YXRl
KTsKKyAgICBzZWxmLT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RO
YW1lZENvbnN0cnVjdG9yUHJpdmF0ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBjYzA1YmVmLi5iYTE2YzExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAg
LTM0LDggKzM0LDEyIEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNU
X05BTUVEX0NPTlNUUlVDVE9SX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX05BTUVEX0NPTlNUUlVDVE9SKSkKICNkZWZp
bmUgV0VCS0lUX0RPTV9URVNUX05BTUVEX0NPTlNUUlVDVE9SX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX05BTUVE
X0NPTlNUUlVDVE9SLCBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvckNsYXNzKSkKIAordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSBXZWJLaXRE
T01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZhdGU7CisKIHN0cnVjdCBfV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IgewogICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisK
KyAgICBXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUgKnByaXY7CiB9OwogCiBz
dHJ1Y3QgX1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yQ2xhc3MgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE5vZGUuY3BwCmluZGV4IDhkNzk5N2MuLjJkNmU2ODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Tm9kZS5jcHAKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorc3RydWN0IF9XZWJLaXRE
T01UZXN0Tm9kZVByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0Tm9kZT4gY29yZU9i
amVjdDsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01UZXN0Tm9kZSoga2l0
KFdlYkNvcmU6OlRlc3ROb2RlKiBvYmopCkBAIC01MywyMSArNTcsMTIgQEAgV2ViS2l0RE9NVGVz
dE5vZGUqIGtpdChXZWJDb3JlOjpUZXN0Tm9kZSogb2JqKQogV2ViQ29yZTo6VGVzdE5vZGUqIGNv
cmUoV2ViS2l0RE9NVGVzdE5vZGUqIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwocmVxdWVzdCwgMCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29yZU9iamVjdCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCkt
PmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwot
Ci0gICAgcmV0dXJuIGNvcmVPYmplY3Q7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVP
YmplY3QuZ2V0KCk7CiB9CiAKIFdlYktpdERPTVRlc3ROb2RlKiB3cmFwVGVzdE5vZGUoV2ViQ29y
ZTo6VGVzdE5vZGUqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29y
ZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEg
QysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAg
ICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXpl
KCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgY29yZU9iamVjdC0+cmVmKCk7
Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX05PREUoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0RPTV9URVNUX05PREUsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0K
IApAQCAtNzUsMTEgKzcwLDggQEAgV2ViS2l0RE9NVGVzdE5vZGUqIHdyYXBUZXN0Tm9kZShXZWJD
b3JlOjpUZXN0Tm9kZSogY29yZU9iamVjdCkKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X25vZGVfZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0
RE9NRXZlbnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKIHsKLSAgICBXZWJDb3JlOjpFdmVudCog
Y29yZUV2ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKLSAgICBXZWJDb3JlOjpUZXN0Tm9kZSog
Y29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9P
QkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7Ci0KICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBjb3JlVGFyZ2V0LT5kaXNwYXRjaEV2ZW50KGNvcmVFdmVudCwgZWMpOwor
ICAgIFdFQktJVF9ET01fVEVTVF9OT0RFKHRhcmdldCktPnByaXYtPmNvcmVPYmplY3QtPmRpc3Bh
dGNoRXZlbnQoV2ViS2l0Ojpjb3JlKGV2ZW50KSwgZWMpOwogICAgIGlmIChlYykgewogICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOwogICAg
ICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJL
SVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUsIGRlc2NyaXB0aW9uLm5hbWUpOwpAQCAtODgsMTMg
KzgwLDEzIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ub2RlX2Rpc3BhdGNoX2V2ZW50
KFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIFdlCiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRfZG9tX3Rlc3Rfbm9kZV9hZGRfZXZlbnRfbGlzdGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQq
IHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1lLCBHQ2FsbGJhY2sgaGFuZGxlciwgZ2Jvb2xl
YW4gYnViYmxlLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBXZWJDb3JlOjpUZXN0Tm9kZSog
Y29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9P
QkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNvcmVU
YXJnZXQgPSBXRUJLSVRfRE9NX1RFU1RfTk9ERSh0YXJnZXQpLT5wcml2LT5jb3JlT2JqZWN0Lmdl
dCgpOwogICAgIHJldHVybiBXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6YWRkRXZlbnRM
aXN0ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIs
IGJ1YmJsZSwgdXNlckRhdGEpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0
X25vZGVfcmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQs
IGNvbnN0IGNoYXIqIGV2ZW50TmFtZSwgR0NhbGxiYWNrIGhhbmRsZXIsIGdib29sZWFuIGJ1YmJs
ZSkKIHsKLSAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29yZVRhcmdldCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9iamVjdCk7
CisgICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNvcmVUYXJnZXQgPSBXRUJLSVRfRE9NX1RFU1RfTk9E
RSh0YXJnZXQpLT5wcml2LT5jb3JlT2JqZWN0LmdldCgpOwogICAgIHJldHVybiBXZWJDb3JlOjpH
T2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09CSkVDVCh0YXJnZXQp
LCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIGJ1YmJsZSk7CiB9CiAKQEAgLTEwOSwy
OSArMTAxLDM2IEBAIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERPTVRlc3ROb2RlLCB3
ZWJraXRfZG9tX3Rlc3Rfbm9kZSwgV0VCS0lUX1RZUEVfRE9NCiAKIHN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9ub2RlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICBXZWJLaXRE
T01UZXN0Tm9kZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfTk9ERShvYmplY3QpLT5w
cml2OwogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVD
VChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAg
ICAgV2ViQ29yZTo6VGVzdE5vZGUqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXN0Tm9kZSo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCi0gICAgICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+
ZGVyZWYoKTsKKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdE5vZGVQcml2YXRlKCk7CisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X25vZGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKK30KIAotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0K
K3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9jb25zdHJ1Y3RvcihHVHlwZSB0
eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJh
bSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVD
VF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0
eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwogCisg
ICAgV2ViS2l0RE9NVGVzdE5vZGVQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX05PREUo
b2JqZWN0KS0+cHJpdjsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6VGVzdE5vZGUqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKIAot
ICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9ub2RlX3BhcmVudF9jbGFzcyktPmZp
bmFsaXplKG9iamVjdCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X25vZGVfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0Tm9kZUNsYXNzKiByZXF1
ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9D
TEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX3Rlc3Rfbm9kZV9jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0X2RvbV90ZXN0X25vZGVfZmluYWxpemU7CisgICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3ROb2RlUHJpdmF0ZSkpOwog
fQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9pbml0KFdlYktpdERPTVRlc3RO
b2RlKiByZXF1ZXN0KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfaW5pdChXZWJL
aXRET01UZXN0Tm9kZSogc2VsZikKIHsKKyAgICBXZWJLaXRET01UZXN0Tm9kZVByaXZhdGUqIHBy
aXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2VsZiwgV0VCS0lUX1RZUEVfRE9NX1RF
U1RfTk9ERSwgV2ViS2l0RE9NVGVzdE5vZGVQcml2YXRlKTsKKyAgICBzZWxmLT5wcml2ID0gcHJp
djsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3ROb2RlUHJpdmF0ZSgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE5vZGUuaAppbmRleCA1NTJmZDhkLi4wODU0MmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmgKQEAgLTM0LDggKzM0LDEyIEBAIEdfQkVHSU5fREVD
TFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX05PREVfQ0xBU1Moa2xhc3MpIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTk9ERSkpCiAj
ZGVmaW5lIFdFQktJVF9ET01fVEVTVF9OT0RFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RB
TkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX05PREUsIFdlYktpdERP
TVRlc3ROb2RlQ2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdE5vZGVQcml2
YXRlIFdlYktpdERPTVRlc3ROb2RlUHJpdmF0ZTsKKwogc3RydWN0IF9XZWJLaXRET01UZXN0Tm9k
ZSB7CiAgICAgV2ViS2l0RE9NTm9kZSBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJLaXRET01U
ZXN0Tm9kZVByaXZhdGUgKnByaXY7CiB9OwogCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3ROb2RlQ2xh
c3MgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCBjM2Y2MjA5Li4wM2U5
ZTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtNjQsNiArNjQsMTAg
QEAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitz
dHJ1Y3QgX1dlYktpdERPTVRlc3RPYmpQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVz
dE9iaj4gY29yZU9iamVjdDsKK307CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01U
ZXN0T2JqKiBraXQoV2ViQ29yZTo6VGVzdE9iaiogb2JqKQpAQCAtNzksMjEgKzgzLDEyIEBAIFdl
YktpdERPTVRlc3RPYmoqIGtpdChXZWJDb3JlOjpUZXN0T2JqKiBvYmopCiBXZWJDb3JlOjpUZXN0
T2JqKiBjb3JlKFdlYktpdERPTVRlc3RPYmoqIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwocmVxdWVzdCwgMCk7Ci0KLSAgICBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVl
c3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAw
KTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5j
b3JlT2JqZWN0LmdldCgpOwogfQogCiBXZWJLaXRET01UZXN0T2JqKiB3cmFwVGVzdE9iaihXZWJD
b3JlOjpUZXN0T2JqKiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNv
cmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBh
IEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0g
ICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6
ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNvcmVPYmplY3QtPnJlZigp
OwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9PQkooZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX0RPTV9URVNUX09CSiwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQog
CkBAIC0xNTMsMTkgKzE0OCwxMSBAQCBlbnVtIHsKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X29ial9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdE9i
alByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfT0JKKG9iamVjdCktPnByaXY7CiAKLSAg
ICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7
Ci0gICAgCi0gICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3Jl
OjpUZXN0T2JqKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+KGRv
bU9iamVjdC0+Y29yZU9iamVjdCk7Ci0KLSAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6
Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwotCi0gICAg
ICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7Ci0gICAgfQotCisgICAgV2ViS2l0OjpET01P
YmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCisgICAgcHJpdi0+
fldlYktpdERPTVRlc3RPYmpQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV90ZXN0X29ial9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC01Mzgs
MTAgKzUyNSwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsCiAgICAgfQogfQogCitzdGF0aWMg
R09iamVjdCogd2Via2l0X2RvbV90ZXN0X29ial9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWlu
dCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3Ry
dWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0
cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAgICBXZWJLaXRE
T01UZXN0T2JqUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9PQkoob2JqZWN0KS0+cHJp
djsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+
KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworCisgICAgcmV0dXJuIG9i
amVjdDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KFdl
YktpdERPTVRlc3RPYmpDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyog
Z29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0
Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X29ial9jb25zdHJ1Y3RvcjsKICAg
ICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X29ial9maW5hbGl6ZTsK
KyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0
RE9NVGVzdE9ialByaXZhdGUpKTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5OwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3By
b3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHk7CiAKQEAgLTkwOSw4ICs5
MDgsMTEgQEAgR19NQVhMT05HLCAvKiBtYXggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfaW5pdChXZWJLaXRET01UZXN0
T2JqKiByZXF1ZXN0KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpCiB7CisgICAgV2ViS2l0RE9NVGVzdE9ialByaXZhdGUqIHByaXYg
PSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc2VsZiwgV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
T0JKLCBXZWJLaXRET01UZXN0T2JqUHJpdmF0ZSk7CisgICAgc2VsZi0+cHJpdiA9IHByaXY7Cisg
ICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0T2JqUHJpdmF0ZSgpOwogfQogCiB2b2lkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggMTc2ZDViMC4uNmEwNGNmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtMzQsOCArMzQsMTIgQEAgR19CRUdJTl9ERUNMUwog
I2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfT0JKX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNL
X0NMQVNTX1RZUEUoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSikpCiAjZGVmaW5l
IFdFQktJVF9ET01fVEVTVF9PQkpfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VU
X0NMQVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCBXZWJLaXRET01UZXN0T2Jq
Q2xhc3MpKQogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdE9ialByaXZhdGUgV2ViS2l0
RE9NVGVzdE9ialByaXZhdGU7CisKIHN0cnVjdCBfV2ViS2l0RE9NVGVzdE9iaiB7CiAgICAgV2Vi
S2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAgIFdlYktpdERPTVRlc3RPYmpQcml2
YXRlICpwcml2OwogfTsKIAogc3RydWN0IF9XZWJLaXRET01UZXN0T2JqQ2xhc3MgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA2OTQ4OTA4Li40MDIxNTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNDMsNiArNDMsMTIgQEAKICNpbmNsdWRlIDx3dGYv
R2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCitzdHJ1Y3QgX1dlYktpdERPTVRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlIHsKKyNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IGNvcmVPYmplY3Q7CisjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorfTsKKwogI2lmIEVOQUJMRShD
b25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC02MCwyMSArNjYsMTIgQEAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSoga2l0KFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmEKIFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcmVxdWVzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChyZXF1ZXN0LCAwKTsKLQotICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNv
cmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0g
ICAgcmV0dXJuIGNvcmVPYmplY3Q7CisgICAgcmV0dXJuIHJlcXVlc3QtPnByaXYtPmNvcmVPYmpl
Y3QuZ2V0KCk7CiB9CiAKIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UqIHdyYXBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJh
dGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9y
ZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJl
LiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAg
Y29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX1NFUklBTEla
RURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RF
U1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFLCAiY29yZS1vYmplY3QiLCBjb3Jl
T2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTk1LDE5ICs5MiwxMSBAQCBlbnVtIHsKIAogc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfU0VSSUFM
SVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKG9iamVjdCktPnByaXY7CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotICAgIFdlYktpdERPTU9iamVjdCogZG9t
T2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAgICAKLSAgICBpZiAoZG9tT2Jq
ZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQot
ICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAg
ICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0KLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0
ID0gMDsKLSAgICB9CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNv
cmVPYmplY3QuZ2V0KCkpOwogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMikKLQorICAgIHByaXYtPn5XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlUHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVz
dF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKIH0KIApAQCAtMTc1LDEwICsxNjQsMjIgQEAgc3RhdGljIHZvaWQgd2Via2l0
X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9nZXRfcHJvcGVydHko
R09iamUKICAgICB9CiB9CiAKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFs
aXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50
IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlv
bjIpCisgICAgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZh
dGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJG
QUNFKG9iamVjdCktPnByaXY7CisgICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihXRUJLSVRfRE9NX09C
SkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCisgICAgcmV0dXJuIG9iamVjdDsKK30KKwogc3RhdGljIHZv
aWQgd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9jbGFz
c19pbml0KFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDbGFzcyog
cmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpF
Q1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0g
d2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9jb25zdHJ1
Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X3Nlcmlh
bGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9maW5hbGl6ZTsKKyAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGUpKTsKICAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9w
ZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5OwogCiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0Q2xhc3MsCkBAIC0yMTgsOCArMjE5LDExIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRECiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2luaXQoV2ViS2l0RE9NVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcmVxdWVzdCkKK3N0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfaW5pdChXZWJLaXRE
T01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmKQogeworICAgIFdlYktp
dERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNlbGYsIFdFQktJVF9UWVBFX0RPTV9URVNUX1NFUklB
TElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRSwgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByaXZhdGUpOworICAgIHNlbGYtPnByaXYgPSBwcml2OworICAgIG5l
dyAocHJpdikgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZh
dGUoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDcyMzJmZTMu
LjM4NTRkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTM0LDggKzM0LDEyIEBA
IEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX1NFUklBTElaRURfU0NS
SVBUX1ZBTFVFX0lOVEVSRkFDRV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9J
TlRFUkZBQ0UpKQogI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFM
VUVfSU5URVJGQUNFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygo
b2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVS
RkFDRSwgV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNsYXNzKSkK
IAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcml2YXRlIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cml2YXRlOworCiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgewogICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgICBXZWJL
aXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0ZSAqcHJpdjsKIH07
CiAKIHN0cnVjdCBfV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNs
YXNzIHsK
</data>
<flag name="review"
          id="186290"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177776</attachid>
            <date>2012-12-05 09:25:16 -0800</date>
            <delta_ts>2012-12-09 07:49:52 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk-dom-refptr.diff</filename>
            <type>text/plain</type>
            <size>78408</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNDFkMWMwLi4yMDk5Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQ3
IEBACiAyMDEyLTEyLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAorICAgICAgICBbR1RLXSBVc2UgYSBwcml2YXRlIHN0cnVjdCBhbmQgcGxhY2VtZW50IG5l
dyBzeW50YXggaW4gR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTA3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IGFsbG93cyB0byB1c2UgUmVmUHRyIGZvciB0aGUg
d3JhcHBlZCBvYmplY3QgYW5kIGl0IHNpbXBsaWZpZXMKKyAgICAgICAgdGhlIGNvZGUuIE9ubHkg
dGhlIGNsYXNzZXMgZGVyaXZpbmcgZnJvbSBXZWJLaXRET01PYmplY3Qga2VlcCBhCisgICAgICAg
IHJlZmVyZW5jZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgaW4gYSBwcml2YXRlIHN0cnVjdC4gVGhl
IHdyYXBwZWQKKyAgICAgICAgb2JqZWN0IGlzIGFkZGVkIHRvIHRoZSBjYWNoZSBpbiBHT2JqZWN0
Q2xhc3M6OmNvbnN0cnVjdG9yKCkgYW5kCisgICAgICAgIHJlbW92ZWQgaW4gR09iamVjdENsYXNz
OjpmaW5hbGl6ZSgpLgorCisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5k
aW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgIChXZWJL
aXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OndyYXBFdmVudFRhcmdldCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKyAgICAgICAgKEdldFBh
cmVudEltcGxDbGFzc05hbWUpOgorICAgICAgICAoR2VuZXJhdGVQcm9wZXJ0aWVzKToKKyAgICAg
ICAgKEdlbmVyYXRlQ0ZpbGUpOgorICAgICAgICAoR2VuZXJhdGUpOgorICAgICAgICAoV3JpdGVE
YXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01G
bG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0
Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcEZsb2F0NjRBcnJheSk6CisgICAgICAgICh3
ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9jbGFzc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAg
ICAgICAgKF9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0UHJpdmF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3
cmFwVGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfYWN0aXZl
X2RvbV9vYmplY3RfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9k
b21fb2JqZWN0X2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9hY3RpdmVf
ZG9tX29iamVjdF9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9hY3RpdmVf
ZG9tX29iamVjdF9pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3RDYWxs
YmFja1ByaXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpj
b3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDYWxsYmFjayk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19pbml0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdl
dHRlclByaXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpj
b3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RDdXN0b21OYW1lZEdldHRlcik6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9jb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2luaXQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKF9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclBy
aXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToK
KyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfY29uc3RydWN0b3IpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdldC5jcHA6CisgICAg
ICAgIChfV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVz
dEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfZmlu
YWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9jb25zdHJ1Y3Rv
cik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9pbml0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmNwcDoK
KyAgICAgICAgKF9XZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFw
VGVzdEV4Y2VwdGlvbik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX2ZpbmFs
aXplKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fY29uc3RydWN0b3IpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jbGFzc19pbml0KToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25faW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChf
V2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUpOgorICAgICAgICAoV2ViS2l0OjpraXQpOgor
ICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RJbnRlcmZh
Y2UpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9maW5hbGl6ZSk6CisgICAg
ICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3RfaW50ZXJmYWNlX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KF9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUpOgorICAgICAgICAo
V2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktpdDo6
d3JhcFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NvbnN0cnVjdG9yKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2NsYXNzX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfaW5pdCk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVj
dG9yUHJpdmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJLaXQ6OmNv
cmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2ZpbmFsaXplKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3Rvcik6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfY2xhc3NfaW5pdCk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfaW5pdCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5vZGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpraXQpOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKFdlYktp
dDo6d3JhcFRlc3ROb2RlKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ub2RlX2NsYXNzX2lu
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouY3BwOgorICAgICAgICAoX1dlYktpdERPTVRlc3RPYmpQcml2YXRlKToKKyAgICAgICAg
KFdlYktpdDo6a2l0KToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6
OndyYXBUZXN0T2JqKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZmluYWxpemUpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jb25zdHJ1Y3Rvcik6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29i
al9pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChfV2ViS2l0RE9NVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKToKKyAgICAgICAgKFdlYktpdDo6a2l0KToK
KyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OndyYXBUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9j
b25zdHJ1Y3RvcnNfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X292ZXJsb2Fk
ZWRfY29uc3RydWN0b3JzX2NvbnN0cnVjdG9yKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9v
dmVybG9hZGVkX2NvbnN0cnVjdG9yc19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19pbml0KToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKF9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlUHJpdmF0ZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgIChXZWJL
aXQ6OmNvcmUpOgorICAgICAgICAoV2ViS2l0Ojp3cmFwVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRf
dmFsdWVfaW50ZXJmYWNlX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9zZXJp
YWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfY29uc3RydWN0b3IpOgorICAgICAgICAod2Vi
a2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRl
cmZhY2VfaW5pdCk6CisKKzIwMTItMTItMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCiAgICAgICAgIEZsZXggaXRlbSBhdXRvIG1hcmdpbnMgaW4gdGhlIGNy
b3NzIGRpcmVjdGlvbiBzaG91bGQgc2FmZSBjZW50ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzkxOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcAppbmRleCA2OWJkZDhiLi5h
OGE4MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dERPTUJpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIGdwb2ludGVyIGNyZWF0
ZVdyYXBwZXIoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJu
IERPTU9iamVjdENhY2hlOjpwdXQobm9kZSwgd3JhcHBlZE5vZGUpOworICAgIHJldHVybiB3cmFw
cGVkTm9kZTsKIH0KIAogV2ViS2l0RE9NTm9kZSoga2l0KE5vZGUqIG5vZGUpCkBAIC05Nyw3ICs5
Nyw3IEBAIFdlYktpdERPTUVsZW1lbnQqIGtpdChFbGVtZW50KiBlbGVtZW50KQogICAgIGVsc2UK
ICAgICAgICAgd3JhcHBlZEVsZW1lbnQgPSB3cmFwRWxlbWVudChlbGVtZW50KTsKIAotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01FbGVtZW50Kj4oRE9NT2JqZWN0Q2FjaGU6OnB1dChl
bGVtZW50LCB3cmFwcGVkRWxlbWVudCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRE
T01FbGVtZW50Kj4od3JhcHBlZEVsZW1lbnQpOwogfQogCiBXZWJLaXRET01FdmVudCoga2l0KEV2
ZW50KiBldmVudCkKQEAgLTExOCw3ICsxMTgsNyBAQCBXZWJLaXRET01FdmVudCoga2l0KEV2ZW50
KiBldmVudCkKICAgICBlbHNlCiAgICAgICAgIHdyYXBwZWRFdmVudCA9IHdyYXBFdmVudChldmVu
dCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NRXZlbnQqPihET01PYmplY3RD
YWNoZTo6cHV0KGV2ZW50LCB3cmFwcGVkRXZlbnQpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViS2l0RE9NRXZlbnQqPih3cmFwcGVkRXZlbnQpOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIgd3Jh
cEV2ZW50VGFyZ2V0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCkBAIC0xMzUsNyArMTM1LDcgQEAgc3Rh
dGljIGdwb2ludGVyIHdyYXBFdmVudFRhcmdldChFdmVudFRhcmdldCogdGFyZ2V0KQogICAgICAg
ICB3cmFwcGVkVGFyZ2V0ID0gd3JhcERPTVdpbmRvdyh3aW5kb3cpOwogICAgIH0KIAotICAgIHJl
dHVybiBET01PYmplY3RDYWNoZTo6cHV0KHRhcmdldCwgd3JhcHBlZFRhcmdldCk7CisgICAgcmV0
dXJuIHdyYXBwZWRUYXJnZXQ7CiB9CiAKIFdlYktpdERPTUV2ZW50VGFyZ2V0KiBraXQoV2ViQ29y
ZTo6RXZlbnRUYXJnZXQqIG9iaikKQEAgLTE0NSw3ICsxNDUsNyBAQCBXZWJLaXRET01FdmVudFRh
cmdldCoga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBvYmopCiAgICAgaWYgKGdwb2ludGVyIHJl
dCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdERPTUV2ZW50VGFyZ2V0Kj4ocmV0KTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJLaXRET01FdmVudFRhcmdldCo+KERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6Ondy
YXBFdmVudFRhcmdldChvYmopKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTUV2
ZW50VGFyZ2V0Kj4od3JhcEV2ZW50VGFyZ2V0KG9iaikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IDViMmJiYTcuLmE1M2QwMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bQpAQCAtNzgsNiArNzgsMTMgQEAgc3ViIEdldFBhcmVudENsYXNzTmFtZSB7CiAgICAgcmV0dXJu
ICJXZWJLaXRET00iIC4gJGludGVyZmFjZS0+cGFyZW50cygwKTsKIH0KIAorc3ViIEdldFBhcmVu
dEltcGxDbGFzc05hbWUgeworICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKworICAgIHJldHVy
biAiT2JqZWN0IiBpZiBAeyRpbnRlcmZhY2UtPnBhcmVudHN9IGVxIDA7CisgICAgcmV0dXJuICRp
bnRlcmZhY2UtPnBhcmVudHMoMCk7Cit9CisKICMgRnJvbSBTdHJpbmc6OkNhbWVsQ2FzZSAwLjAx
CiBzdWIgY2FtZWxpemUKIHsKQEAgLTU0MCw2ICs1NDcsNyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0
aWVzIHsKIAogICAgIG15ICRjbHNDYXBzID0gc3Vic3RyKENsYXNzTmFtZVRvR09iamVjdFR5cGUo
JGNsYXNzTmFtZSksIDEyKTsKICAgICBteSAkbG93ZXJDYXNlSWZhY2VOYW1lID0gIndlYmtpdF9k
b21fIiAuIChGaXhVcERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1lKSkp
OworICAgIG15ICRwYXJlbnRJbXBsQ2xhc3NOYW1lID0gR2V0UGFyZW50SW1wbENsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKIAogICAgIG15ICRjb25kaXRpb25HdWFyZFN0YXJ0ID0gIiI7CiAgICAgbXkg
JGNvbmRpdGlvbkd1YXJkRW5kID0gIiI7CkBAIC02MzgsMjcgKzY0NiwyMSBAQCBFT0YKICAgICAj
IERvIG5vdCBpbnNlcnQgZXh0cmEgc3BhY2VzIHdoZW4gaW50ZXJwb2xhdGluZyBhcnJheSB2YXJp
YWJsZXMKICAgICAkIiA9ICIiOwogCi0gICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CisgICAg
aWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7CisgICAgICAgICRpbXBsQ29u
dGVudCA9IDw8ICJFT0YiOwogc3RhdGljIHZvaWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X2ZpbmFs
aXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICAke2NsYXNzTmFtZX1Qcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0dFVF9QUklWQVRFKG9iamVjdCk7CiAkY29uZGl0aW9uR3Vh
cmRTdGFydAotICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpF
Q1Qob2JqZWN0KTsKLSAgICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAg
ICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9Kj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQotICAg
ICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAg
IGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0KLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0g
MDsKLSAgICB9CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVP
YmplY3QuZ2V0KCkpOwogJGNvbmRpdGlvbkd1YXJkRW5kCi0KKyAgICBwcml2LT5+JHtjbGFzc05h
bWV9UHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKCR7bG93ZXJDYXNlSWZhY2VOYW1lfV9w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCiBFT0YKLSAgICBwdXNoKEBjQm9k
eVByb3BlcnRpZXMsICRpbXBsQ29udGVudCk7CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGll
cywgJGltcGxDb250ZW50KTsKKyAgICB9CiAKICAgICBpZiAoJG51bVByb3BlcnRpZXMgPiAwKSB7
CiAgICAgICAgIGlmIChzY2FsYXIgQHdyaXRlYWJsZVByb3BlcnRpZXMgPiAwKSB7CkBAIC02ODYs
MzYgKzY4OCw3MiBAQCBFT0YKICAgICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAkaW1wbENv
bnRlbnQpOwogICAgIH0KIAorICAgIGlmICgkcGFyZW50SW1wbENsYXNzTmFtZSBlcSAiT2JqZWN0
IikgeworICAgICAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKK3N0YXRpYyBHT2JqZWN0KiAk
e2xvd2VyQ2FzZUlmYWNlTmFtZX1fY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3Ry
dWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3Bl
cnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1MoJHtsb3dlckNh
c2VJZmFjZU5hbWV9X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFBy
b3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CiskY29uZGl0aW9uR3VhcmRTdGFy
dAorICAgICR7Y2xhc3NOYW1lfVByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc31f
R0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNv
cmVPYmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpLCBvYmplY3QpOworJGNvbmRpdGlvbkd1YXJkRW5kCisgICAgcmV0dXJuIG9iamVj
dDsKK30KKworRU9GCisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgJGltcGxDb250ZW50
KTsKKyAgICB9CisKICAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKIHN0YXRpYyB2b2lkICR7
bG93ZXJDYXNlSWZhY2VOYW1lfV9jbGFzc19pbml0KCR7Y2xhc3NOYW1lfUNsYXNzKiByZXF1ZXN0
Q2xhc3MpCiB7Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSAke2xvd2VyQ2Fz
ZUlmYWNlTmFtZX1fZmluYWxpemU7CiBFT0YKICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICRp
bXBsQ29udGVudCk7CiAKLSAgICBpZiAoc2NhbGFyIEB0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcnMg
PiAwKSB7Ci0gICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBnb2JqZWN0Q2xhc3Mt
PmNvbnN0cnVjdGVkID0gJHtsb3dlckNhc2VJZmFjZU5hbWV9X2NvbnN0cnVjdGVkO1xuIik7Ci0g
ICAgfQorICAgIGlmICgkcGFyZW50SW1wbENsYXNzTmFtZSBlcSAiT2JqZWN0IiB8fCBzY2FsYXIg
QHR4dEluc3RhbGxFdmVudExpc3RlbmVycyA+IDAgfHwgJG51bVByb3BlcnRpZXMgPiAwKSB7Cisg
ICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7XG4iKTsKIAotICAgIGlmICgkbnVt
UHJvcGVydGllcyA+IDApIHsKLSAgICAgICAgaWYgKHNjYWxhciBAd3JpdGVhYmxlUHJvcGVydGll
cyA+IDApIHsKLSAgICAgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBnb2JqZWN0
Q2xhc3MtPnNldF9wcm9wZXJ0eSA9ICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9zZXRfcHJvcGVydHk7
XG4iKTsKKyAgICAgICAgaWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3QiKSB7Cisg
ICAgICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAgZ190eXBlX2NsYXNzX2FkZF9w
cml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKCR7Y2xhc3NOYW1lfVByaXZhdGUpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIGdvYmplY3RDbGFzcy0+Y29u
c3RydWN0b3IgPSAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fY29uc3RydWN0b3I7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gJHtsb3dlckNhc2VJZmFjZU5hbWV9X2ZpbmFsaXplO1xuIik7CiAgICAgICAgIH0KLSAgICAg
ICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5
ID0gJHtsb3dlckNhc2VJZmFjZU5hbWV9X2dldF9wcm9wZXJ0eTtcbiIpOwotICAgICAgICBwdXNo
KEBjQm9keVByb3BlcnRpZXMsICJcbiIpOwotICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMs
IEB0eHRJbnN0YWxsUHJvcHMpOwotICAgIH0KIAotICAgIGlmIChzY2FsYXIgQHR4dEluc3RhbGxT
aWduYWxzID4gMCkgewotICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICJcbiIpOwotICAg
ICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsIEB0eHRJbnN0YWxsU2lnbmFscyk7CisgICAgICAg
IGlmIChzY2FsYXIgQHR4dEluc3RhbGxFdmVudExpc3RlbmVycyA+IDApIHsKKyAgICAgICAgICAg
IHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdGVkID0g
JHtsb3dlckNhc2VJZmFjZU5hbWV9X2NvbnN0cnVjdGVkO1xuIik7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoJG51bVByb3BlcnRpZXMgPiAwKSB7CisgICAgICAgICAgICBpZiAoc2NhbGFyIEB3
cml0ZWFibGVQcm9wZXJ0aWVzID4gMCkgeworICAgICAgICAgICAgICAgIHB1c2goQGNCb2R5UHJv
cGVydGllcywgIiAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9ICR7bG93ZXJDYXNlSWZh
Y2VOYW1lfV9zZXRfcHJvcGVydHk7XG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1
c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9ICR7
bG93ZXJDYXNlSWZhY2VOYW1lfV9nZXRfcHJvcGVydHk7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGNCb2R5UHJvcGVydGllcywgIlxuIik7CisgICAgICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRp
ZXMsIEB0eHRJbnN0YWxsUHJvcHMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNjYWxhciBA
dHh0SW5zdGFsbFNpZ25hbHMgPiAwKSB7CisgICAgICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRp
ZXMsICJcbiIpOworICAgICAgICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCBAdHh0SW5zdGFs
bFNpZ25hbHMpOworICAgICAgICB9CiAgICAgfQogICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0Yi
OwogfQogCiBzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1faW5pdCgke2NsYXNzTmFt
ZX0qIHJlcXVlc3QpCiB7CitFT0YKKyAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICRpbXBsQ29u
dGVudCk7CisKKyAgICBpZiAoJHBhcmVudEltcGxDbGFzc05hbWUgZXEgIk9iamVjdCIpIHsKKyAg
ICAgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CisgICAgJHtjbGFzc05hbWV9UHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fJHtjbHNDYXBzfV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBu
ZXcgKHByaXYpICR7Y2xhc3NOYW1lfVByaXZhdGUoKTsKK0VPRgorICAgICAgICBwdXNoKEBjQm9k
eVByb3BlcnRpZXMsICRpbXBsQ29udGVudCk7CisgICAgfQorICAgICRpbXBsQ29udGVudCA9IDw8
ICJFT0YiOwogfQogCiBFT0YKQEAgLTExOTMsNiArMTIzMSwxNyBAQCBzdWIgR2VuZXJhdGVDRmls
ZSB7CiAKICAgICBteSAkY2xzQ2FwcyA9IHVjKEZpeFVwRGVjYW1lbGl6ZWROYW1lKGRlY2FtZWxp
emUoJGludGVyZmFjZU5hbWUpKSk7CiAgICAgbXkgJGxvd2VyQ2FzZUlmYWNlTmFtZSA9ICJ3ZWJr
aXRfZG9tXyIgLiBGaXhVcERlY2FtZWxpemVkTmFtZShkZWNhbWVsaXplKCRpbnRlcmZhY2VOYW1l
KSk7CisgICAgbXkgJHBhcmVudEltcGxDbGFzc05hbWUgPSBHZXRQYXJlbnRJbXBsQ2xhc3NOYW1l
KCRpbnRlcmZhY2UpOworCisgICAgaWYgKCRwYXJlbnRJbXBsQ2xhc3NOYW1lIGVxICJPYmplY3Qi
KSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UpOworICAgICAgICBwdXNoKEBjU3RydWN0
UHJpdiwgIiNkZWZpbmUgV0VCS0lUX0RPTV8ke2Nsc0NhcHN9X0dFVF9QUklWQVRFKG9iaikgR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX1RZUEVfRE9NXyR7Y2xzQ2Fwc30s
ICR7Y2xhc3NOYW1lfVByaXZhdGUpXG5cbiIpOworICAgICAgICBwdXNoKEBjU3RydWN0UHJpdiwg
InR5cGVkZWYgc3RydWN0IF8ke2NsYXNzTmFtZX1Qcml2YXRlIHtcbiIpOworICAgICAgICBwdXNo
KEBjU3RydWN0UHJpdiwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOworICAgICAgICBwdXNoKEBjU3RydWN0UHJpdiwgIiAgICBSZWZQdHI8V2ViQ29y
ZTo6JHtpbnRlcmZhY2VOYW1lfT4gY29yZU9iamVjdDtcbiIpOworICAgICAgICBwdXNoKEBjU3Ry
dWN0UHJpdiwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOworICAgICAgICBwdXNoKEBjU3RydWN0UHJpdiwgIn0gJHtjbGFzc05hbWV9UHJp
dmF0ZTtcblxuIik7CisgICAgfQogCiAgICAgJGltcGxDb250ZW50ID0gPDwgIkVPRiI7CiAke2Rl
ZmluZVR5cGVNYWNyb30oJHtjbGFzc05hbWV9LCAke2xvd2VyQ2FzZUlmYWNlTmFtZX0sICR7cGFy
ZW50R09ialR5cGV9JHtkZWZpbmVUeXBlSW50ZXJmYWNlSW1wbGVtZW50YXRpb259CkBAIC0xMjAw
LDM3ICsxMjQ5LDQxIEBAICR7ZGVmaW5lVHlwZU1hY3JvfSgke2NsYXNzTmFtZX0sICR7bG93ZXJD
YXNlSWZhY2VOYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0ke2RlZmluCiBFT0YKICAgICBwdXNoKEBj
Qm9keVByb3BlcnRpZXMsICRpbXBsQ29udGVudCk7CiAKLSAgICAkaW1wbENvbnRlbnQgPSA8PCAi
RU9GIjsKLVdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmUoJHtjbGFzc05hbWV9KiByZXF1
ZXN0KQorICAgIGlmICghVXNlc01hbnVhbEtpdEltcGxlbWVudGF0aW9uKCRpbnRlcmZhY2VOYW1l
KSkgeworICAgICAgICAkaW1wbENvbnRlbnQgPSA8PCAiRU9GIjsKKyR7Y2xhc3NOYW1lfSoga2l0
KFdlYkNvcmU6OiRpbnRlcmZhY2VOYW1lKiBvYmopCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwocmVxdWVzdCwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKIAotICAg
IFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjoke2ludGVyZmFjZU5hbWV9Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVP
YmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworICAgIGlm
IChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0qPihyZXQpOwogCi0gICAgcmV0dXJuIGNvcmVPYmpl
Y3Q7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1lfSo+KGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgImNvcmUtb2JqZWN0Iiwgb2JqLCBOVUxMKSk7CiB9
CiAKIEVPRgotICAgIHB1c2goQGNCb2R5UHJpdiwgJGltcGxDb250ZW50KTsKKyAgICAgICAgcHVz
aChAY0JvZHlQcml2LCAkaW1wbENvbnRlbnQpOworICAgIH0KIAotICAgICRvYmplY3QtPkdlbmVy
YXRlUHJvcGVydGllcygkaW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSk7Ci0gICAgJG9iamVjdC0+
R2VuZXJhdGVGdW5jdGlvbnMoJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICRpbXBs
Q29udGVudCA9IDw8ICJFT0YiOworV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZSgke2Ns
YXNzTmFtZX0qIHJlcXVlc3QpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwg
MCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKK30KIAotICAgIG15ICR3
cmFwTWV0aG9kID0gPDwgIkVPRiI7CiAke2NsYXNzTmFtZX0qIHdyYXAke2ludGVyZmFjZU5hbWV9
KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhl
ciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBh
IEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBT
ZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgY29y
ZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fJHtjbHNDYXBzfSwgImNvcmUtb2JqZWN0IiwgY29yZU9i
amVjdCwgTlVMTCkpOwogfQogCiBFT0YKLSAgICBwdXNoKEBjQm9keVByaXYsICR3cmFwTWV0aG9k
KTsKKyAgICBwdXNoKEBjQm9keVByaXYsICRpbXBsQ29udGVudCk7CisKKyAgICAkb2JqZWN0LT5H
ZW5lcmF0ZVByb3BlcnRpZXMoJGludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOworICAgICRvYmpl
Y3QtPkdlbmVyYXRlRnVuY3Rpb25zKCRpbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlKTsKIH0KIAog
c3ViIEdlbmVyYXRlRW5kSGVhZGVyIHsKQEAgLTEzMjMsMjIgKzEzNzYsNiBAQCBzdWIgR2VuZXJh
dGUgewogCiAgICAgJGhkckluY2x1ZGVzeyJ3ZWJraXQvJHtwYXJlbnRDbGFzc05hbWV9LmgifSA9
IDE7CiAKLSAgICBpZiAoIVVzZXNNYW51YWxLaXRJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlTmFt
ZSkpIHsKLSAgICAgICAgbXkgJGNvbnZlcnRlciA9IDw8ICJFT0YiOwotJHtjbGFzc05hbWV9KiBr
aXQoV2ViQ29yZTo6JGludGVyZmFjZU5hbWUqIG9iaikKLXsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChvYmosIDApOwotCi0gICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpn
ZXQob2JqKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PCR7Y2xhc3NOYW1lfSo+KHJldCk7
Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8JHtjbGFzc05hbWV9Kj4oRE9NT2JqZWN0Q2FjaGU6
OnB1dChvYmosIFdlYktpdDo6d3JhcCR7aW50ZXJmYWNlTmFtZX0ob2JqKSkpOwotfQotCi1FT0YK
LSAgICBwdXNoKEBjQm9keVByaXYsICRjb252ZXJ0ZXIpOwotICAgIH0KLQogICAgICRvYmplY3Qt
PkdlbmVyYXRlSGVhZGVyKCRpbnRlcmZhY2VOYW1lLCAkcGFyZW50Q2xhc3NOYW1lKTsKICAgICAk
b2JqZWN0LT5HZW5lcmF0ZUNGaWxlKCRpbnRlcmZhY2VOYW1lLCAkcGFyZW50Q2xhc3NOYW1lLCAk
cGFyZW50R09ialR5cGUsICRpbnRlcmZhY2UpOwogICAgICRvYmplY3QtPkdlbmVyYXRlRW5kSGVh
ZGVyKCk7CkBAIC0xNDMyLDYgKzE0NjksNyBAQCBFT0YKIAogICAgIHByaW50IElNUEwgIiNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+XG4iOwogICAgIHByaW50IElNUEwgIiNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+XG5cbiI7CisgICAgcHJpbnQgSU1QTCBAY1N0cnVjdFByaXY7CiAgICAgcHJpbnQgSU1Q
TCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwog
CiAgICAgcHJpbnQgSU1QTCAibmFtZXNwYWNlIFdlYktpdCB7XG5cbiI7CkBAIC0xNDUzLDYgKzE0
OTEsNyBAQCBFT0YKICAgICBAY0JvZHkgPSAoKTsKICAgICBAY0JvZHlQcml2ID0gKCk7CiAgICAg
QGNCb2R5UHJvcGVydGllcyA9ICgpOworICAgIEBjU3RydWN0UHJpdiA9ICgpOwogfQogCiBzdWIg
R2VuZXJhdGVJbnRlcmZhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NRmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJh
eS5jcHAKaW5kZXggNTk0NTUwOS4uMjliNTI2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTUZsb2F0NjRBcnJheS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NRmxvYXQ2NEFycmF5LmNwcApAQCAtNDIsMjcgKzQyLDE5IEBAIFdlYktpdERPTUZsb2F0NjRB
cnJheSoga2l0KFdlYkNvcmU6OkZsb2F0NjRBcnJheSogb2JqKQogICAgIGlmIChncG9pbnRlciBy
ZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJLaXRET01GbG9hdDY0QXJyYXkqPihyZXQpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdERPTUZsb2F0NjRBcnJheSo+KERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6
OndyYXBGbG9hdDY0QXJyYXkob2JqKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRE
T01GbG9hdDY0QXJyYXkqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX0ZMT0FUNjRBUlJB
WSwgImNvcmUtb2JqZWN0Iiwgb2JqLCBOVUxMKSk7CiB9CiAKIFdlYkNvcmU6OkZsb2F0NjRBcnJh
eSogY29yZShXZWJLaXRET01GbG9hdDY0QXJyYXkqIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CiAKLSAgICBXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNv
cmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpGbG9hdDY0QXJyYXkqPihXRUJLSVRfRE9N
X09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29yZU9iamVjdCwgMCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6RmxvYXQ2NEFycmF5Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVz
dCktPmNvcmVPYmplY3QpOwogfQogCiBXZWJLaXRET01GbG9hdDY0QXJyYXkqIHdyYXBGbG9hdDY0
QXJyYXkoV2ViQ29yZTo6RmxvYXQ2NEFycmF5KiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRo
ZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUg
YSBDKysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4g
U2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNv
cmVPYmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fRkxPQVQ2NEFSUkFZKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fRkxPQVQ2NEFSUkFZLCAiY29yZS1vYmplY3QiLCBj
b3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTcwLDI4ICs2Miw4IEBAIFdlYktpdERPTUZsb2F0
NjRBcnJheSogd3JhcEZsb2F0NjRBcnJheShXZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmVPYmpl
Y3QpCiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NRmxvYXQ2NEFycmF5LCB3ZWJraXRfZG9tX2Zs
b2F0NjRhcnJheSwgV0VCS0lUX1RZUEVfRE9NX0FSUkFZX0JVRkZFUl9WSUVXKQogCi1zdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2Zsb2F0NjRhcnJheV9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCi17
Ci0KLSAgICBXZWJLaXRET01PYmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9i
amVjdCk7Ci0gICAgCi0gICAgaWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBX
ZWJDb3JlOjpGbG9hdDY0QXJyYXkqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpG
bG9hdDY0QXJyYXkqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+
ZGVyZWYoKTsKLQotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KLQot
Ci0gICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV9mbG9hdDY0YXJyYXlfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV9mbG9hdDY0
YXJyYXlfY2xhc3NfaW5pdChXZWJLaXRET01GbG9hdDY0QXJyYXlDbGFzcyogcmVxdWVzdENsYXNz
KQogewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVx
dWVzdENsYXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV9mbG9h
dDY0YXJyYXlfZmluYWxpemU7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fZmxvYXQ2NGFy
cmF5X2luaXQoV2ViS2l0RE9NRmxvYXQ2NEFycmF5KiByZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA2NzgzMDYyLi45
ZDAzZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcApAQCAtMzIsNiArMzIsMTIgQEAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9BQ1RJVkVf
RE9NX09CSkVDVF9HRVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShv
YmosIFdFQktJVF9UWVBFX0RPTV9URVNUX0FDVElWRV9ET01fT0JKRUNULCBXZWJLaXRET01UZXN0
QWN0aXZlRE9NT2JqZWN0UHJpdmF0ZSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RB
Y3RpdmVET01PYmplY3RQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdEFjdGl2ZURP
TU9iamVjdD4gY29yZU9iamVjdDsKK30gV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdFByaXZh
dGU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0
KiBraXQoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCogb2JqKQpAQCAtNDEsMjcgKzQ3LDE5
IEBAIFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QqIGtpdChXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0KiBvYmopCiAgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpn
ZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RBY3RpdmVE
T01PYmplY3QqPihyZXQpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RB
Y3RpdmVET01PYmplY3QqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVz
dEFjdGl2ZURPTU9iamVjdChvYmopKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERP
TVRlc3RBY3RpdmVET01PYmplY3QqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
QUNUSVZFX0RPTV9PQkpFQ1QsICJjb3JlLW9iamVjdCIsIG9iaiwgTlVMTCkpOwogfQogCiBXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBjb3JlKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmpl
Y3QqIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CiAK
LSAgICBXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nh
c3Q8V2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdCo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVl
c3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAw
KTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNv
cmVPYmplY3QpOwogfQogCiBXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0KiB3cmFwVGVzdEFj
dGl2ZURPTU9iamVjdChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0KiBjb3JlT2JqZWN0KQog
ewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2Ug
Y2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ug
d2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2Jq
ZWN0IHN0cnVjdHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBk
ZXJlZigpLgotICAgIGNvcmVPYmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01f
VEVTVF9BQ1RJVkVfRE9NX09CSkVDVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1Rf
QUNUSVZFX0RPTV9PQkpFQ1QsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0K
IApAQCAtNzYsMTkgKzc0LDExIEBAIGVudW0gewogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfYWN0aXZlX2RvbV9vYmplY3RfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogeworICAgIFdl
YktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNU
X0FDVElWRV9ET01fT0JKRUNUX0dFVF9QUklWQVRFKG9iamVjdCk7CiAKLSAgICBXZWJLaXRET01P
YmplY3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7Ci0gICAgCi0gICAg
aWYgKGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0KiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEFjdGl2ZURP
TU9iamVjdCo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7Ci0KLSAgICAgICAgV2ViS2l0OjpET01P
YmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJl
ZigpOwotCi0gICAgICAgIGRvbU9iamVjdC0+Y29yZU9iamVjdCA9IDA7Ci0gICAgfQotCisgICAg
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwog
CisgICAgcHJpdi0+fldlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlKCk7CiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKQEAgLTExMCw5ICsxMDAsMjIgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW4KICAgICB9CiB9CiAKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9t
X3Rlc3RfYWN0aXZlX2RvbV9vYmplY3RfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29u
c3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFBy
b3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5
cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAg
ICBXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01f
VEVTVF9BQ1RJVkVfRE9NX09CSkVDVF9HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNv
cmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0Kj4oV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmpl
Y3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CisKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9v
YmplY3RfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0Q2xhc3MqIHJlcXVl
c3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RD
bGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3RQcml2YXRlKSk7CisgICAg
Z29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29i
amVjdF9jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2Rv
bV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2ZpbmFsaXplOwogICAgIGdvYmplY3RDbGFzcy0+Z2V0
X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2FjdGl2ZV9kb21fb2JqZWN0X2dldF9wcm9wZXJ0
eTsKIApAQCAtMTI5LDYgKzEzMiw4IEBAIEdfTUFYTE9ORywgLyogbWF4ICovCiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9pbml0KFdlYktpdERPTVRlc3RB
Y3RpdmVET01PYmplY3QqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9i
amVjdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfQUNUSVZFX0RPTV9PQkpFQ1RfR0VU
X1BSSVZBVEUocmVxdWVzdCk7CisgICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0QWN0aXZlRE9N
T2JqZWN0UHJpdmF0ZSgpOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dENhbGxiYWNrLmNwcAppbmRleCAzMWU2YTZkLi4zZGE2YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJh
Y2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKQEAgLTM3LDYgKzM3LDE0IEBACiAjaW5jbHVkZSA8
d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2RlZmluZSBXRUJLSVRf
RE9NX1RFU1RfQ0FMTEJBQ0tfR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BS
SVZBVEUob2JqLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9DQUxMQkFDSywgV2ViS2l0RE9NVGVzdENh
bGxiYWNrUHJpdmF0ZSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RDYWxsYmFja1By
aXZhdGUgeworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgUmVmUHRyPFdlYkNvcmU6OlRl
c3RDYWxsYmFjaz4gY29yZU9iamVjdDsKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQor
fSBXZWJLaXRET01UZXN0Q2FsbGJhY2tQcml2YXRlOworCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OCwyNyArNTYsMTkgQEAgV2ViS2l0RE9NVGVz
dENhbGxiYWNrKiBraXQoV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBvYmopCiAgICAgaWYgKGdwb2lu
dGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RDYWxsYmFjayo+KHJldCk7CiAKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0RE9NVGVzdENhbGxiYWNrKj4oRE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdl
YktpdDo6d3JhcFRlc3RDYWxsYmFjayhvYmopKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YktpdERPTVRlc3RDYWxsYmFjayo+KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9D
QUxMQkFDSywgImNvcmUtb2JqZWN0Iiwgb2JqLCBOVUxMKSk7CiB9CiAKIFdlYkNvcmU6OlRlc3RD
YWxsYmFjayogY29yZShXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHJlcXVlc3QpCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CiAKLSAgICBXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqPihXRUJL
SVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrKj4oV0VCS0lUX0RPTV9PQkpFQ1Qo
cmVxdWVzdCktPmNvcmVPYmplY3QpOwogfQogCiBXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHdyYXBU
ZXN0Q2FsbGJhY2soV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlT2JqZWN0KQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYo
KSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qg
c3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVj
dHVyZS4gU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgot
ICAgIGNvcmVPYmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9DQUxM
QkFDSyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfQ0FMTEJBQ0ssICJjb3JlLW9i
amVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtODAsMzAgKzgwLDM3IEBAIEdfREVG
SU5FX1RZUEUoV2ViS2l0RE9NVGVzdENhbGxiYWNrLCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2ss
IFdFQktJVF9UWVBFX0RPTV9PCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFj
a19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNr
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19HRVRfUFJJVkFURShvYmpl
Y3QpOwogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21P
YmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmpl
Y3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdENhbGxiYWNrKiBjb3JlT2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdENhbGxiYWNrKj4oZG9tT2JqZWN0LT5jb3Jl
T2JqZWN0KTsKLQotICAgICAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQoY29yZU9i
amVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3QtPmRlcmVmKCk7Ci0KLSAgICAgICAgZG9tT2JqZWN0
LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9y
Z2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogI2VuZGlmIC8vIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0KKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSgpOwogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19wYXJlbnRfY2xhc3MpLT5maW5h
bGl6ZShvYmplY3QpOwogfQogCitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2NhbGxi
YWNrX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3Vu
dCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdP
YmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19w
YXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQs
IGNvbnN0cnVjdFByb3BlcnRpZXMpOworI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCisgICAgV2Vi
S2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFD
S19HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3Jl
T2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVj
dC5nZXQoKSwgb2JqZWN0KTsKKyNlbmRpZiAvLyBFTkFCTEUoU1FMX0RBVEFCQVNFKQorICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19j
bGFzc19pbml0KFdlYktpdERPTVRlc3RDYWxsYmFja0NsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAg
ICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xh
c3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihX
ZWJLaXRET01UZXN0Q2FsbGJhY2tQcml2YXRlKSk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0
Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2ZpbmFsaXplOwogfQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfaW5pdChXZWJLaXRET01UZXN0
Q2FsbGJhY2sqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNrUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fVEVTVF9DQUxMQkFDS19HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAg
ICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RDYWxsYmFja1ByaXZhdGUoKTsKIH0KIAogZ2Jvb2xl
YW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwCmluZGV4IDhiMDg2ZGUuLjYwNzcwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMzEsNiArMzEsMTIgQEAK
ICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjZGVm
aW5lIFdFQktJVF9ET01fVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSX0dFVF9QUklWQVRFKG9iaikg
R19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfQ1VT
VE9NX05BTUVEX0dFVFRFUiwgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGUg
eworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+IGNvcmVPYmplY3Q7
Cit9IFdlYktpdERPTVRlc3RDdXN0b21OYW1lZEdldHRlclByaXZhdGU7CisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGtpdChXZWJDb3JlOjpU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIG9iaikKQEAgLTQwLDI3ICs0NiwxOSBAQCBXZWJLaXRET01U
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGtpdChXZWJDb3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIq
IG9iaikKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4ocmV0KTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKG9iaikpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKj4oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NV
U1RPTV9OQU1FRF9HRVRURVIsICJjb3JlLW9iamVjdCIsIG9iaiwgTlVMTCkpOwogfQogCiBXZWJD
b3JlOjpUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNvcmUoV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDAp
OwogCi0gICAgV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBjb3JlT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4oV0VCS0lUX0RPTV9PQkpF
Q1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVP
YmplY3QsIDApOwotCi0gICAgcmV0dXJuIGNvcmVPYmplY3Q7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRlcio+KFdFQktJVF9ET01fT0JKRUNUKHJl
cXVlc3QpLT5jb3JlT2JqZWN0KTsKIH0KIAogV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVy
KiB3cmFwVGVzdEN1c3RvbU5hbWVkR2V0dGVyKFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRl
ciogY29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAw
KTsKLQotICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQg
cG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEg
Qy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZv
ciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJl
dHVybiBXRUJLSVRfRE9NX1RFU1RfQ1VTVE9NX05BTUVEX0dFVFRFUihnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfRE9NX1RFU1RfQ1VTVE9NX05BTUVEX0dFVFRFUiwgImNvcmUtb2JqZWN0IiwgY29y
ZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC03MCwzMCArNjgsMzcgQEAgR19ERUZJTkVfVFlQRShX
ZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIsIHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFt
ZWRfZ2V0dGUKIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0
ZXJfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogeworICAgIFdlYktpdERPTVRlc3RDdXN0b21O
YW1lZEdldHRlclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfQ1VTVE9NX05BTUVEX0dF
VFRFUl9HRVRfUFJJVkFURShvYmplY3QpOwogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmpl
Y3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmplY3Qt
PmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBj
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4o
ZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAKLSAgICAgICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwor
ICAgIHByaXYtPn5XZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlKCk7CisgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfcGFyZW50
X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KIAotICAgICAgICBkb21PYmplY3QtPmNvcmVP
YmplY3QgPSAwOwotICAgIH0KK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9t
X25hbWVkX2dldHRlcl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9w
ZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykK
K3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rf
Y3VzdG9tX25hbWVkX2dldHRlcl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25z
dHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwogCisgICAgV2ViS2l0
RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9D
VVNUT01fTkFNRURfR0VUVEVSX0dFVF9QUklWQVRFKG9iamVjdCk7CisgICAgcHJpdi0+Y29yZU9i
amVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRlcio+KFdFQktJ
VF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0
Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwogCi0gICAgR19PQkpF
Q1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2N1c3RvbV9uYW1lZF9nZXR0ZXJfcGFyZW50X2NsYXNz
KS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVkX2dldHRlcl9jbGFzc19pbml0KFdlYktpdERP
TVRlc3RDdXN0b21OYW1lZEdldHRlckNsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVj
dENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01U
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcml2YXRlKSk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1
Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9jdXN0b21fbmFtZWRfZ2V0dGVyX2NvbnN0cnVjdG9yOwog
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfY3VzdG9tX25hbWVk
X2dldHRlcl9maW5hbGl6ZTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2N1c3Rv
bV9uYW1lZF9nZXR0ZXJfaW5pdChXZWJLaXRET01UZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHJlcXVl
c3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSogcHJpdiA9
IFdFQktJVF9ET01fVEVTVF9DVVNUT01fTkFNRURfR0VUVEVSX0dFVF9QUklWQVRFKHJlcXVlc3Qp
OworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJpdmF0ZSgp
OwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggZDc2MGU2Zi4uZDk5NDExNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMzEsNiArMzEs
MTIgQEAKICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
CisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9FVkVOVF9DT05TVFJVQ1RPUl9HRVRfUFJJVkFURShv
YmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9UWVBFX0RPTV9URVNU
X0VWRU5UX0NPTlNUUlVDVE9SLCBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUp
CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUg
eworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gY29yZU9iamVjdDsK
K30gV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlOworCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIGtpdChXZWJDb3JlOjpUZXN0
RXZlbnRDb25zdHJ1Y3Rvciogb2JqKQpAQCAtNDAsMjcgKzQ2LDE5IEBAIFdlYktpdERPTVRlc3RF
dmVudENvbnN0cnVjdG9yKiBraXQoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIG9iaikK
ICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqPihyZXQp
OwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9y
Kj4oRE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcFRlc3RFdmVudENvbnN0cnVj
dG9yKG9iaikpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV2ZW50Q29u
c3RydWN0b3IqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RS
VUNUT1IsICJjb3JlLW9iamVjdCIsIG9iaiwgTlVMTCkpOwogfQogCiBXZWJDb3JlOjpUZXN0RXZl
bnRDb25zdHJ1Y3RvciogY29yZShXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvciogcmVxdWVz
dCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKIAotICAgIFdlYkNv
cmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29y
ZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAg
ICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVz
dEV2ZW50Q29uc3RydWN0b3IqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVj
dCk7CiB9CiAKIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKiB3cmFwVGVzdEV2ZW50Q29u
c3RydWN0b3IoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNvcmVPYmplY3QpCiB7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxs
IHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBj
YW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qg
c3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVm
KCkuCi0gICAgY29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNU
X0VWRU5UX0NPTlNUUlVDVE9SKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9FVkVO
VF9DT05TVFJVQ1RPUiwgImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOwogfQogCkBA
IC03NiwxOSArNzQsMTEgQEAgZW51bSB7CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9l
dmVudF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0
RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0VW
RU5UX0NPTlNUUlVDVE9SX0dFVF9QUklWQVRFKG9iamVjdCk7CiAKLSAgICBXZWJLaXRET01PYmpl
Y3QqIGRvbU9iamVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7Ci0gICAgCi0gICAgaWYg
KGRvbU9iamVjdC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0RXZlbnRDb25z
dHJ1Y3RvciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudENvbnN0
cnVjdG9yKj4oZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKLQotICAgICAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpmb3JnZXQoY29yZU9iamVjdCk7Ci0gICAgICAgIGNvcmVPYmplY3QtPmRlcmVm
KCk7Ci0KLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9Ci0KKyAgICBX
ZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAK
KyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlKCk7CiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX3BhcmVudF9j
bGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKQEAgLTExNCw5ICsxMDQsMjIgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW4KICAgICB9CiB9CiAKK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9t
X3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29u
c3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFBy
b3BlcnRpZXMpCit7CisgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0
X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5
cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisKKyAg
ICBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9N
X1RFU1RfRVZFTlRfQ09OU1RSVUNUT1JfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5j
b3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqPihX
RUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKKworICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25z
dHJ1Y3Rvcl9jbGFzc19pbml0KFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yQ2xhc3MqIHJl
cXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNU
X0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmpl
Y3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZSkpOwor
ICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29u
c3RydWN0b3JfY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtp
dF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZTsKICAgICBnb2JqZWN0Q2xhc3Mt
PmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfcHJv
cGVydHk7CiAKQEAgLTEzOCw2ICsxNDEsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
ZXZlbnRfY29uc3RydWN0b3JfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0RXZlbnRDb25zdAogCiBz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfaW5pdChXZWJLaXRE
T01UZXN0RXZlbnRDb25zdHJ1Y3RvciogcmVxdWVzdCkKIHsKKyAgICBXZWJLaXRET01UZXN0RXZl
bnRDb25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RS
VUNUT1JfR0VUX1BSSVZBVEUocmVxdWVzdCk7CisgICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0
RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUoKTsKIH0KIAogZ2NoYXIqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZl
bnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCBmMWU2OGQ4Li40MzkwYWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTM1
LDYgKzM1LDEyIEBACiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfVEFSR0VUX0dFVF9QUklWQVRF
KG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX1RZUEVfRE9NX1RF
U1RfRVZFTlRfVEFSR0VULCBXZWJLaXRET01UZXN0RXZlbnRUYXJnZXRQcml2YXRlKQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSB7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldD4gY29yZU9iamVjdDsKK30gV2ViS2l0RE9NVGVzdEV2
ZW50VGFyZ2V0UHJpdmF0ZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RF
dmVudFRhcmdldCoga2l0KFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCogb2JqKQpAQCAtNDQsMjcg
KzUwLDE5IEBAIFdlYktpdERPTVRlc3RFdmVudFRhcmdldCoga2l0KFdlYkNvcmU6OlRlc3RFdmVu
dFRhcmdldCogb2JqKQogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0
KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0RXZlbnRUYXJn
ZXQqPihyZXQpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RFdmVudFRh
cmdldCo+KERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6OndyYXBUZXN0RXZlbnRUYXJn
ZXQob2JqKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0RXZlbnRUYXJn
ZXQqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfVEFSR0VULCAiY29y
ZS1vYmplY3QiLCBvYmosIE5VTEwpKTsKIH0KIAogV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0KiBj
b3JlKFdlYktpdERPTVRlc3RFdmVudFRhcmdldCogcmVxdWVzdCkKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKIAotICAgIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCog
Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCo+KFdFQktJ
VF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqPihXRUJLSVRfRE9NX09CSkVD
VChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CiB9CiAKIFdlYktpdERPTVRlc3RFdmVudFRhcmdldCog
d3JhcFRlc3RFdmVudFRhcmdldChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXQqIGNvcmVPYmplY3Qp
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBX
ZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVz
ZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKLSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdP
YmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5n
IGRlcmVmKCkuCi0gICAgY29yZU9iamVjdC0+cmVmKCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RP
TV9URVNUX0VWRU5UX1RBUkdFVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZF
TlRfVEFSR0VULCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTEw
NiwzMCArMTA0LDM3IEBAIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdERPTVRlc3RFdmVu
dFRhcmdldCwgd2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldCwKIAogc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7Cisg
ICAgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVT
VF9FVkVOVF9UQVJHRVRfR0VUX1BSSVZBVEUob2JqZWN0KTsKIAotICAgIFdlYktpdERPTU9iamVj
dCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKLSAgICAKLSAgICBpZiAo
ZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAgICAgIFdlYkNvcmU6OlRlc3RFdmVudFRhcmdl
dCogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldCo+KGRv
bU9iamVjdC0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0
KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2Fj
aGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKyAg
ICBwcml2LT5+V2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSgpOworICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKK30KIAotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAg
IH0KK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2NvbnN0cnVj
dG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09iamVjdENv
bnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3QqIG9iamVj
dCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfcGFyZW50X2Ns
YXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1
Y3RQcm9wZXJ0aWVzKTsKIAorICAgIFdlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfVEFSR0VUX0dFVF9QUklWQVRFKG9iamVjdCk7Cisg
ICAgcHJpdi0+Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVudFRhcmdl
dCo+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworICAgIFdlYktpdDo6
RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOwogCi0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2V2ZW50X3RhcmdldF9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShvYmplY3QpOworICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF90YXJnZXRfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0
RXZlbnRUYXJnZXRDbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdEV2ZW50VGFy
Z2V0UHJpdmF0ZSkpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9t
X3Rlc3RfZXZlbnRfdGFyZ2V0X2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2ZpbmFsaXplOwogfQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50
VGFyZ2V0KiByZXF1ZXN0KQogeworICAgIFdlYktpdERPTVRlc3RFdmVudFRhcmdldFByaXZhdGUq
IHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfVEFSR0VUX0dFVF9QUklWQVRFKHJlcXVlc3Qp
OworICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEV2ZW50VGFyZ2V0UHJpdmF0ZSgpOwogfQog
CiBXZWJLaXRET01Ob2RlKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9u
LmNwcAppbmRleCBiZTE3OTQwLi4zYjQwZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXhjZXB0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0RXhjZXB0aW9uLmNwcApAQCAtMzEsNiArMzEsMTIgQEAKICNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjZGVmaW5lIFdFQktJVF9ET01fVEVT
VF9FWENFUFRJT05fR0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUo
b2JqLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9FWENFUFRJT04sIFdlYktpdERPTVRlc3RFeGNlcHRp
b25Qcml2YXRlKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZh
dGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0RXhjZXB0aW9uPiBjb3JlT2JqZWN0OworfSBX
ZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdl
YktpdERPTVRlc3RFeGNlcHRpb24qIGtpdChXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBvYmopCkBA
IC00MCwyNyArNDYsMTkgQEAgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbioga2l0KFdlYkNvcmU6OlRl
c3RFeGNlcHRpb24qIG9iaikKICAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6
OmdldChvYmopKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV4Y2Vw
dGlvbio+KHJldCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV4Y2Vw
dGlvbio+KERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6OndyYXBUZXN0RXhjZXB0aW9u
KG9iaikpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV4Y2VwdGlvbio+
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9FWENFUFRJT04sICJjb3JlLW9iamVj
dCIsIG9iaiwgTlVMTCkpOwogfQogCiBXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlKFdlYktp
dERPTVRlc3RFeGNlcHRpb24qIHJlcXVlc3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
cmVxdWVzdCwgMCk7CiAKLSAgICBXZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KFdFQktJVF9ET01fT0JKRUNUKHJl
cXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0
LCAwKTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpUZXN0RXhjZXB0aW9uKj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVP
YmplY3QpOwogfQogCiBXZWJLaXRET01UZXN0RXhjZXB0aW9uKiB3cmFwVGVzdEV4Y2VwdGlvbihX
ZWJDb3JlOjpUZXN0RXhjZXB0aW9uKiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIgdGhh
biB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysg
b2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2VlIHRo
ZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNvcmVPYmpl
Y3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9FWENFUFRJT04oZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0VYQ0VQVElPTiwgImNvcmUtb2JqZWN0IiwgY29y
ZU9iamVjdCwgTlVMTCkpOwogfQogCkBAIC03NSwxOSArNzMsMTEgQEAgZW51bSB7CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQogeworICAgIFdlYktpdERPTVRlc3RFeGNlcHRpb25Qcml2YXRlKiBwcml2ID0gV0VCS0lUX0RP
TV9URVNUX0VYQ0VQVElPTl9HRVRfUFJJVkFURShvYmplY3QpOwogCi0gICAgV2ViS2l0RE9NT2Jq
ZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlm
IChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdEV4Y2VwdGlv
biogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qPihkb21P
YmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZv
cmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKLQotICAgICAg
ICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KLQorICAgIFdlYktpdDo6RE9NT2Jq
ZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2JqZWN0LmdldCgpKTsKIAorICAgIHByaXYtPn5X
ZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSgpOwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fdGVzdF9leGNlcHRpb25fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0K
IApAQCAtMTA5LDkgKzk5LDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9leGNlcHRp
b25fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVyCiAgICAgfQogfQog
CitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1Y3RvcihH
VHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1
Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXhjZXB0aW9uX3BhcmVudF9jbGFzcyktPmNv
bnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVy
dGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0RXhjZXB0aW9uUHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9ET01fVEVTVF9FWENFUFRJT05fR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3Jl
T2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEV4Y2VwdGlvbio+KFdFQktJVF9ET01f
T0JKRUNUKG9iamVjdCktPmNvcmVPYmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OnB1dChwcml2LT5jb3JlT2JqZWN0LmdldCgpLCBvYmplY3QpOworCisgICAgcmV0dXJuIG9iamVj
dDsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jbGFzc19pbml0
KFdlYktpdERPTVRlc3RFeGNlcHRpb25DbGFzcyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmpl
Y3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9N
VGVzdEV4Y2VwdGlvblByaXZhdGUpKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0g
d2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3Mt
PmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9maW5hbGl6ZTsKICAgICBnb2Jq
ZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9leGNlcHRpb25fZ2V0X3By
b3BlcnR5OwogCkBAIC0xMjYsNiArMTI5LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2V4Y2VwdGlvbl9jbGFzc19pbml0KFdlYktpdERPTVRlc3RFeGNlcHRpb25DbGFzcyogcmUKIAog
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9pbml0KFdlYktpdERPTVRlc3RF
eGNlcHRpb24qIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUq
IHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfRVhDRVBUSU9OX0dFVF9QUklWQVRFKHJlcXVlc3QpOwor
ICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEV4Y2VwdGlvblByaXZhdGUoKTsKIH0KIAogZ2No
YXIqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGQw
MTY1OTMuLmE1MzhkYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZh
Y2UuY3BwCkBAIC0zNCw2ICszNCwxNCBAQAogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9H
RVRfUFJJVkFURShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9U
WVBFX0RPTV9URVNUX0lOVEVSRkFDRSwgV2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGUpCisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZSB7CisjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlPiBjb3JlT2JqZWN0OworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK30gV2ViS2l0RE9NVGVzdEludGVyZmFjZVByaXZhdGU7
CisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtNDUsMjcgKzUzLDE5IEBAIFdlYktpdERPTVRlc3RJbnRlcmZhY2Uq
IGtpdChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBvYmopCiAgICAgaWYgKGdwb2ludGVyIHJldCA9
IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YktpdERPTVRlc3RJbnRlcmZhY2UqPihyZXQpOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdl
YktpdERPTVRlc3RJbnRlcmZhY2UqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3
cmFwVGVzdEludGVyZmFjZShvYmopKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERP
TVRlc3RJbnRlcmZhY2UqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJG
QUNFLCAiY29yZS1vYmplY3QiLCBvYmosIE5VTEwpKTsKIH0KIAogV2ViQ29yZTo6VGVzdEludGVy
ZmFjZSogY29yZShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiByZXF1ZXN0KQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwogCi0gICAgV2ViQ29yZTo6VGVzdEludGVyZmFj
ZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqPihXRUJL
SVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdEludGVyZmFjZSo+KFdFQktJVF9ET01fT0JKRUNU
KHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKIH0KIAogV2ViS2l0RE9NVGVzdEludGVyZmFjZSogd3Jh
cFRlc3RJbnRlcmZhY2UoV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZU9iamVjdCkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwg
cmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNh
bid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBz
dHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYo
KS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1Rf
SU5URVJGQUNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9JTlRFUkZBQ0UsICJj
b3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtODQsMTkgKzg0LDExIEBA
IGVudW0gewogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2ZpbmFsaXpl
KEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlUHJpdmF0ZSog
cHJpdiA9IFdFQktJVF9ET01fVEVTVF9JTlRFUkZBQ0VfR0VUX1BSSVZBVEUob2JqZWN0KTsKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgV2ViS2l0RE9N
T2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAg
IGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdEludGVy
ZmFjZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqPihk
b21PYmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKLQotICAg
ICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KKyAgICBXZWJLaXQ6OkRPTU9i
amVjdENhY2hlOjpmb3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotCisgICAgcHJpdi0+fldlYktp
dERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV90ZXN0X2ludGVyZmFjZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBA
IC0xODUsOSArMTc3LDIyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVyCiAgICAgfQogfQogCitz
dGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9jb25zdHJ1Y3RvcihHVHlw
ZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQ
YXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3BhcmVudF9jbGFzcyktPmNvbnN0
cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGll
cyk7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIFdl
YktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX0lOVEVS
RkFDRV9HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmplY3QgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+
Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVP
YmplY3QuZ2V0KCksIG9iamVjdCk7CisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVO
QUJMRShDb25kaXRpb24yKQorICAgIHJldHVybiBvYmplY3Q7Cit9CisKIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNl
Q2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2
YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKSk7
CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2VfY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2VfZmluYWxpemU7CiAgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkg
PSB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9wcm9wZXJ0eTsKICAgICBnb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZ2V0X3Byb3BlcnR5
OwpAQCAtMjE3LDYgKzIyMiw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZh
Y2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xhc3MqIHJlCiAKIHN0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNl
KiByZXF1ZXN0KQogeworICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKiBwcml2ID0g
V0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRV9HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBuZXcg
KHByaXYpIFdlYktpdERPTVRlc3RJbnRlcmZhY2VQcml2YXRlKCk7CiB9CiAKIHZvaWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcAppbmRleCA4MGJmYjVkLi45OWE5MWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC0zMSw2
ICszMSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJf
R0VUX1BSSVZBVEUob2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRf
VFlQRV9ET01fVEVTVF9NRURJQV9RVUVSWV9MSVNUX0xJU1RFTkVSLCBXZWJLaXRET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01U
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUgeworICAgIFJlZlB0cjxXZWJDb3JlOjpU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4gY29yZU9iamVjdDsKK30gV2ViS2l0RE9NVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vi
S2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGtpdChXZWJDb3JlOjpUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lciogb2JqKQpAQCAtNDAsMjcgKzQ2LDE5IEBAIFdlYktpdERPTVRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBraXQoV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIqIG9iCiAgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2Jq
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKj4ocmV0KTsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KERPTU9iamVjdENhY2hlOjpwdXQob2JqLCBXZWJLaXQ6
OndyYXBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihvYmopKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKj4oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVIsICJjb3JlLW9i
amVjdCIsIG9iaiwgTlVMTCkpOwogfQogCiBXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lciogY29yZShXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogcmVxdWVzdCkK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKIAotICAgIFdlYkNvcmU6
OlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1
ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwg
MCk7Ci0KLSAgICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1
ZXN0KS0+Y29yZU9iamVjdCk7CiB9CiAKIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKiB3cmFwVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoV2ViQ29yZTo6VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIqIGNvcmVPYmplY3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
Y29yZU9iamVjdCwgMCk7Ci0KLSAgICAvLyBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5n
IGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QK
LSAgICAvLyBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiBTZWUgdGhlIGZpbmFs
aXplKCkgY29kZSBmb3IgdGhlIG1hdGNoaW5nIGRlcmVmKCkuCi0gICAgY29yZU9iamVjdC0+cmVm
KCk7Ci0KICAgICByZXR1cm4gV0VCS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVO
RVIoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElT
VEVORVIsICJjb3JlLW9iamVjdCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtNzAsMjkg
KzY4LDM2IEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIsIHdlYmtpdF9kb21fdGVzdF9tZWRpYV9xdWVyeV9sCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKIHsKKyAgICBXZWJLaXRET01UZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUqIHBy
aXYgPSBXRUJLSVRfRE9NX1RFU1RfTUVESUFfUVVFUllfTElTVF9MSVNURU5FUl9HRVRfUFJJVkFU
RShvYmplY3QpOwogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9N
X09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsK
LSAgICAgICAgV2ViQ29yZTo6VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGNvcmVPYmplY3Qg
PSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KGRvbU9i
amVjdC0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHBy
aXYtPmNvcmVPYmplY3QuZ2V0KCkpOwogCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6
OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKyAgICBw
cml2LT5+V2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlKCk7CisgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJf
cGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KIAotICAgICAgICBkb21PYmplY3Qt
PmNvcmVPYmplY3QgPSAwOwotICAgIH0KK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3Rf
bWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9jb25zdHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBj
b25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0
UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfZG9tX3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9wYXJlbnRfY2xhc3MpLT5jb25z
dHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRp
ZXMpOwogCisgICAgV2ViS2l0RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlKiBw
cml2ID0gV0VCS0lUX0RPTV9URVNUX01FRElBX1FVRVJZX0xJU1RfTElTVEVORVJfR0VUX1BSSVZB
VEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqPihXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpLT5j
b3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQocHJpdi0+Y29yZU9i
amVjdC5nZXQoKSwgb2JqZWN0KTsKIAotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVz
dF9tZWRpYV9xdWVyeV9saXN0X2xpc3RlbmVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVj
dCk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNz
KiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lclByaXZhdGUpKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmNvbnN0cnVj
dG9yID0gd2Via2l0X2RvbV90ZXN0X21lZGlhX3F1ZXJ5X2xpc3RfbGlzdGVuZXJfY29uc3RydWN0
b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9tZWRpYV9x
dWVyeV9saXN0X2xpc3RlbmVyX2ZpbmFsaXplOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3Rlc3RfbWVkaWFfcXVlcnlfbGlzdF9saXN0ZW5lcl9pbml0KFdlYktpdERPTVRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiByZXF1ZXN0KQogeworICAgIFdlYktpdERPTVRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9NRURJQV9RVUVSWV9M
SVNUX0xJU1RFTkVSX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikgV2ViS2l0
RE9NVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcml2YXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA3MGY5
ZDEwLi40OWM3YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCkBAIC0zMSw2ICszMSwxMiBAQAogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNkZWZpbmUgV0VCS0lUX0RPTV9URVNU
X05BTUVEX0NPTlNUUlVDVE9SX0dFVF9QUklWQVRFKG9iaikgR19UWVBFX0lOU1RBTkNFX0dFVF9Q
UklWQVRFKG9iaiwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTkFNRURfQ09OU1RSVUNUT1IsIFdlYktp
dERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVRlc3ROYW1lZENvbnN0cnVjdG9yUHJpdmF0ZSB7CisgICAgUmVmUHRyPFdlYkNvcmU6OlRl
c3ROYW1lZENvbnN0cnVjdG9yPiBjb3JlT2JqZWN0OworfSBXZWJLaXRET01UZXN0TmFtZWRDb25z
dHJ1Y3RvclByaXZhdGU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJLaXRET01UZXN0TmFt
ZWRDb25zdHJ1Y3Rvcioga2l0KFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKiBvYmopCkBA
IC00MCwyNyArNDYsMTkgQEAgV2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqIGtpdChXZWJD
b3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvciogb2JqKQogICAgIGlmIChncG9pbnRlciByZXQgPSBE
T01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJL
aXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KHJldCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViS2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqPihET01PYmplY3RDYWNoZTo6cHV0KG9i
aiwgV2ViS2l0Ojp3cmFwVGVzdE5hbWVkQ29uc3RydWN0b3Iob2JqKSkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9ET01fVEVTVF9OQU1FRF9DT05TVFJVQ1RPUiwgImNvcmUtb2JqZWN0Iiwgb2Jq
LCBOVUxMKSk7CiB9CiAKIFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKiBjb3JlKFdlYktp
dERPTVRlc3ROYW1lZENvbnN0cnVjdG9yKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHJlcXVlc3QsIDApOwogCi0gICAgV2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3Iq
IGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+
KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIHJldHVybiBjb3JlT2JqZWN0OworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvcio+KFdFQktJ
VF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKIH0KIAogV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3IqIHdyYXBUZXN0TmFtZWRDb25zdHJ1Y3RvcihXZWJDb3JlOjpUZXN0TmFt
ZWRDb25zdHJ1Y3RvciogY29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChj
b3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcg
YSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAot
ICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxp
emUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3JlT2JqZWN0LT5yZWYo
KTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfTkFNRURfQ09OU1RSVUNUT1IoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX05BTUVEX0NPTlNUUlVDVE9SLCAiY29yZS1vYmpl
Y3QiLCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTcwLDI5ICs2OCwzNiBAQCBHX0RFRklO
RV9UWVBFKFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVjdG9yLCB3ZWJraXRfZG9tX3Rlc3RfbmFt
ZWRfY29uc3RydWN0b3IsCiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25z
dHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdE5h
bWVkQ29uc3RydWN0b3JQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX05BTUVEX0NPTlNU
UlVDVE9SX0dFVF9QUklWQVRFKG9iamVjdCk7CiAKLSAgICBXZWJLaXRET01PYmplY3QqIGRvbU9i
amVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7Ci0gICAgCi0gICAgaWYgKGRvbU9iamVj
dC0+Y29yZU9iamVjdCkgewotICAgICAgICBXZWJDb3JlOjpUZXN0TmFtZWRDb25zdHJ1Y3Rvciog
Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROYW1lZENvbnN0cnVjdG9yKj4o
ZG9tT2JqZWN0LT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpmb3Jn
ZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAKLSAgICAgICAgV2ViS2l0OjpET01PYmplY3RD
YWNoZTo6Zm9yZ2V0KGNvcmVPYmplY3QpOwotICAgICAgICBjb3JlT2JqZWN0LT5kZXJlZigpOwor
ICAgIHByaXYtPn5XZWJLaXRET01UZXN0TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUoKTsKKyAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KIAotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmpl
Y3QgPSAwOwotICAgIH0KK3N0YXRpYyBHT2JqZWN0KiB3ZWJraXRfZG9tX3Rlc3RfbmFtZWRfY29u
c3RydWN0b3JfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGll
c0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCit7Cisg
ICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X25hbWVk
X2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFBy
b3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CiAKKyAgICBXZWJLaXRET01UZXN0
TmFtZWRDb25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfTkFNRURfQ09O
U1RSVUNUT1JfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5hbWVkQ29uc3RydWN0b3IqPihXRUJLSVRfRE9NX09CSkVD
VChvYmplY3QpLT5jb3JlT2JqZWN0KTsKKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpwdXQo
cHJpdi0+Y29yZU9iamVjdC5nZXQoKSwgb2JqZWN0KTsKIAotICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShv
YmplY3QpOworICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9jbGFzc19pbml0KFdlYktpdERPTVRlc3ROYW1lZENvbnN0
cnVjdG9yQ2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RD
bGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ190eXBlX2NsYXNzX2Fk
ZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRlc3ROYW1lZENvbnN0cnVj
dG9yUHJpdmF0ZSkpOworICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9t
X3Rlc3RfbmFtZWRfY29uc3RydWN0b3JfY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNzLT5m
aW5hbGl6ZSA9IHdlYmtpdF9kb21fdGVzdF9uYW1lZF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZTsKIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25hbWVkX2NvbnN0cnVjdG9yX2luaXQoV2Vi
S2l0RE9NVGVzdE5hbWVkQ29uc3RydWN0b3IqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0RE9NVGVz
dE5hbWVkQ29uc3RydWN0b3JQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX05BTUVEX0NP
TlNUUlVDVE9SX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJpdikgV2ViS2l0RE9N
VGVzdE5hbWVkQ29uc3RydWN0b3JQcml2YXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3ROb2RlLmNwcAppbmRleCBjY2Q2MTMxLi5hZDE1YzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Tm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE5vZGUuY3BwCkBAIC00MywyNyArNDMsMTkgQEAgV2ViS2l0RE9NVGVzdE5vZGUq
IGtpdChXZWJDb3JlOjpUZXN0Tm9kZSogb2JqKQogICAgIGlmIChncG9pbnRlciByZXQgPSBET01P
YmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRE
T01UZXN0Tm9kZSo+KHJldCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVz
dE5vZGUqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdE5vZGUob2Jq
KSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0Tm9kZSo+KGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9OT0RFLCAiY29yZS1vYmplY3QiLCBvYmosIE5VTEwp
KTsKIH0KIAogV2ViQ29yZTo6VGVzdE5vZGUqIGNvcmUoV2ViS2l0RE9NVGVzdE5vZGUqIHJlcXVl
c3QpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CiAKLSAgICBXZWJD
b3JlOjpUZXN0Tm9kZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2Rl
Kj4oV0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgcmV0dXJuIGNvcmVPYmplY3Q7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9PQkpF
Q1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwogfQogCiBXZWJLaXRET01UZXN0Tm9kZSogd3JhcFRl
c3ROb2RlKFdlYkNvcmU6OlRlc3ROb2RlKiBjb3JlT2JqZWN0KQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOwotCi0gICAgLy8gV2UgY2FsbCByZWYoKSByYXRoZXIg
dGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBD
Kysgb2JqZWN0Ci0gICAgLy8gaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gU2Vl
IHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZSBtYXRjaGluZyBkZXJlZigpLgotICAgIGNvcmVP
YmplY3QtPnJlZigpOwotCiAgICAgcmV0dXJuIFdFQktJVF9ET01fVEVTVF9OT0RFKGdfb2JqZWN0
X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9OT0RFLCAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0
LCBOVUxMKSk7CiB9CiAKQEAgLTEwMywyOCArOTUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2V2ZW50X3RhcmdldF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKQogCiBH
X0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01UZXN0Tm9kZSwgd2Via2l0X2RvbV90ZXN0
X25vZGUsIFdFQktJVF9UWVBFX0RPTV9OT0RFLCBHX0lNUExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lU
X1RZUEVfRE9NX0VWRU5UX1RBUkdFVCwgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfaW5pdCkpCiAK
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ub2RlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCkKLXsKLQotICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpF
Q1Qob2JqZWN0KTsKLSAgICAKLSAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7Ci0gICAg
ICAgIFdlYkNvcmU6OlRlc3ROb2RlKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
VGVzdE5vZGUqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6RE9N
T2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVy
ZWYoKTsKLQotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KLQotCi0g
ICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X25vZGVfcGFyZW50X2NsYXNzKS0+Zmlu
YWxpemUob2JqZWN0KTsKLX0KLQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfY2xh
c3NfaW5pdChXZWJLaXRET01UZXN0Tm9kZUNsYXNzKiByZXF1ZXN0Q2xhc3MpCiB7Ci0gICAgR09i
amVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwot
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9maW5hbGl6
ZTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfaW5pdChXZWJLaXRET01U
ZXN0Tm9kZSogcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXgg
M2QyZTQxMS4uNTkxNWVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAg
LTQ0LDYgKzQ0LDEyIEBACiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1RfT0JKX0dFVF9QUklWQVRFKG9iaikg
R19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKG9iaiwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JK
LCBXZWJLaXRET01UZXN0T2JqUHJpdmF0ZSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVRl
c3RPYmpQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gY29yZU9iamVjdDsK
K30gV2ViS2l0RE9NVGVzdE9ialByaXZhdGU7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJL
aXRET01UZXN0T2JqKiBraXQoV2ViQ29yZTo6VGVzdE9iaiogb2JqKQpAQCAtNTMsMjcgKzU5LDE5
IEBAIFdlYktpdERPTVRlc3RPYmoqIGtpdChXZWJDb3JlOjpUZXN0T2JqKiBvYmopCiAgICAgaWYg
KGdwb2ludGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RPYmoqPihyZXQpOwogCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RPYmoqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0
Ojp3cmFwVGVzdE9iaihvYmopKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRl
c3RPYmoqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAiY29yZS1vYmpl
Y3QiLCBvYmosIE5VTEwpKTsKIH0KIAogV2ViQ29yZTo6VGVzdE9iaiogY29yZShXZWJLaXRET01U
ZXN0T2JqKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDAp
OwogCi0gICAgV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlRlc3RPYmoqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0g
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAgICByZXR1cm4gY29y
ZU9iamVjdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+KFdFQktJ
VF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKIH0KIAogV2ViS2l0RE9NVGVzdE9i
aiogd3JhcFRlc3RPYmooV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCkKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwgcmVmKCkg
cmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0
b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1
cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAg
ICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1RfT0JKKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosICJjb3JlLW9iamVjdCIsIGNvcmVP
YmplY3QsIE5VTEwpKTsKIH0KIApAQCAtMTMzLDE5ICsxMzEsMTEgQEAgZW51bSB7CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewor
ICAgIFdlYktpdERPTVRlc3RPYmpQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX09CSl9H
RVRfUFJJVkFURShvYmplY3QpOwogCi0gICAgV2ViS2l0RE9NT2JqZWN0KiBkb21PYmplY3QgPSBX
RUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAotICAgIGlmIChkb21PYmplY3QtPmNvcmVP
YmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3RPYmoqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOwotCi0gICAgICAg
IFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAgICAgICAgY29y
ZU9iamVjdC0+ZGVyZWYoKTsKLQotICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOwot
ICAgIH0KLQorICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChwcml2LT5jb3JlT2Jq
ZWN0LmdldCgpKTsKIAorICAgIHByaXYtPn5XZWJLaXRET01UZXN0T2JqUHJpdmF0ZSgpOwogICAg
IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vYmpfcGFyZW50X2NsYXNzKS0+ZmluYWxp
emUob2JqZWN0KTsKIH0KIApAQCAtNTE4LDkgKzUwOCwyMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5
SWQsCiAgICAgfQogfQogCitzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X29ial9jb25z
dHJ1Y3RvcihHVHlwZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmpl
Y3RDb25zdHJ1Y3RQYXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBv
YmplY3QgPSBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3BhcmVudF9jbGFzcykt
PmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJv
cGVydGllcyk7CisKKyAgICBXZWJLaXRET01UZXN0T2JqUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9E
T01fVEVTVF9PQkpfR0VUX1BSSVZBVEUob2JqZWN0KTsKKyAgICBwcml2LT5jb3JlT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+KFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCkt
PmNvcmVPYmplY3QpOworICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OnB1dChwcml2LT5jb3Jl
T2JqZWN0LmdldCgpLCBvYmplY3QpOworCisgICAgcmV0dXJuIG9iamVjdDsKK30KKwogc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KFdlYktpdERPTVRlc3RPYmpDbGFz
cyogcmVxdWVzdENsYXNzKQogewogICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19P
QkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
Z29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdE9ialByaXZhdGUpKTsKKyAgICBnb2Jq
ZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X29ial9jb25zdHJ1Y3RvcjsK
ICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X29ial9maW5hbGl6
ZTsKICAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3Byb3BlcnR5OwogICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfcHJvcGVydHk7CkBAIC04OTEsNiArODk0LDggQEAgR19NQVhMT05HLCAv
KiBtYXggKi8KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktpdERP
TVRlc3RPYmoqIHJlcXVlc3QpCiB7CisgICAgV2ViS2l0RE9NVGVzdE9ialByaXZhdGUqIHByaXYg
PSBXRUJLSVRfRE9NX1RFU1RfT0JKX0dFVF9QUklWQVRFKHJlcXVlc3QpOworICAgIG5ldyAocHJp
dikgV2ViS2l0RE9NVGVzdE9ialByaXZhdGUoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmlu
ZGV4IDZhY2QzMzYuLmMzODRiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTMxLDYgKzMxLDEyIEBA
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2Rl
ZmluZSBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlNfR0VUX1BSSVZBVEUo
b2JqKSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUob2JqLCBXRUJLSVRfVFlQRV9ET01fVEVT
VF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnNQcml2YXRlKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNQcml2YXRlIHsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+IGNvcmVPYmplY3Q7Cit9IFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzUHJpdmF0ZTsKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYktpdERPTVRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzKiBraXQoV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMqIG9iaikKQEAgLTQwLDI3ICs0NiwxOSBAQCBXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyoga2l0KFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBvYgogICAg
IGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KHJl
dCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMob2JqKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRE
T01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9E
T01fVEVTVF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SUywgImNvcmUtb2JqZWN0Iiwgb2JqLCBOVUxM
KSk7CiB9CiAKIFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBjb3JlKFdlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOwogCi0gICAgV2ViQ29yZTo6VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0
KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIHJldHVy
biBjb3JlT2JqZWN0OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0
KTsKIH0KIAogV2ViS2l0RE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHdyYXBUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyhXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyog
Y29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsK
LQotICAgIC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9p
bnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1h
bGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0
aGUgbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVy
biBXRUJLSVRfRE9NX1RFU1RfT1ZFUkxPQURFRF9DT05TVFJVQ1RPUlMoZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX0RPTV9URVNUX09WRVJMT0FERURfQ09OU1RSVUNUT1JTLCAiY29yZS1vYmplY3Qi
LCBjb3JlT2JqZWN0LCBOVUxMKSk7CiB9CiAKQEAgLTcwLDI5ICs2OCwzNiBAQCBHX0RFRklORV9U
WVBFKFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLCB3ZWJraXRfZG9tX3Rlc3Rf
b3ZlcmxvYWRlZF9jbwogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9j
b25zdHJ1Y3RvcnNfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogeworICAgIFdlYktpdERPTVRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9P
VkVSTE9BREVEX0NPTlNUUlVDVE9SU19HRVRfUFJJVkFURShvYmplY3QpOwogCi0gICAgV2ViS2l0
RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAot
ICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyo+KGRvbU9iamVjdC0+Y29yZU9iamVjdCk7CisgICAg
V2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCkpOwog
Ci0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKLSAg
ICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKKyAgICBwcml2LT5+V2ViS2l0RE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2Rv
bV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CiAKLSAgICAgICAgZG9tT2JqZWN0LT5jb3JlT2JqZWN0ID0gMDsKLSAgICB9Citz
dGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29uc3RydWN0b3JzX2Nv
bnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgR09i
amVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQoreworICAgIEdPYmplY3Qq
IG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0
cnVjdG9yc19wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3Rvcih0eXBlLCBjb25zdHJ1Y3RQcm9wZXJ0
aWVzQ291bnQsIGNvbnN0cnVjdFByb3BlcnRpZXMpOwogCisgICAgV2ViS2l0RE9NVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX09WRVJMT0FE
RURfQ09OU1RSVUNUT1JTX0dFVF9QUklWQVRFKG9iamVjdCk7CisgICAgcHJpdi0+Y29yZU9iamVj
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKj4oV0VC
S0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0OjpET01PYmpl
Y3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7CiAKLSAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfcGFyZW50
X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKKyAgICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfY2xhc3NfaW5p
dChXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NsYXNzKiByZXF1ZXN0Q2xhc3Mp
CiB7CiAgICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1
ZXN0Q2xhc3MpOworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNp
emVvZihXZWJLaXRET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1ByaXZhdGUpKTsKKyAgICBn
b2JqZWN0Q2xhc3MtPmNvbnN0cnVjdG9yID0gd2Via2l0X2RvbV90ZXN0X292ZXJsb2FkZWRfY29u
c3RydWN0b3JzX2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJr
aXRfZG9tX3Rlc3Rfb3ZlcmxvYWRlZF9jb25zdHJ1Y3RvcnNfZmluYWxpemU7CiB9CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vdmVybG9hZGVkX2NvbnN0cnVjdG9yc19pbml0KFdlYktp
dERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiByZXF1ZXN0KQogeworICAgIFdlYktpdERP
TVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVT
VF9PVkVSTE9BREVEX0NPTlNUUlVDVE9SU19HRVRfUFJJVkFURShyZXF1ZXN0KTsKKyAgICBuZXcg
KHByaXYpIFdlYktpdERPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJpdmF0ZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDFlNGI3ZjEuLjI5Zjc3NjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zNCw2ICszNCwxNCBAQAogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNkZWZpbmUgV0VC
S0lUX0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRV9HRVRfUFJJVkFU
RShvYmopIEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShvYmosIFdFQktJVF9UWVBFX0RPTV9U
RVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRSwgV2ViS2l0RE9NVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGUpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0ZSB7CisjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBjb3JlT2JqZWN0OworI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK30gV2ViS2l0RE9N
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByaXZhdGU7CisKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDUsMjcgKzUzLDE5IEBAIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UqIGtpdChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhCiAgICAgaWYgKGdwb2lu
dGVyIHJldCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihyZXQp
OwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UqPihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShvYmopKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfU0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5U
RVJGQUNFLCAiY29yZS1vYmplY3QiLCBvYmosIE5VTEwpKTsKIH0KIAogV2ViQ29yZTo6VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZShXZWJLaXRET01UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiByZXF1ZXN0KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKHJlcXVlc3QsIDApOwogCi0gICAgV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29y
ZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7Ci0KLSAg
ICByZXR1cm4gY29yZU9iamVjdDsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KFdFQktJVF9ET01fT0JKRUNUKHJlcXVl
c3QpLT5jb3JlT2JqZWN0KTsKIH0KIAogV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogd3JhcFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoV2ViQ29y
ZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZU9iamVjdCkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKLQotICAgIC8vIFdlIGNhbGwg
cmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNh
bid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgIC8vIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBz
dHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0Y2hpbmcgZGVyZWYo
KS4KLSAgICBjb3JlT2JqZWN0LT5yZWYoKTsKLQogICAgIHJldHVybiBXRUJLSVRfRE9NX1RFU1Rf
U0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9ET01fVEVTVF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0UsICJjb3JlLW9iamVj
dCIsIGNvcmVPYmplY3QsIE5VTEwpKTsKIH0KIApAQCAtODYsMTkgKzg2LDExIEBAIGVudW0gewog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50
ZXJmYWNlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKKyAgICBXZWJLaXRET01UZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVT
VF9TRVJJQUxJWkVEX1NDUklQVF9WQUxVRV9JTlRFUkZBQ0VfR0VUX1BSSVZBVEUob2JqZWN0KTsK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgV2ViS2l0
RE9NT2JqZWN0KiBkb21PYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwotICAgIAot
ICAgIGlmIChkb21PYmplY3QtPmNvcmVPYmplY3QpIHsKLSAgICAgICAgV2ViQ29yZTo6VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihkb21PYmplY3QtPmNv
cmVPYmplY3QpOwotCi0gICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3Jl
T2JqZWN0KTsKLSAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsKLQotICAgICAgICBkb21PYmpl
Y3QtPmNvcmVPYmplY3QgPSAwOwotICAgIH0KKyAgICBXZWJLaXQ6OkRPTU9iamVjdENhY2hlOjpm
b3JnZXQocHJpdi0+Y29yZU9iamVjdC5nZXQoKSk7CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQotCisgICAgcHJpdi0+fldlYktpdERPTVRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlKCk7CiAgICAgR19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9wYXJlbnRf
Y2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC0xNjYsOSArMTU4LDIyIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vf
Z2V0X3Byb3BlcnR5KEdPYmplCiAgICAgfQogfQogCitzdGF0aWMgR09iamVjdCogd2Via2l0X2Rv
bV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9jb25zdHJ1Y3RvcihHVHlw
ZSB0eXBlLCBndWludCBjb25zdHJ1Y3RQcm9wZXJ0aWVzQ291bnQsIEdPYmplY3RDb25zdHJ1Y3RQ
YXJhbSogY29uc3RydWN0UHJvcGVydGllcykKK3sKKyAgICBHT2JqZWN0KiBvYmplY3QgPSBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJm
YWNlX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3BlcnRpZXND
b3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CisjaWYgRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVO
QUJMRShDb25kaXRpb24yKQorICAgIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lUX0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBU
X1ZBTFVFX0lOVEVSRkFDRV9HRVRfUFJJVkFURShvYmplY3QpOworICAgIHByaXYtPmNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKj4oV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KS0+Y29yZU9iamVjdCk7CisgICAgV2ViS2l0
OjpET01PYmplY3RDYWNoZTo6cHV0KHByaXYtPmNvcmVPYmplY3QuZ2V0KCksIG9iamVjdCk7Cisj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVk
X3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2xhc3MqIHJlcXVlc3RDbGFzcykKIHsKICAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAg
Z190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGdvYmplY3RDbGFzcywgc2l6ZW9mKFdlYktpdERPTVRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlKSk7CisgICAgZ29iamVjdENs
YXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1
ZV9pbnRlcmZhY2VfY29uc3RydWN0b3I7CiAgICAgZ29iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdl
YmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfZmluYWxpemU7
CiAgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFs
aXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eTsKIApAQCAtMjExLDYgKzIx
Niw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1
ZV9pbnRlcmZhY2VfY2xhc3NfaW5pdChXZWJLaXRECiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfaW5pdChXZWJLaXRET01UZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiByZXF1ZXN0KQogeworICAgIFdlYktpdERP
TVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcml2YXRlKiBwcml2ID0gV0VCS0lU
X0RPTV9URVNUX1NFUklBTElaRURfU0NSSVBUX1ZBTFVFX0lOVEVSRkFDRV9HRVRfUFJJVkFURShy
ZXF1ZXN0KTsKKyAgICBuZXcgKHByaXYpIFdlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VQcml2YXRlKCk7CiB9CiAKIHZvaWQK
</data>

          </attachment>
      

    </bug>

</bugzilla>