<?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>155226</bug_id>
          
          <creation_ts>2016-03-09 01:49:19 -0800</creation_ts>
          <short_desc>Rename Node.treeRoot to rootNode and turn it on by default</short_desc>
          <delta_ts>2016-03-09 19:10:00 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1172474</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-09 01:49:19 -0800</bug_when>
    <thetext>Rename Node.treeRoot to rootNode and turn it on by default</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172480</commentid>
    <comment_count>1</comment_count>
      <attachid>273415</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-09 01:58:22 -0800</bug_when>
    <thetext>Created attachment 273415
Renamed the function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172481</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-09 01:59:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/25056663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172514</commentid>
    <comment_count>3</comment_count>
      <attachid>273415</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2016-03-09 06:07:19 -0800</bug_when>
    <thetext>Comment on attachment 273415
Renamed the function

View in context: https://bugs.webkit.org/attachment.cgi?id=273415&amp;action=review

r=me

&gt; Source/WebCore/html/FormAssociatedElement.cpp:86
&gt; +// since inDocument flag maybe inaccurate.

s/maybe/may be/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172753</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-09 14:10:34 -0800</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #3)
&gt; Comment on attachment 273415 [details]
&gt; Renamed the function
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273415&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WebCore/html/FormAssociatedElement.cpp:86
&gt; &gt; +// since inDocument flag maybe inaccurate.
&gt; 
&gt; s/maybe/may be/ ?

Revised the whole comment as:

// Compute the highest ancestor instead of calling Node::rootNode in removedFrom / formRemovedFromTree
// since inDocument flag on some form associated elements may not have been updated yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172768</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-03-09 14:29:20 -0800</bug_when>
    <thetext>Committed r197887: &lt;http://trac.webkit.org/changeset/197887&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273415</attachid>
            <date>2016-03-09 01:58:22 -0800</date>
            <delta_ts>2016-03-09 06:07:19 -0800</delta_ts>
            <desc>Renamed the function</desc>
            <filename>bug-155226-20160309015809.patch</filename>
            <type>text/plain</type>
            <size>72007</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5Nzg0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTAzLTA5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmFtZSBOb2RlLnRyZWVSb290
IHRvIHJvb3ROb2RlIGFuZCB0dXJuIGl0IG9uIGJ5IGRlZmF1bHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTIyNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vZGUucHJvdG90eXBlLnRyZWVSb290IGhh
cyBiZWVuIG1lcmdlZCBpbnRvIERPTSBzcGVjIGZyb20gU2hhZG93IERPTSBzcGVjIGFuZCByZW5h
bWVkIHRvIHJvb3ROb2RlOgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2Rv
bS1ub2RlLXJvb3Rub2RlCisKKyAgICAgICAgUmVuYW1lIHRoZSBtZXRob2QgYW5kIGV4cG9zZSBp
dCB1bmNvbmRpdGlvbmFsbHkgb24gTm9kZS5wcm90b3R5cGUuCisKKyAgICAgICAgVGVzdHM6IGZh
c3QvZG9tL05vZGUvcm9vdE5vZGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9zaGFkb3ctZG9t
L05vZGUtaW50ZXJmYWNlLXJvb3ROb2RlLmh0bWwKKworICAgICAgICAqIGRvbS9Db250YWluZXJO
b2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoaWdoZXN0QW5jZXN0b3IpOiBEZWxldGVk
LiBUaGVyZSBpcyBubyBuZWVkIGZvciB0aGlzIGZ1bmN0aW9uIHRvIGJlIGlubGluZWQuCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6IE5vdyB0aGF0IGJvdGggVHJlZVNjb3BlIGFuZCBOb2RlIGRl
ZmluZXMgcm9vdE5vZGUsIHdlIG5lZWQgdG8gcGljayBlaXRoZXIuCisgICAgICAgIEhlcmUsIHdl
IHBpY2sgVHJlZVNjb3BlJ3MgZGVmaW5pdGlvbiBzaW5jZSBEb2N1bWVudCBpcyBieSBkZWZpbml0
aW9uIGFsd2F5cyBpbiBhIGRvY3VtZW50IHNvIHRoZXJlIGlzCisgICAgICAgIG5vIG5lZWQgdG8g
ZXZlbiBjaGVjayBpblRyZWVTY29wZSgpLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJvb3ROb2RlKTogTW92ZWQgaGVyZS4gQWxzbyBhZGRlZCBhIGZh
c3QgcGF0aCBmb3Igd2hlbiAidGhpcyIgbm9kZSBpcyBpbiBhIGRvY3VtZW50CisgICAgICAgIG9y
IGEgc2hhZG93IHJvb3Qgc2luY2UgVHJlZVNjb3BlIHN0b3JlcyBpdHMgcm9vdCBub2RlIGFzIGEg
bWVtYmVyIHZhcmlhYmxlIChtX3Jvb3ROb2RlKS4KKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAg
ICAgICAqIGRvbS9Ob2RlLmlkbDogUmVuYW1lZCB0aGUgbWV0aG9kIGFuZCByZW1vdmVkIENvbmRp
dGlvbmFsPVNIQURPV19ET00uCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDogU2ltaWxhciB0
byB0aGUgY2hhbmdlIGluIERvY3VtZW50LmguIFNlZSBhYm92ZS4KKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNl
cnZpbmdUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgpOiBVc2Ugcm9vdE5vZGUgaW5zdGVhZCBvZiBmcmVl
IGZ1bmN0aW9uCisgICAgICAgIGRlZmluZWQgaW4gaHRtbGVkaXRpbmcuY3BwLCB3aGljaCB3YXMg
cmVtb3ZlZCBpbiB0aGlzIHBhdGNoLgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6aGlnaGVzdEFuY2VzdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL2h0bWxlZGl0aW5nLmg6CisgICAgICAgICogaHRtbC9Gb3JtQXNzb2NpYXRlZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJvb3ROb2RlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJlbW92ZWRGcm9tKTogV2Ug
Y2FuJ3QgdXNlIE5vZGU6OnJvb3ROb2RlIGhlcmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uCisgICAg
ICAgIGlzIGNhbGxlZCBpbiB0aGUgbWlkZGxlIG9mIHJlbW92aW5nIGEgc3VidHJlZSwgYW5kIHNv
bWUgYXNzb2NpYXRlZCBmb3JtIGVsZW1lbnQncyBpbkRvY3VtZW50IGZsYWcgbWF5CisgICAgICAg
IG5vdCBoYXZlIGJlZW4gdXBkYXRlZCB5ZXQuIFNvIHVzZSBjb21wdXRlUm9vdE5vZGUgdG8gbWFu
dWFsbHkgZmluZCB0aGUgaGlnaGVzdCBhbmNlc3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6Zm9ybVJlbW92ZWRGcm9tVHJlZSk6IERpdHRvLgorICAgICAgICAq
IHhtbC9YUGF0aFBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6WFBhdGg6OkxvY2F0aW9uUGF0
aDo6ZXZhbHVhdGUpOgorCiAyMDE2LTAzLTA5ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVs
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQXJhYmljIHRleHQgb24gV2lraXBlZGlhIGlz
IHNob3duIGFzIGJveGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHJldmlz
aW9uIDE5NzgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxMiwxNSArMjEyLDYgQEAgaW5saW5lIE5vZGUqIE5vZGU6Omxhc3RDaGls
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCp0aGlzKS5sYXN0
Q2hpbGQoKTsKIH0KIAotaW5saW5lIE5vZGUqIE5vZGU6OmhpZ2hlc3RBbmNlc3RvcigpIGNvbnN0
Ci17Ci0gICAgTm9kZSogbm9kZSA9IGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpOwotICAgIE5vZGUq
IGhpZ2hlc3QgPSBub2RlOwotICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKQotICAgICAgICBoaWdoZXN0ID0gbm9kZTsKLSAgICByZXR1cm4gaGlnaGVzdDsKLX0KLQog
aW5saW5lIGJvb2wgTm9kZTo6aXNUcmVlU2NvcGUoKSBjb25zdAogewogICAgIHJldHVybiAmdHJl
ZVNjb3BlKCkucm9vdE5vZGUoKSA9PSB0aGlzOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJl
dmlzaW9uIDE5NzgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDAsNiArMzQwLDcgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQ29udGFpbmVy
Tm9kZTo6cmVmOwogICAgIHVzaW5nIENvbnRhaW5lck5vZGU6OmRlcmVmOworICAgIHVzaW5nIFRy
ZWVTY29wZTo6cm9vdE5vZGU7CiAKICAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZp
c2lvbiAxOTc4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMTAsNiArMTExMCwxOCBAQCBFbGVtZW50KiBOb2RlOjpwYXJlbnRPclNoYWRvd0hv
c3RFbGVtZW50CiAgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnQ+KHBhcmVudCk7CiB9CiAKK05v
ZGUqIE5vZGU6OnJvb3ROb2RlKCkgY29uc3QKK3sKKyAgICBpZiAoaXNJblRyZWVTY29wZSgpKQor
ICAgICAgICByZXR1cm4gJnRyZWVTY29wZSgpLnJvb3ROb2RlKCk7CisKKyAgICBOb2RlKiBub2Rl
ID0gY29uc3RfY2FzdDxOb2RlKj4odGhpcyk7CisgICAgTm9kZSogaGlnaGVzdCA9IG5vZGU7Cisg
ICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpCisgICAgICAgIGhpZ2hl
c3QgPSBub2RlOworICAgIHJldHVybiBoaWdoZXN0OworfQorCiBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IE5vZGU6Omluc2VydGVkSW50byhDb250YWluZXJOb2RlJiBpbnNlcnRp
b25Qb2ludCkKIHsKICAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQuaW5Eb2N1bWVudCgpIHx8IGlz
Q29udGFpbmVyTm9kZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTk3ODM0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDcgKzI3Niw3
IEBAIHB1YmxpYzoKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkg
Y29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0UGFyZW50Tm9kZShDb250YWluZXJOb2RlKik7Ci0gICAgTm9kZSogaGlnaGVz
dEFuY2VzdG9yKCkgY29uc3Q7CisgICAgTm9kZSogcm9vdE5vZGUoKSBjb25zdDsKIAogICAgIC8v
IFVzZSB3aGVuIGl0J3MgZ3VhcmFudGVlZCB0byB0aGF0IHNoYWRvd0hvc3QgaXMgbnVsbC4KICAg
ICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlR3VhcmFudGVlZEhvc3RGcmVlKCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaWRsCShyZXZpc2lvbiAxOTc4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTm9kZSAgICAgICAgICAgICBuZXh0U2libGluZzsKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRG9jdW1lbnQgICAgICAgICBvd25lckRvY3VtZW50OwogCi0gICAgW0NvbmRpdGlv
bmFsPVNIQURPV19ET00sIEltcGxlbWVudGVkQXM9aGlnaGVzdEFuY2VzdG9yXSByZWFkb25seSBh
dHRyaWJ1dGUgTm9kZSB0cmVlUm9vdDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSByb290
Tm9kZTsKIAogICAgIFtPYmpDTGVnYWN5VW5uYW1lZFBhcmFtZXRlcnMsIEN1c3RvbSwgUmFpc2Vz
RXhjZXB0aW9uXSBOb2RlIGluc2VydEJlZm9yZShbQ3VzdG9tUmV0dXJuXSBOb2RlIG5ld0NoaWxk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9kZSByZWZDaGlsZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHJldmlz
aW9uIDE5NzgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDYgKzYyLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U2hhZG93Um9v
dCgpOwogCisgICAgdXNpbmcgVHJlZVNjb3BlOjpyb290Tm9kZTsKKwogICAgIFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIoKTsKICAgICBBdXRob3JTdHlsZVNoZWV0cyYgYXV0aG9yU3R5bGVT
aGVldHMoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9u
IDE5NzgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjQyNyw3ICsyNDI3LDcgQEAgc3RhdGljIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVw
bGFjZW1lbnRUeQogCiBzdGF0aWMgdm9pZCBjb3JyZWN0U3BlbGxjaGVja2luZ1ByZXNlcnZpbmdU
ZXh0Q2hlY2tpbmdQYXJhZ3JhcGgoVGV4dENoZWNraW5nUGFyYWdyYXBoJiBwYXJhZ3JhcGgsIFBh
c3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9SZXBsYWNlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
LCBpbnQgcmVzdWx0TG9jYXRpb24sIGludCByZXN1bHRMZW5ndGgpCiB7Ci0gICAgQ29udGFpbmVy
Tm9kZSogc2NvcGUgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPihoaWdoZXN0QW5jZXN0b3IoJnBh
cmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpLT5zdGFydENvbnRhaW5lcigpKSk7CisgICAgQ29udGFp
bmVyTm9kZSogc2NvcGUgPSBkb3duY2FzdDxDb250YWluZXJOb2RlPihwYXJhZ3JhcGgucGFyYWdy
YXBoUmFuZ2UoKS0+c3RhcnRDb250YWluZXIoKS5yb290Tm9kZSgpKTsKIAogICAgIHNpemVfdCBw
YXJhZ3JhcGhMb2NhdGlvbjsKICAgICBzaXplX3QgcGFyYWdyYXBoTGVuZ3RoOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDE5NzgzNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
OTUsMTUgKzc5NSw2IEBAIGJvb2wgY2FuTWVyZ2VMaXN0cyhFbGVtZW50KiBmaXJzdExpc3QsIEUK
ICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgbm8gdmlzaWJsZSBjb250ZW50IGJldHdlZW4gdGhp
cyBsaSBhbmQgdGhlIHByZXZpb3VzIGxpc3QKIH0KIAotTm9kZSogaGlnaGVzdEFuY2VzdG9yKE5v
ZGUqIG5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUpOwotICAgIE5vZGUqIHBhcmVudCA9IG5vZGU7
Ci0gICAgd2hpbGUgKChub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSkKLSAgICAgICAgcGFyZW50
ID0gbm9kZTsKLSAgICByZXR1cm4gcGFyZW50OwotfQotCiBzdGF0aWMgTm9kZSogcHJldmlvdXNO
b2RlQ29uc2lkZXJpbmdBdG9taWNOb2Rlcyhjb25zdCBOb2RlKiBub2RlKQogewogICAgIGlmIChu
b2RlLT5wcmV2aW91c1NpYmxpbmcoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuaAkocmV2aXNpb24gMTk3ODM0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1s
ZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIFZpc2libGVT
ZWxlY3Rpb247CiAKIC8vIEZ1bmN0aW9ucyByZXR1cm5pbmcgTm9kZQogCi1Ob2RlKiBoaWdoZXN0
QW5jZXN0b3IoTm9kZSopOwogTm9kZSogaGlnaGVzdEVkaXRhYmxlUm9vdChjb25zdCBQb3NpdGlv
biYsIEVkaXRhYmxlVHlwZSA9IENvbnRlbnRJc0VkaXRhYmxlKTsKIAogTm9kZSogaGlnaGVzdEVu
Y2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBlKShj
b25zdCBOb2RlKiksCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRl
ZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxOTc4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDE3IEBA
IHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjppbnNlcnRlZEludG8KICAgICAgICAgcmVzZXRG
b3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoKTsKIH0KIAorLy8gQ29tcHV0ZSB0aGUgaGlnaGVz
dCBhbmNlc3RvciBpbnN0ZWFkIG9mIGNhbGxpbmcgTm9kZTo6cm9vdE5vZGUgaW4gcmVtb3ZlZEZy
b20gLyBmb3JtUmVtb3ZlZEZyb21UcmVlCisvLyBzaW5jZSBpbkRvY3VtZW50IGZsYWcgbWF5YmUg
aW5hY2N1cmF0ZS4KK3N0YXRpYyBOb2RlKiBjb21wdXRlUm9vdE5vZGUoTm9kZSYgbm9kZSkKK3sK
KyAgICBOb2RlKiBjdXJyZW50ID0gJm5vZGU7CisgICAgTm9kZSogcGFyZW50ID0gY3VycmVudDsK
KyAgICB3aGlsZSAoKGN1cnJlbnQgPSBjdXJyZW50LT5wYXJlbnROb2RlKCkpKQorICAgICAgICBw
YXJlbnQgPSBjdXJyZW50OworICAgIHJldHVybiBwYXJlbnQ7Cit9CisKIHZvaWQgRm9ybUFzc29j
aWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlJiBpbnNlcnRpb25Qb2ludCkK
IHsKICAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGFzSFRNTEVsZW1lbnQoKTsKQEAgLTg5LDcg
KzEwMCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZW1vdmVkRnJvbSgKICAgICAg
ICAgbV9mb3JtQXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIgPSBudWxscHRyOwogICAgIC8vIElmIHRo
ZSBmb3JtIGFuZCBlbGVtZW50IGFyZSBib3RoIGluIHRoZSBzYW1lIHRyZWUsIHByZXNlcnZlIHRo
ZSBjb25uZWN0aW9uIHRvIHRoZSBmb3JtLgogICAgIC8vIE90aGVyd2lzZSwgbnVsbCBvdXQgb3Vy
IGZvcm0gYW5kIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgZm9ybSdzIGxpc3Qgb2YgZWxlbWVu
dHMuCi0gICAgaWYgKG1fZm9ybSAmJiBlbGVtZW50LmhpZ2hlc3RBbmNlc3RvcigpICE9IG1fZm9y
bS0+aGlnaGVzdEFuY2VzdG9yKCkpCisgICAgaWYgKG1fZm9ybSAmJiBjb21wdXRlUm9vdE5vZGUo
ZWxlbWVudCkgIT0gY29tcHV0ZVJvb3ROb2RlKCptX2Zvcm0pKQogICAgICAgICBzZXRGb3JtKG51
bGxwdHIpOwogfQogCkBAIC0xMTcsNyArMTI4LDcgQEAgSFRNTEZvcm1FbGVtZW50KiBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6Ogogdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1SZW1vdmVk
RnJvbVRyZWUoY29uc3QgTm9kZSogZm9ybVJvb3QpCiB7CiAgICAgQVNTRVJUKG1fZm9ybSk7Ci0g
ICAgaWYgKGFzSFRNTEVsZW1lbnQoKS5oaWdoZXN0QW5jZXN0b3IoKSAhPSBmb3JtUm9vdCkKKyAg
ICBpZiAoY29tcHV0ZVJvb3ROb2RlKGFzSFRNTEVsZW1lbnQoKSkgIT0gZm9ybVJvb3QpCiAgICAg
ICAgIHNldEZvcm0obnVsbHB0cik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0
aFBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhdGguY3Bw
CShyZXZpc2lvbiAxOTc4MzQpCisrKyBTb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODgsMTIgKzg4LDggQEAgVmFsdWUgTG9jYXRpb25QYXRoOjpldmFs
dWF0ZSgpIGNvbnN0CiAgICAgLy8gVGhpcyBpcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEZpcmVm
b3gsIGFuZCBhbHNvIHNlZW1zIGxpa2UgYSBtb3JlCiAgICAgLy8gbG9naWNhbCB0cmVhdG1lbnQg
b2Ygd2hlcmUgeW91IHdvdWxkIGV4cGVjdCB0aGUgInJvb3QiIHRvIGJlLgogICAgIE5vZGUqIGNv
bnRleHQgPSBldmFsdWF0aW9uQ29udGV4dC5ub2RlLmdldCgpOwotICAgIGlmIChtX2lzQWJzb2x1
dGUgJiYgIWNvbnRleHQtPmlzRG9jdW1lbnROb2RlKCkpICB7Ci0gICAgICAgIGlmIChjb250ZXh0
LT5pbkRvY3VtZW50KCkpCi0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC0+b3duZXJEb2N1
bWVudCgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0ID0gY29udGV4dC0+aGln
aGVzdEFuY2VzdG9yKCk7Ci0gICAgfQorICAgIGlmIChtX2lzQWJzb2x1dGUgJiYgIWNvbnRleHQt
PmlzRG9jdW1lbnROb2RlKCkpCisgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LT5yb290Tm9kZSgp
OwogCiAgICAgTm9kZVNldCBub2RlczsKICAgICBub2Rlcy5hcHBlbmQoY29udGV4dCk7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxOTc4MzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNi0wMy0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgTm9kZS50cmVlUm9vdCB0byByb290Tm9kZSBh
bmQgdHVybiBpdCBvbiBieSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTUyMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFNwbGl0IE5vZGUtaW50ZXJmYWNlLXRyZWVSb290Lmh0
bWwgaW50byB0d28gcGllY2VzLCB0aGUgb25lIHRoYXQgZG9lc24ndCBpbnZva2Ugc2hhZG93IERP
TSBhbmQgdGhlIG90aGVyIHRoYXQgdGVzdHMKKyAgICAgICAgc2hhZG93IERPTSByZWxhdGVkIGNh
c2VzLiBJIGludGVuZCB0byB1cHN0cmVhbSB0aGVzZSB0ZXN0cyB0byBXM0MgYXQgc29tZSBwb2lu
dCBzbyBrZWVwIHRoZW0gaW4gdGVzdGhhcm5lc3MuanMgZm9ybS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL05vZGUvcm9vdE5vZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9Ob2RlL3Jvb3ROb2RlLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93
LWRvbS9Ob2RlLWludGVyZmFjZS10cmVlUm9vdC5odG1sLgorICAgICAgICAqIGZhc3Qvc2hhZG93
LWRvbS9Ob2RlLWludGVyZmFjZS1yb290Tm9kZS1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBO
b2RlLWludGVyZmFjZS10cmVlUm9vdC1leHBlY3RlZC50eHQuCisgICAgICAgICogZmFzdC9zaGFk
b3ctZG9tL05vZGUtaW50ZXJmYWNlLXJvb3ROb2RlLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2UtdHJlZVJvb3QuaHRtbC4KKyAgICAg
ICAgKiBqcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvanMvZG9tL2RvbS1zdGF0aWMtcHJvcGVydHkt
Zm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2pz
L2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0Ogor
CiAyMDE2LTAzLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
REZHIHNob3VsZCBiZSBhYmxlIHRvIGNvbnN0YW50LWZvbGQgc3RyaW5ncwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vTm9kZS9yb290Tm9kZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9kb20vTm9kZS9yb290Tm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlL3Jvb3ROb2RlLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKworUEFTUyByb290Tm9kZSBhdHRyaWJ1dGUg
bXVzdCBiZSBkZWZpbmVkIG9uIE5vZGUgaW50ZXJmYWNlIAorUEFTUyByb290Tm9kZSBhdHRyaWJ1
dGUgbXVzdCByZXR1cm4gdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gaXQgZG9lcyBub3QgaGF2ZSBh
bnkgcGFyZW50IAorUEFTUyByb290Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHBhcmVu
dCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBoYXMg
YSBzaW5nbGUgYW5jZXN0b3Igbm90IGluIGEgZG9jdW1lbnQgCitQQVNTIHJvb3ROb2RlIGF0dHJp
YnV0ZSBtdXN0IHJldHVybiB0aGUgZG9jdW1lbnQgd2hlbiBhIG5vZGUgaXMgaW4gZG9jdW1lbnQg
CitQQVNTIHJvb3ROb2RlIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGRvY3VtZW50IGZyYWdtZW50
IHdoZW4gYSBub2RlIGlzIGluIHRoZSBmcmFnbWVudCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vTm9kZS9yb290Tm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL05vZGUvcm9vdE5vZGUuaHRtbAkocmV2aXNpb24gMTk3ODM0KQkoZnJvbSBMYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2UtdHJlZVJvb3QuaHRtbDoxOTc4MzQpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9Ob2RlL3Jvb3ROb2RlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5TaGFkb3cgRE9NOiBFeHRlbnNpb25zIHRvIE5vZGUgaW50ZXJmYWNlPC90aXRsZT4KKzxtZXRh
IG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdhQHdl
YmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJOb2RlIGludGVyZmFjZSBt
dXN0IGhhdmUgdHJlZVJvb3QgYXR0cmlidXRlIj4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9ucy10
by1ub2RlLWludGVyZmFjZSI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
bG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90
cnVlKCd0cmVlUm9vdCcgaW4gTm9kZS5wcm90b3R5cGUsICd0cmVlUm9vdCBtdXN0IGJlIGRlZmlu
ZWQgb24gTm9kZS5wcm90b3R5cGUnKTsKKyAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAndHJlZVJvb3QgbXVzdCBiZSBkZWZpbmVkIG9u
IGEgZGl2IGVsZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCcnKSwgJ2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24gYSB0
ZXh0IG5vZGUnKTsKKyAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0
ZUNvbW1lbnQoJycpLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIGNvbW1lbnQg
bm9kZScpOworICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpLCAnYXNzaWduZWRTbG90IG11c3Qg
YmUgZGVmaW5lZCBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZScpOworICAgIGFzc2Vy
dF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQsICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZp
bmVkIG9uIGEgZG9jdW1lbnQgbm9kZScpOworICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2Vk
J30pLCAndHJlZVJvb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgY2xvc2VkIHNoYWRvdyByb290IGVs
ZW1lbnQnKTsKKyAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSksICd0cmVlUm9vdCBtdXN0
IGJlIGRlZmluZWQgb24gYSBvcGVuIHNoYWRvdyByb290IGVsZW1lbnQnKTsKK30sICd0cmVlUm9v
dCBhdHRyaWJ1dGUgbXVzdCBiZSBkZWZpbmVkIG9uIE5vZGUgaW50ZXJmYWNlJyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgYXNzZXJ0X2VxdWFscyhlbGVtZW50LnRyZWVSb290LCBlbGVtZW50LCAndHJl
ZVJvb3Qgb24gYW4gZWxlbWVudCB3aXRob3V0IGEgcGFyZW50IG11c3QgcmV0dXJuIHRoZSBlbGVt
ZW50IGl0c2VsZicpOworCisgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
Jyk7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCB0ZXh0LCAndHJlZVJvb3Qgb24g
YSB0ZXh0IG5vZGUgd2l0aG91dCBhIHBhcmVudCBtdXN0IHJldHVybiB0aGUgdGV4dCBub2RlIGl0
c2VsZicpOworCisgICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgcHJvY2Vzc2luZ0luc3RydWN0aW9u
LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgd2l0aG91dCBhIHBh
cmVudCBtdXN0IHJldHVybiB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlIGl0c2VsZicp
OworCisgICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC50cmVlUm9vdCwgZG9jdW1lbnQsICd0cmVl
Um9vdCBvbiBhIGRvY3VtZW50IG5vZGUgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50IGl0c2VsZicp
OworCisgICAgdmFyIGNsb3NlZFNoYWRvd1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7CisgICAgYXNzZXJ0X2VxdWFscyhj
bG9zZWRTaGFkb3dSb290LnRyZWVSb290LCBjbG9zZWRTaGFkb3dSb290LCAndHJlZVJvb3Qgb24g
YSBjbG9zZWQgc2hhZG93IHJvb3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicp
OworCisgICAgdmFyIG9wZW5TaGFkb3dSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKKyAgICBhc3NlcnRfZXF1YWxzKG9wZW5T
aGFkb3dSb290LnRyZWVSb290LCBvcGVuU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGEgb3BlbiBz
aGFkb3cgcm9vdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7Cit9LCAndHJl
ZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0IGRv
ZXMgbm90IGhhdmUgYW55IHBhcmVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGls
ZChlbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIHBhcmVudCwg
J3RyZWVSb290IG9uIGFuIGVsZW1lbnQgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJldHVy
biB0aGUgcGFyZW50IG5vZGUnKTsKKworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJycpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRleHQudHJlZVJvb3QsIHBhcmVudCwgJ3RyZWVSb290IG9uIGEgdGV4dCBub2RlIHdpdGgg
YSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBub2RlJyk7CisKKyAgICB2
YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24pCisgICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
dHJlZVJvb3QsIHBhcmVudCwgJ3RyZWVSb290IG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBu
b2RlIHdpdGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBub2RlJyk7
CisKKyAgICB2YXIgaG9zdFdpdGhDbG9zZWRTaGFkb3dSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGhvc3RXaXRoQ2xvc2VkU2hhZG93
Um9vdCk7CisgICAgdmFyIGNsb3NlZFNoYWRvd1Jvb3QgPSBob3N0V2l0aENsb3NlZFNoYWRvd1Jv
b3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOworICAgIGFzc2VydF9lcXVhbHMoY2xv
c2VkU2hhZG93Um9vdC50cmVlUm9vdCwgY2xvc2VkU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGEg
Y2xvc2VkIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUgYW5jZXN0b3Igb24gaXRzIGhvc3QgbXVz
dCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOworCisgICAgdmFyIGhvc3RXaXRoT3Bl
blNoYWRvd1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQu
YXBwZW5kQ2hpbGQoaG9zdFdpdGhPcGVuU2hhZG93Um9vdCk7CisgICAgdmFyIG9wZW5TaGFkb3dS
b290ID0gaG9zdFdpdGhPcGVuU2hhZG93Um9vdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30p
OworICAgIGFzc2VydF9lcXVhbHMob3BlblNoYWRvd1Jvb3QudHJlZVJvb3QsIG9wZW5TaGFkb3dS
b290LCAndHJlZVJvb3Qgb24gYSBvcGVuIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUgYW5jZXN0
b3Igb24gaXRzIGhvc3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOworfSwg
J3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGNv
bnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGhhcyBhIHNpbmdsZSBhbmNlc3Rv
ciBub3QgaW4gYSBkb2N1bWVudCcpOworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICB2YXIgcGFy
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChwYXJlbnQpOworCisgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhlbGVtZW50LnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290IG9uIGFuIGVs
ZW1lbnQgaW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7CisKKyAg
ICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTsKKyAgICBwYXJlbnQuYXBw
ZW5kQ2hpbGQodGV4dCk7CisgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCBkb2N1bWVu
dCwgJ3RyZWVSb290IG9uIGEgdGV4dCBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3QgcmV0dXJu
IHRoZSBkb2N1bWVudCcpOworCisgICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRvY3Vt
ZW50LmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKKyAgICBw
YXJlbnQuYXBwZW5kQ2hpbGQocHJvY2Vzc2luZ0luc3RydWN0aW9uKQorICAgIGFzc2VydF9lcXVh
bHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290IG9u
IGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3QgcmV0
dXJuIHRoZSBkb2N1bWVudCcpOworfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0
aGUgZG9jdW1lbnQgd2hlbiBhIG5vZGUgaXMgaW4gZG9jdW1lbnQgYW5kIG5vdCBpbiBhIHNoYWRv
dyB0cmVlJyk7CisKK2Z1bmN0aW9uIHRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUo
bW9kZSkgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICB2YXIgaG9zdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGhvc3QpOworCisgICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3co
e21vZGU6IG1vZGV9KTsKKyAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3AnKTsKKyAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChwYXJlbnQpOworCisgICAg
ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgICAg
ICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZWxl
bWVudC50cmVlUm9vdCwgc2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgaW5zaWRl
IGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7CisKKyAgICAgICAg
dmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CisgICAgICAgIHBhcmVudC5h
cHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCBz
aGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUg
bXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7CisKKyAgICAgICAgdmFyIHByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0
JywgJ2RhdGEnKTsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVj
dGlvbik7CisgICAgICAgIGFzc2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVS
b290LCBzaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5v
ZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7Cisg
ICAgfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgJyArIG1vZGUgKyAnIHNo
YWRvdyByb290IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBzaGFkb3cgaG9zdCBpcyBp
biBhIGRvY3VtZW50Jyk7Cit9CisKK3Rlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUo
J29wZW4nKTsKK3Rlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUoJ2Nsb3NlZCcpOwor
CitmdW5jdGlvbiB0ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKG91dGVy
TW9kZSwgaW5uZXJNb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAgIHZhciBv
dXRlckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChvdXRlckhvc3QpOworICAgICAgICB2YXIgb3V0ZXJTaGFkb3dS
b290ID0gb3V0ZXJIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogb3V0ZXJNb2RlfSk7CisKKyAgICAg
ICAgdmFyIGlubmVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsKKyAg
ICAgICAgb3V0ZXJTaGFkb3dSb290LmFwcGVuZENoaWxkKGlubmVySG9zdCk7CisgICAgICAgIHZh
ciBpbm5lclNoYWRvd1Jvb3QgPSBpbm5lckhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiBpbm5lck1v
ZGV9KTsKKworICAgICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcp
OworICAgICAgICBpbm5lclNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQocGFyZW50KTsKKworICAgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKyAgICAgICAg
cGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGVsZW1l
bnQudHJlZVJvb3QsIGlubmVyU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgaW5z
aWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOworCisgICAgICAg
IHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOworICAgICAgICBwYXJlbnQu
YXBwZW5kQ2hpbGQodGV4dCk7CisgICAgICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwg
aW5uZXJTaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93
IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOworCisgICAgICAgIHZhciBwcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24gPSBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3Rh
cmdldCcsICdkYXRhJyk7CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24pOworICAgICAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50
cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3Ry
dWN0aW9uIG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9k
ZScpOworICAgIH0sICd0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9k
ZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRl
IGEgJyArIGlubmVyTW9kZQorICAgICAgICArICcgc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhv
c3QgaXMgaW4gYW5vdGhlciAnICsgb3V0ZXJNb2RlICsgJyBzaGFkb3cgcm9vdCcpOworfQorCit0
ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgJ29wZW4nKTsK
K3Rlc3RUcmVlUm9vdE9uTm9kZUluc2lkZU5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAnY2xvc2Vk
Jyk7Cit0ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQnLCAn
b3BlbicpOwordGVzdFRyZWVSb290T25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnY2xvc2Vk
JywgJ2Nsb3NlZCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL05vZGUvcm9vdE5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9Ob2RlL3Jvb3ROb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL05vZGUvcm9vdE5vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw3
MyArMSw1NyBAQAogPCFET0NUWVBFIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgotPHRpdGxlPlNoYWRv
dyBET006IEV4dGVuc2lvbnMgdG8gTm9kZSBpbnRlcmZhY2U8L3RpdGxlPgorPHRpdGxlPkRPTTog
NC40LiBJbnRlcmZhY2UgTm9kZTwvdGl0bGU+CiA8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJS
eW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KLTxtZXRhIG5hbWU9
ImFzc2VydCIgY29udGVudD0iTm9kZSBpbnRlcmZhY2UgbXVzdCBoYXZlIHRyZWVSb290IGF0dHJp
YnV0ZSI+Ci08bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93M2MuZ2l0aHViLmlvL3dlYmNv
bXBvbmVudHMvc3BlYy9zaGFkb3cvI2V4dGVuc2lvbnMtdG8tbm9kZS1pbnRlcmZhY2UiPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
LTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmNzcyc+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik5vZGUgaW50ZXJmYWNlIG11c3Qg
aGF2ZSByb290Tm9kZSBhdHRyaWJ1dGUiPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1ub2RlLXJvb3Rub2RlIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5j
c3MnPgogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogPHNjcmlwdD4KIAog
dGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgYXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBOb2RlLnBy
b3RvdHlwZSwgJ3RyZWVSb290IG11c3QgYmUgZGVmaW5lZCBvbiBOb2RlLnByb3RvdHlwZScpOwot
ICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JyksICd0cmVlUm9vdCBtdXN0IGJlIGRlZmluZWQgb24gYSBkaXYgZWxlbWVudCcpOwotICAgIGFz
c2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLCAnYXNz
aWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIHRleHQgbm9kZScpOwotICAgIGFzc2VydF90
cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyksICdhc3NpZ25lZFNs
b3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgY29tbWVudCBub2RlJyk7Ci0gICAgYXNzZXJ0X3RydWUo
J3RyZWVSb290JyBpbiBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3Rhcmdl
dCcsICdkYXRhJyksICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgcHJvY2Vzc2lu
ZyBpbnN0cnVjdGlvbiBub2RlJyk7Ci0gICAgYXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBkb2N1
bWVudCwgJ2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24gYSBkb2N1bWVudCBub2RlJyk7
Ci0gICAgYXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSksICd0cmVlUm9vdCBtdXN0IGJlIGRl
ZmluZWQgb24gYSBjbG9zZWQgc2hhZG93IHJvb3QgZWxlbWVudCcpOwotICAgIGFzc2VydF90cnVl
KCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93
KHttb2RlOiAnb3Blbid9KSwgJ3RyZWVSb290IG11c3QgYmUgZGVmaW5lZCBvbiBhIG9wZW4gc2hh
ZG93IHJvb3QgZWxlbWVudCcpOwotfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IGJlIGRlZmlu
ZWQgb24gTm9kZSBpbnRlcmZhY2UnKTsKKyAgICBhc3NlcnRfdHJ1ZSgncm9vdE5vZGUnIGluIE5v
ZGUucHJvdG90eXBlLCAncm9vdE5vZGUgbXVzdCBiZSBkZWZpbmVkIG9uIE5vZGUucHJvdG90eXBl
Jyk7CisgICAgYXNzZXJ0X3RydWUoJ3Jvb3ROb2RlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKSwgJ3Jvb3ROb2RlIG11c3QgYmUgZGVmaW5lZCBvbiBhIGRpdiBlbGVtZW50Jyk7Cisg
ICAgYXNzZXJ0X3RydWUoJ3Jvb3ROb2RlJyBpbiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyks
ICdyb290Tm9kZSBtdXN0IGJlIGRlZmluZWQgb24gYSB0ZXh0IG5vZGUnKTsKKyAgICBhc3NlcnRf
dHJ1ZSgncm9vdE5vZGUnIGluIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpLCAncm9vdE5vZGUg
bXVzdCBiZSBkZWZpbmVkIG9uIGEgY29tbWVudCBub2RlJyk7CisgICAgYXNzZXJ0X3RydWUoJ3Jv
b3ROb2RlJyBpbiBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcs
ICdkYXRhJyksICdyb290Tm9kZSBtdXN0IGJlIGRlZmluZWQgb24gYSBwcm9jZXNzaW5nIGluc3Ry
dWN0aW9uIG5vZGUnKTsKKyAgICBhc3NlcnRfdHJ1ZSgncm9vdE5vZGUnIGluIGRvY3VtZW50LCAn
cm9vdE5vZGUgbXVzdCBiZSBkZWZpbmVkIG9uIGEgZG9jdW1lbnQgbm9kZScpOworfSwgJ3Jvb3RO
b2RlIGF0dHJpYnV0ZSBtdXN0IGJlIGRlZmluZWQgb24gTm9kZSBpbnRlcmZhY2UnKTsKIAogdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIGVsZW1lbnQsICd0
cmVlUm9vdCBvbiBhbiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQgbXVzdCByZXR1cm4gdGhlIGVs
ZW1lbnQgaXRzZWxmJyk7CisgICAgYXNzZXJ0X2VxdWFscyhlbGVtZW50LnJvb3ROb2RlLCBlbGVt
ZW50LCAncm9vdE5vZGUgb24gYW4gZWxlbWVudCB3aXRob3V0IGEgcGFyZW50IG11c3QgcmV0dXJu
IHRoZSBlbGVtZW50IGl0c2VsZicpOwogCiAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZSgnJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCB0ZXh0LCAndHJl
ZVJvb3Qgb24gYSB0ZXh0IG5vZGUgd2l0aG91dCBhIHBhcmVudCBtdXN0IHJldHVybiB0aGUgdGV4
dCBub2RlIGl0c2VsZicpOworICAgIGFzc2VydF9lcXVhbHModGV4dC5yb290Tm9kZSwgdGV4dCwg
J3Jvb3ROb2RlIG9uIGEgdGV4dCBub2RlIHdpdGhvdXQgYSBwYXJlbnQgbXVzdCByZXR1cm4gdGhl
IHRleHQgbm9kZSBpdHNlbGYnKTsKIAogICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBk
b2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7Ci0g
ICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24udHJlZVJvb3QsIHByb2Nlc3Np
bmdJbnN0cnVjdGlvbiwgJ3RyZWVSb290IG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2Rl
IHdpdGhvdXQgYSBwYXJlbnQgbXVzdCByZXR1cm4gdGhlIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24g
bm9kZSBpdHNlbGYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi5y
b290Tm9kZSwgcHJvY2Vzc2luZ0luc3RydWN0aW9uLCAncm9vdE5vZGUgb24gYSBwcm9jZXNzaW5n
IGluc3RydWN0aW9uIG5vZGUgd2l0aG91dCBhIHBhcmVudCBtdXN0IHJldHVybiB0aGUgcHJvY2Vz
c2luZyBpbnN0cnVjdGlvbiBub2RlIGl0c2VsZicpOwogCi0gICAgYXNzZXJ0X2VxdWFscyhkb2N1
bWVudC50cmVlUm9vdCwgZG9jdW1lbnQsICd0cmVlUm9vdCBvbiBhIGRvY3VtZW50IG5vZGUgbXVz
dCByZXR1cm4gdGhlIGRvY3VtZW50IGl0c2VsZicpOworICAgIGFzc2VydF9lcXVhbHMoZG9jdW1l
bnQucm9vdE5vZGUsIGRvY3VtZW50LCAncm9vdE5vZGUgb24gYSBkb2N1bWVudCBub2RlIG11c3Qg
cmV0dXJuIHRoZSBkb2N1bWVudCBpdHNlbGYnKTsKIAotICAgIHZhciBjbG9zZWRTaGFkb3dSb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJ30pOwotICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkU2hhZG93Um9vdC50cmVlUm9vdCwgY2xv
c2VkU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGEgY2xvc2VkIHNoYWRvdyByb290IG11c3QgcmV0
dXJuIHRoZSBzaGFkb3cgcm9vdCBpdHNlbGYnKTsKLQotICAgIHZhciBvcGVuU2hhZG93Um9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4n
fSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhvcGVuU2hhZG93Um9vdC50cmVlUm9vdCwgb3BlblNoYWRv
d1Jvb3QsICd0cmVlUm9vdCBvbiBhIG9wZW4gc2hhZG93IHJvb3QgbXVzdCByZXR1cm4gdGhlIHNo
YWRvdyByb290IGl0c2VsZicpOwotfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0
aGUgY29udGV4dCBvYmplY3Qgd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGFueSBwYXJlbnQnKTsKK30s
ICdyb290Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4g
aXQgZG9lcyBub3QgaGF2ZSBhbnkgcGFyZW50Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAg
IHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIAogICAgIHZhciBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgcGFyZW50LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOwotICAgIGFzc2VydF9lcXVhbHMoZWxlbWVudC50cmVlUm9vdCwgcGFy
ZW50LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCB3aXRoIGEgc2luZ2xlIGFuY2VzdG9yIG11c3Qg
cmV0dXJuIHRoZSBwYXJlbnQgbm9kZScpOworICAgIGFzc2VydF9lcXVhbHMoZWxlbWVudC5yb290
Tm9kZSwgcGFyZW50LCAncm9vdE5vZGUgb24gYW4gZWxlbWVudCB3aXRoIGEgc2luZ2xlIGFuY2Vz
dG9yIG11c3QgcmV0dXJuIHRoZSBwYXJlbnQgbm9kZScpOwogCiAgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CiAgICAgcGFyZW50LmFwcGVuZENoaWxkKHRleHQpOwot
ICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJvb3Qgb24gYSB0
ZXh0IG5vZGUgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJldHVybiB0aGUgcGFyZW50IG5v
ZGUnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQucm9vdE5vZGUsIHBhcmVudCwgJ3Jvb3ROb2Rl
IG9uIGEgdGV4dCBub2RlIHdpdGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBh
cmVudCBub2RlJyk7CiAKICAgICB2YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOwogICAgIHBhcmVu
dC5hcHBlbmRDaGlsZChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgYXNzZXJ0X2VxdWFscyhw
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24udHJlZVJvb3QsIHBhcmVudCwgJ3RyZWVSb290IG9uIGEgcHJv
Y2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlIHdpdGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1
cm4gdGhlIHBhcmVudCBub2RlJyk7CisgICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24ucm9vdE5vZGUsIHBhcmVudCwgJ3Jvb3ROb2RlIG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVj
dGlvbiBub2RlIHdpdGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBu
b2RlJyk7CiAKLSAgICB2YXIgaG9zdFdpdGhDbG9zZWRTaGFkb3dSb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgcGFyZW50LmFwcGVuZENoaWxkKGhvc3RXaXRoQ2xvc2Vk
U2hhZG93Um9vdCk7Ci0gICAgdmFyIGNsb3NlZFNoYWRvd1Jvb3QgPSBob3N0V2l0aENsb3NlZFNo
YWRvd1Jvb3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOwotICAgIGFzc2VydF9lcXVh
bHMoY2xvc2VkU2hhZG93Um9vdC50cmVlUm9vdCwgY2xvc2VkU2hhZG93Um9vdCwgJ3RyZWVSb290
IG9uIGEgY2xvc2VkIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUgYW5jZXN0b3Igb24gaXRzIGhv
c3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOwotCi0gICAgdmFyIGhvc3RX
aXRoT3BlblNoYWRvd1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBw
YXJlbnQuYXBwZW5kQ2hpbGQoaG9zdFdpdGhPcGVuU2hhZG93Um9vdCk7Ci0gICAgdmFyIG9wZW5T
aGFkb3dSb290ID0gaG9zdFdpdGhPcGVuU2hhZG93Um9vdC5hdHRhY2hTaGFkb3coe21vZGU6ICdv
cGVuJ30pOwotICAgIGFzc2VydF9lcXVhbHMob3BlblNoYWRvd1Jvb3QudHJlZVJvb3QsIG9wZW5T
aGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBvcGVuIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUg
YW5jZXN0b3Igb24gaXRzIGhvc3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicp
OwotfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGUgb2Yg
dGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGhhcyBhIHNpbmdsZSBh
bmNlc3RvciBub3QgaW4gYSBkb2N1bWVudCcpOworfSwgJ3Jvb3ROb2RlIGF0dHJpYnV0ZSBtdXN0
IHJldHVybiB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNv
bnRleHQgb2JqZWN0IGhhcyBhIHNpbmdsZSBhbmNlc3RvciBub3QgaW4gYSBkb2N1bWVudCcpOwog
CiB0ZXN0KGZ1bmN0aW9uICgpIHsKICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CkBAIC03NSw3NSArNTksMzUgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAKICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIHBhcmVu
dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKLSAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJv
b3QsIGRvY3VtZW50LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBkb2N1bWVudCBt
dXN0IHJldHVybiB0aGUgZG9jdW1lbnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQucm9v
dE5vZGUsIGRvY3VtZW50LCAncm9vdE5vZGUgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBkb2N1bWVu
dCBtdXN0IHJldHVybiB0aGUgZG9jdW1lbnQnKTsKIAogICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJycpOwogICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKLSAgICBh
c3NlcnRfZXF1YWxzKHRleHQudHJlZVJvb3QsIGRvY3VtZW50LCAndHJlZVJvb3Qgb24gYSB0ZXh0
IG5vZGUgaW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7CisgICAg
YXNzZXJ0X2VxdWFscyh0ZXh0LnJvb3ROb2RlLCBkb2N1bWVudCwgJ3Jvb3ROb2RlIG9uIGEgdGV4
dCBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCcpOwogCiAg
ICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocHJv
Y2Vzc2luZ0luc3RydWN0aW9uKQotICAgIGFzc2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0
aW9uLnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290IG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVj
dGlvbiBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCcpOwot
fSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgZG9jdW1lbnQgd2hlbiBhIG5v
ZGUgaXMgaW4gZG9jdW1lbnQgYW5kIG5vdCBpbiBhIHNoYWRvdyB0cmVlJyk7CisgICAgYXNzZXJ0
X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ucm9vdE5vZGUsIGRvY3VtZW50LCAncm9vdE5v
ZGUgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgaW5zaWRlIGEgZG9jdW1lbnQgbXVz
dCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7Cit9LCAncm9vdE5vZGUgYXR0cmlidXRlIG11c3QgcmV0
dXJuIHRoZSBkb2N1bWVudCB3aGVuIGEgbm9kZSBpcyBpbiBkb2N1bWVudCcpOworCit0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7CisgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHBhcmVudCk7CisKKyAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChl
bGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQucm9vdE5vZGUsIGZyYWdtZW50LCAn
cm9vdE5vZGUgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBkb2N1bWVudCBmcmFnbWVudCBtdXN0IHJl
dHVybiB0aGUgZnJhZ21lbnQnKTsKKworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJycpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRleHQucm9vdE5vZGUsIGZyYWdtZW50LCAncm9vdE5vZGUgb24gYSB0ZXh0IG5vZGUgaW5z
aWRlIGEgZG9jdW1lbnQgZnJhZ21lbnQgbXVzdCByZXR1cm4gdGhlIGZyYWdtZW50Jyk7CiAKLWZ1
bmN0aW9uIHRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUobW9kZSkgewotICAgIHRl
c3QoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgaG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOwotCi0g
ICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFkb3coe21vZGU6IG1vZGV9KTsK
LSAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKLSAgICAg
ICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChwYXJlbnQpOwotCi0gICAgICAgIHZhciBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwotICAgICAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQoZWxlbWVudCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZWxlbWVudC50cmVlUm9vdCwg
c2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRyZWUg
bXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7Ci0KLSAgICAgICAgdmFyIHRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Ci0gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0
KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCBzaGFkb3dSb290LCAndHJl
ZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gdGhl
IHNoYWRvdyByb290Jyk7Ci0KLSAgICAgICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRv
Y3VtZW50LmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKLSAg
ICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbik7Ci0gICAgICAg
IGFzc2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVSb290LCBzaGFkb3dSb290
LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgaW5zaWRlIGEgc2hh
ZG93IHRyZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7Ci0gICAgfSwgJ3RyZWVSb290
IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgJyArIG1vZGUgKyAnIHNoYWRvdyByb290IG9mIHRo
ZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBzaGFkb3cgaG9zdCBpcyBpbiBhIGRvY3VtZW50Jyk7
Ci19Ci0KLXRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUoJ29wZW4nKTsKLXRlc3RU
cmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUoJ2Nsb3NlZCcpOwotCi1mdW5jdGlvbiB0ZXN0
VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKG91dGVyTW9kZSwgaW5uZXJNb2Rl
KSB7Ci0gICAgdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZhciBvdXRlckhvc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChvdXRlckhvc3QpOwotICAgICAgICB2YXIgb3V0ZXJTaGFkb3dSb290ID0gb3V0ZXJIb3N0
LmF0dGFjaFNoYWRvdyh7bW9kZTogb3V0ZXJNb2RlfSk7Ci0KLSAgICAgICAgdmFyIGlubmVySG9z
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsKLSAgICAgICAgb3V0ZXJTaGFk
b3dSb290LmFwcGVuZENoaWxkKGlubmVySG9zdCk7Ci0gICAgICAgIHZhciBpbm5lclNoYWRvd1Jv
b3QgPSBpbm5lckhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiBpbm5lck1vZGV9KTsKLQotICAgICAg
ICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwotICAgICAgICBpbm5l
clNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQocGFyZW50KTsKLQotICAgICAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAgICAgcGFyZW50LmFwcGVuZENo
aWxkKGVsZW1lbnQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIGlu
bmVyU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgaW5zaWRlIGEgc2hhZG93IHRy
ZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOwotCi0gICAgICAgIHZhciB0ZXh0ID0gZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwotICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodGV4
dCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290
LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1
cm4gaXRzIHJvb3Qgbm9kZScpOwotCi0gICAgICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24g
PSBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7
Ci0gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAg
ICAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgaW5uZXJT
aGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgaW5z
aWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOwotICAgIH0sICd0
cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4
dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgJyArIGlubmVyTW9k
ZQotICAgICAgICArICcgc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhvc3QgaXMgaW4gYW5vdGhl
ciAnICsgb3V0ZXJNb2RlICsgJyBzaGFkb3cgcm9vdCcpOwotfQotCi10ZXN0VHJlZVJvb3RPbk5v
ZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgJ29wZW4nKTsKLXRlc3RUcmVlUm9vdE9u
Tm9kZUluc2lkZU5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAnY2xvc2VkJyk7Ci10ZXN0VHJlZVJv
b3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQnLCAnb3BlbicpOwotdGVzdFRy
ZWVSb290T25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnY2xvc2VkJywgJ2Nsb3NlZCcpOwor
ICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKHBy
b2Nlc3NpbmdJbnN0cnVjdGlvbikKKyAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVj
dGlvbi5yb290Tm9kZSwgZnJhZ21lbnQsCisgICAgICAgICdyb290Tm9kZSBvbiBhIHByb2Nlc3Np
bmcgaW5zdHJ1Y3Rpb24gbm9kZSBpbnNpZGUgYSBkb2N1bWVudCBmcmFnbWVudCBtdXN0IHJldHVy
biB0aGUgZnJhZ21lbnQnKTsKK30sICdyb290Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gYSBk
b2N1bWVudCBmcmFnbWVudCB3aGVuIGEgbm9kZSBpcyBpbiB0aGUgZnJhZ21lbnQnKTsKIAogPC9z
Y3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1p
bnRlcmZhY2Utcm9vdE5vZGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS9Ob2RlLWludGVyZmFjZS1yb290Tm9kZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE5NzgzNCkJKGZyb20gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vZGUtaW50
ZXJmYWNlLXRyZWVSb290LWV4cGVjdGVkLnR4dDoxOTc4MzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2Utcm9vdE5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCBi
ZSBkZWZpbmVkIG9uIE5vZGUgaW50ZXJmYWNlIAorUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVz
dCByZXR1cm4gdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gaXQgZG9lcyBub3QgaGF2ZSBhbnkgcGFy
ZW50IAorUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBub2Rl
IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBoYXMgYSBzaW5n
bGUgYW5jZXN0b3Igbm90IGluIGEgZG9jdW1lbnQgCitQQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBt
dXN0IHJldHVybiB0aGUgZG9jdW1lbnQgd2hlbiBhIG5vZGUgaXMgaW4gZG9jdW1lbnQgYW5kIG5v
dCBpbiBhIHNoYWRvdyB0cmVlIAorUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4g
dGhlIG9wZW4gc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIHNoYWRv
dyBob3N0IGlzIGluIGEgZG9jdW1lbnQgCitQQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgY2xvc2VkIHNoYWRvdyByb290IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRo
ZSBzaGFkb3cgaG9zdCBpcyBpbiBhIGRvY3VtZW50IAorUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUg
bXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUg
Y29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgb3BlbiBzaGFkb3cgcm9vdCB3aG9zZSBzaGFkb3cg
aG9zdCBpcyBpbiBhbm90aGVyIG9wZW4gc2hhZG93IHJvb3QgCitQQVNTIHRyZWVSb290IGF0dHJp
YnV0ZSBtdXN0IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVu
IHRoZSBjb250ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3Qgd2hvc2Ug
c2hhZG93IGhvc3QgaXMgaW4gYW5vdGhlciBvcGVuIHNoYWRvdyByb290IAorUEFTUyB0cmVlUm9v
dCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4dCBvYmpl
Y3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgb3BlbiBzaGFkb3cgcm9vdCB3
aG9zZSBzaGFkb3cgaG9zdCBpcyBpbiBhbm90aGVyIGNsb3NlZCBzaGFkb3cgcm9vdCAKK1BBU1Mg
dHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSByb290IG5vZGUgb2YgdGhlIGNvbnRl
eHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGluc2lkZSBhIGNsb3NlZCBzaGFk
b3cgcm9vdCB3aG9zZSBzaGFkb3cgaG9zdCBpcyBpbiBhbm90aGVyIGNsb3NlZCBzaGFkb3cgcm9v
dCAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vZGUtaW50ZXJmYWNlLXJv
b3ROb2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vTm9kZS1pbnRlcmZhY2Utcm9vdE5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2Utcm9vdE5vZGUt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACiAKLVBBU1MgdHJl
ZVJvb3QgYXR0cmlidXRlIG11c3QgYmUgZGVmaW5lZCBvbiBOb2RlIGludGVyZmFjZSAKLVBBU1Mg
dHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0
IGRvZXMgbm90IGhhdmUgYW55IHBhcmVudCAKLVBBU1MgdHJlZVJvb3QgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29u
dGV4dCBvYmplY3QgaGFzIGEgc2luZ2xlIGFuY2VzdG9yIG5vdCBpbiBhIGRvY3VtZW50IAotUEFT
UyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50IHdoZW4gYSBub2Rl
IGlzIGluIGRvY3VtZW50IGFuZCBub3QgaW4gYSBzaGFkb3cgdHJlZSAKLVBBU1MgdHJlZVJvb3Qg
YXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBvcGVuIHNoYWRvdyByb290IG9mIHRoZSBjb250ZXh0
IG9iamVjdCB3aGVuIHRoZSBzaGFkb3cgaG9zdCBpcyBpbiBhIGRvY3VtZW50IAotUEFTUyB0cmVl
Um9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGNsb3NlZCBzaGFkb3cgcm9vdCBvZiB0aGUg
Y29udGV4dCBvYmplY3Qgd2hlbiB0aGUgc2hhZG93IGhvc3QgaXMgaW4gYSBkb2N1bWVudCAKLVBB
U1MgdHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSByb290IG5vZGUgb2YgdGhlIGNv
bnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGluc2lkZSBhIG9wZW4gc2hh
ZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhvc3QgaXMgaW4gYW5vdGhlciBvcGVuIHNoYWRvdyByb290
IAotUEFTUyB0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0
aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgY2xv
c2VkIHNoYWRvdyByb290IHdob3NlIHNoYWRvdyBob3N0IGlzIGluIGFub3RoZXIgb3BlbiBzaGFk
b3cgcm9vdCAKLVBBU1MgdHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSByb290IG5v
ZGUgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGluc2lk
ZSBhIG9wZW4gc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhvc3QgaXMgaW4gYW5vdGhlciBjbG9z
ZWQgc2hhZG93IHJvb3QgCi1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUg
cm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBp
cyBpbnNpZGUgYSBjbG9zZWQgc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhvc3QgaXMgaW4gYW5v
dGhlciBjbG9zZWQgc2hhZG93IHJvb3QgCitQQVNTIHJvb3ROb2RlIGF0dHJpYnV0ZSBtdXN0IGJl
IGRlZmluZWQgb24gU2hhZG93Um9vdCBpbnRlcmZhY2UgCitQQVNTIHJvb3ROb2RlIGF0dHJpYnV0
ZSBtdXN0IHJldHVybiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGFu
eSBwYXJlbnQgCitQQVNTIHJvb3ROb2RlIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcGFyZW50
IG5vZGUgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGhhcyBh
IHNpbmdsZSBhbmNlc3RvciBub3QgaW4gYSBkb2N1bWVudCAKK1BBU1Mgcm9vdE5vZGUgYXR0cmli
dXRlIG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCB3aGVuIGEgbm9kZSBpcyBpbiBkb2N1bWVudCBh
bmQgbm90IGluIGEgc2hhZG93IHRyZWUgCitQQVNTIHJvb3ROb2RlIGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgb3BlbiBzaGFkb3cgcm9vdCBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUg
c2hhZG93IGhvc3QgaXMgaW4gYSBkb2N1bWVudCAKK1BBU1Mgcm9vdE5vZGUgYXR0cmlidXRlIG11
c3QgcmV0dXJuIHRoZSBjbG9zZWQgc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdo
ZW4gdGhlIHNoYWRvdyBob3N0IGlzIGluIGEgZG9jdW1lbnQgCitQQVNTIHJvb3ROb2RlIGF0dHJp
YnV0ZSBtdXN0IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVu
IHRoZSBjb250ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSBvcGVuIHNoYWRvdyByb290IHdob3NlIHNo
YWRvdyBob3N0IGlzIGluIGFub3RoZXIgb3BlbiBzaGFkb3cgcm9vdCAKK1BBU1Mgcm9vdE5vZGUg
YXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSByb290IG5vZGUgb2YgdGhlIGNvbnRleHQgb2JqZWN0
IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGlzIGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCB3
aG9zZSBzaGFkb3cgaG9zdCBpcyBpbiBhbm90aGVyIG9wZW4gc2hhZG93IHJvb3QgCitQQVNTIHJv
b3ROb2RlIGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0
IG9iamVjdCB3aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSBvcGVuIHNoYWRvdyBy
b290IHdob3NlIHNoYWRvdyBob3N0IGlzIGluIGFub3RoZXIgY2xvc2VkIHNoYWRvdyByb290IAor
UEFTUyByb290Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUg
Y29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgY2xvc2Vk
IHNoYWRvdyByb290IHdob3NlIHNoYWRvdyBob3N0IGlzIGluIGFub3RoZXIgY2xvc2VkIHNoYWRv
dyByb290IAogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZh
Y2Utcm9vdE5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vTm9kZS1pbnRlcmZhY2Utcm9vdE5vZGUuaHRtbAkocmV2aXNpb24gMTk3ODM0KQkoZnJvbSBM
YXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2UtdHJlZVJvb3QuaHRtbDox
OTc4MzQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2Utcm9v
dE5vZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlNoYWRvdyBET006IEV4dGVuc2lvbnMgdG8gTm9k
ZSBpbnRlcmZhY2U8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBO
aXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9Ik5vZGUgaW50ZXJmYWNlIG11c3QgaGF2ZSB0cmVlUm9vdCBhdHRyaWJ1dGUiPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRz
L3NwZWMvc2hhZG93LyNleHRlbnNpb25zLXRvLW5vZGUtaW50ZXJmYWNlIj4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayBy
ZWw9J3N0eWxlc2hlZXQnIGhyZWY9Jy4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnPgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBOb2RlLnByb3RvdHlw
ZSwgJ3RyZWVSb290IG11c3QgYmUgZGVmaW5lZCBvbiBOb2RlLnByb3RvdHlwZScpOworICAgIGFz
c2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksICd0
cmVlUm9vdCBtdXN0IGJlIGRlZmluZWQgb24gYSBkaXYgZWxlbWVudCcpOworICAgIGFzc2VydF90
cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpLCAnYXNzaWduZWRT
bG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIHRleHQgbm9kZScpOworICAgIGFzc2VydF90cnVlKCd0
cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyksICdhc3NpZ25lZFNsb3QgbXVz
dCBiZSBkZWZpbmVkIG9uIGEgY29tbWVudCBub2RlJyk7CisgICAgYXNzZXJ0X3RydWUoJ3RyZWVS
b290JyBpbiBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdk
YXRhJyksICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgcHJvY2Vzc2luZyBpbnN0
cnVjdGlvbiBub2RlJyk7CisgICAgYXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBkb2N1bWVudCwg
J2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24gYSBkb2N1bWVudCBub2RlJyk7CisgICAg
YXNzZXJ0X3RydWUoJ3RyZWVSb290JyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5h
dHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSksICd0cmVlUm9vdCBtdXN0IGJlIGRlZmluZWQg
b24gYSBjbG9zZWQgc2hhZG93IHJvb3QgZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKCd0cmVl
Um9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2Rl
OiAnb3Blbid9KSwgJ3RyZWVSb290IG11c3QgYmUgZGVmaW5lZCBvbiBhIG9wZW4gc2hhZG93IHJv
b3QgZWxlbWVudCcpOworfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IGJlIGRlZmluZWQgb24g
Tm9kZSBpbnRlcmZhY2UnKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVsZW1l
bnQudHJlZVJvb3QsIGVsZW1lbnQsICd0cmVlUm9vdCBvbiBhbiBlbGVtZW50IHdpdGhvdXQgYSBw
YXJlbnQgbXVzdCByZXR1cm4gdGhlIGVsZW1lbnQgaXRzZWxmJyk7CisKKyAgICB2YXIgdGV4dCA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQudHJl
ZVJvb3QsIHRleHQsICd0cmVlUm9vdCBvbiBhIHRleHQgbm9kZSB3aXRob3V0IGEgcGFyZW50IG11
c3QgcmV0dXJuIHRoZSB0ZXh0IG5vZGUgaXRzZWxmJyk7CisKKyAgICB2YXIgcHJvY2Vzc2luZ0lu
c3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQn
LCAnZGF0YScpOworICAgIGFzc2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVS
b290LCBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sICd0cmVlUm9vdCBvbiBhIHByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb24gbm9kZSB3aXRob3V0IGEgcGFyZW50IG11c3QgcmV0dXJuIHRoZSBwcm9jZXNzaW5n
IGluc3RydWN0aW9uIG5vZGUgaXRzZWxmJyk7CisKKyAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50
LnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290IG9uIGEgZG9jdW1lbnQgbm9kZSBtdXN0IHJl
dHVybiB0aGUgZG9jdW1lbnQgaXRzZWxmJyk7CisKKyAgICB2YXIgY2xvc2VkU2hhZG93Um9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3Nl
ZCd9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNsb3NlZFNoYWRvd1Jvb3QudHJlZVJvb3QsIGNsb3Nl
ZFNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIGNsb3NlZCBzaGFkb3cgcm9vdCBtdXN0IHJldHVy
biB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7CisKKyAgICB2YXIgb3BlblNoYWRvd1Jvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVuJ30p
OworICAgIGFzc2VydF9lcXVhbHMob3BlblNoYWRvd1Jvb3QudHJlZVJvb3QsIG9wZW5TaGFkb3dS
b290LCAndHJlZVJvb3Qgb24gYSBvcGVuIHNoYWRvdyByb290IG11c3QgcmV0dXJuIHRoZSBzaGFk
b3cgcm9vdCBpdHNlbGYnKTsKK30sICd0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhl
IGNvbnRleHQgb2JqZWN0IHdoZW4gaXQgZG9lcyBub3QgaGF2ZSBhbnkgcGFyZW50Jyk7CisKK3Rl
c3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIGFzc2VydF9lcXVhbHMo
ZWxlbWVudC50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCB3aXRoIGEg
c2luZ2xlIGFuY2VzdG9yIG11c3QgcmV0dXJuIHRoZSBwYXJlbnQgbm9kZScpOworCisgICAgdmFy
IHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CisgICAgcGFyZW50LmFwcGVuZENo
aWxkKHRleHQpOworICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgcGFyZW50LCAndHJl
ZVJvb3Qgb24gYSB0ZXh0IG5vZGUgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJldHVybiB0
aGUgcGFyZW50IG5vZGUnKTsKKworICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBkb2N1
bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7CisgICAg
cGFyZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbikKKyAgICBhc3NlcnRfZXF1
YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJvb3Qgb24g
YSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0
IHJldHVybiB0aGUgcGFyZW50IG5vZGUnKTsKKworICAgIHZhciBob3N0V2l0aENsb3NlZFNoYWRv
d1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBwYXJlbnQuYXBwZW5k
Q2hpbGQoaG9zdFdpdGhDbG9zZWRTaGFkb3dSb290KTsKKyAgICB2YXIgY2xvc2VkU2hhZG93Um9v
dCA9IGhvc3RXaXRoQ2xvc2VkU2hhZG93Um9vdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQn
fSk7CisgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRTaGFkb3dSb290LnRyZWVSb290LCBjbG9zZWRT
aGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBjbG9zZWQgc2hhZG93IHJvb3Qgd2l0aCBhIHNpbmds
ZSBhbmNlc3RvciBvbiBpdHMgaG9zdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxm
Jyk7CisKKyAgICB2YXIgaG9zdFdpdGhPcGVuU2hhZG93Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0V2l0aE9wZW5TaGFkb3dS
b290KTsKKyAgICB2YXIgb3BlblNoYWRvd1Jvb3QgPSBob3N0V2l0aE9wZW5TaGFkb3dSb290LmF0
dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CisgICAgYXNzZXJ0X2VxdWFscyhvcGVuU2hhZG93
Um9vdC50cmVlUm9vdCwgb3BlblNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIG9wZW4gc2hhZG93
IHJvb3Qgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBvbiBpdHMgaG9zdCBtdXN0IHJldHVybiB0aGUg
c2hhZG93IHJvb3QgaXRzZWxmJyk7Cit9LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJu
IHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBv
YmplY3QgaGFzIGEgc2luZ2xlIGFuY2VzdG9yIG5vdCBpbiBhIGRvY3VtZW50Jyk7CisKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhcmVudCk7CisKKyAgICB2YXIg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHBhcmVudC5hcHBl
bmRDaGlsZChlbGVtZW50KTsKKyAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIGRv
Y3VtZW50LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBkb2N1bWVudCBtdXN0IHJl
dHVybiB0aGUgZG9jdW1lbnQnKTsKKworICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJycpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBhc3NlcnRfZXF1
YWxzKHRleHQudHJlZVJvb3QsIGRvY3VtZW50LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5z
aWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7CisKKyAgICB2YXIgcHJv
Y2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9u
KCd0YXJnZXQnLCAnZGF0YScpOworICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24pCisgICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24udHJlZVJv
b3QsIGRvY3VtZW50LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUg
aW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7Cit9LCAndHJlZVJv
b3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCB3aGVuIGEgbm9kZSBpcyBpbiBk
b2N1bWVudCBhbmQgbm90IGluIGEgc2hhZG93IHRyZWUnKTsKKworZnVuY3Rpb24gdGVzdFRyZWVS
b290T25Ob2RlSW5zaWRlU2hhZG93VHJlZShtb2RlKSB7CisgICAgdGVzdChmdW5jdGlvbiAoKSB7
CisgICAgICAgIHZhciBob3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9zdCk7CisKKyAgICAgICAgdmFyIHNoYWRv
d1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogbW9kZX0pOworICAgICAgICB2YXIgcGFy
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworICAgICAgICBzaGFkb3dSb290LmFw
cGVuZENoaWxkKHBhcmVudCk7CisKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzcGFuJyk7CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChlbGVtZW50KTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhlbGVtZW50LnRyZWVSb290LCBzaGFkb3dSb290LCAndHJl
ZVJvb3Qgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiB0aGUg
c2hhZG93IHJvb3QnKTsKKworICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCcnKTsKKyAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHRleHQpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHRleHQudHJlZVJvb3QsIHNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIHRleHQg
bm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QnKTsK
KworICAgICAgICB2YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOworICAgICAgICBwYXJlbnQuYXBw
ZW5kQ2hpbGQocHJvY2Vzc2luZ0luc3RydWN0aW9uKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhw
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24udHJlZVJvb3QsIHNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBh
IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJl
dHVybiB0aGUgc2hhZG93IHJvb3QnKTsKKyAgICB9LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSAnICsgbW9kZSArICcgc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0
IHdoZW4gdGhlIHNoYWRvdyBob3N0IGlzIGluIGEgZG9jdW1lbnQnKTsKK30KKwordGVzdFRyZWVS
b290T25Ob2RlSW5zaWRlU2hhZG93VHJlZSgnb3BlbicpOwordGVzdFRyZWVSb290T25Ob2RlSW5z
aWRlU2hhZG93VHJlZSgnY2xvc2VkJyk7CisKK2Z1bmN0aW9uIHRlc3RUcmVlUm9vdE9uTm9kZUlu
c2lkZU5lc3RlZFNoYWRvd1RyZWUob3V0ZXJNb2RlLCBpbm5lck1vZGUpIHsKKyAgICB0ZXN0KGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgdmFyIG91dGVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG91dGVySG9zdCk7
CisgICAgICAgIHZhciBvdXRlclNoYWRvd1Jvb3QgPSBvdXRlckhvc3QuYXR0YWNoU2hhZG93KHtt
b2RlOiBvdXRlck1vZGV9KTsKKworICAgICAgICB2YXIgaW5uZXJIb3N0ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2VjdGlvbicpOworICAgICAgICBvdXRlclNoYWRvd1Jvb3QuYXBwZW5kQ2hp
bGQoaW5uZXJIb3N0KTsKKyAgICAgICAgdmFyIGlubmVyU2hhZG93Um9vdCA9IGlubmVySG9zdC5h
dHRhY2hTaGFkb3coe21vZGU6IGlubmVyTW9kZX0pOworCisgICAgICAgIHZhciBwYXJlbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgICAgIGlubmVyU2hhZG93Um9vdC5hcHBl
bmRDaGlsZChwYXJlbnQpOworCisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc3BhbicpOworICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoZWxlbWVudC50cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290LCAn
dHJlZVJvb3Qgb24gYW4gZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiBp
dHMgcm9vdCBub2RlJyk7CisKKyAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgnJyk7CisgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCBpbm5lclNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBh
IHRleHQgbm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiBpdHMgcm9vdCBub2Rl
Jyk7CisKKyAgICAgICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRvY3VtZW50LmNyZWF0
ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKKyAgICAgICAgcGFyZW50
LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbik7CisgICAgICAgIGFzc2VydF9lcXVh
bHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVSb290LCBpbm5lclNoYWRvd1Jvb3QsICd0cmVl
Um9vdCBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJl
ZSBtdXN0IHJldHVybiBpdHMgcm9vdCBub2RlJyk7CisgICAgfSwgJ3RyZWVSb290IGF0dHJpYnV0
ZSBtdXN0IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRo
ZSBjb250ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSAnICsgaW5uZXJNb2RlCisgICAgICAgICsgJyBz
aGFkb3cgcm9vdCB3aG9zZSBzaGFkb3cgaG9zdCBpcyBpbiBhbm90aGVyICcgKyBvdXRlck1vZGUg
KyAnIHNoYWRvdyByb290Jyk7Cit9CisKK3Rlc3RUcmVlUm9vdE9uTm9kZUluc2lkZU5lc3RlZFNo
YWRvd1RyZWUoJ29wZW4nLCAnb3BlbicpOwordGVzdFRyZWVSb290T25Ob2RlSW5zaWRlTmVzdGVk
U2hhZG93VHJlZSgnb3BlbicsICdjbG9zZWQnKTsKK3Rlc3RUcmVlUm9vdE9uTm9kZUluc2lkZU5l
c3RlZFNoYWRvd1RyZWUoJ2Nsb3NlZCcsICdvcGVuJyk7Cit0ZXN0VHJlZVJvb3RPbk5vZGVJbnNp
ZGVOZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQnLCAnY2xvc2VkJyk7CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL05vZGUtaW50
ZXJmYWNlLXJvb3ROb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFk
b3ctZG9tL05vZGUtaW50ZXJmYWNlLXJvb3ROb2RlLmh0bWwJKHdvcmtpbmcgY29weSkKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9Ob2RlLWludGVyZmFjZS1yb290Tm9kZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8dGl0bGU+U2hhZG93IERPTTog
RXh0ZW5zaW9ucyB0byBOb2RlIGludGVyZmFjZTwvdGl0bGU+CiA8bWV0YSBuYW1lPSJhdXRob3Ii
IHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KLTxt
ZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iTm9kZSBpbnRlcmZhY2UgbXVzdCBoYXZlIHRyZWVS
b290IGF0dHJpYnV0ZSI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9Ik5vZGUgaW50ZXJm
YWNlIG11c3QgaGF2ZSByb290Tm9kZSBhdHRyaWJ1dGUiPgogPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwOi8vdzNjLmdpdGh1Yi5pby93ZWJjb21wb25lbnRzL3NwZWMvc2hhZG93LyNleHRlbnNp
b25zLXRvLW5vZGUtaW50ZXJmYWNlIj4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CkBAIC0xNCw2MCArMTQsMzEgQEAKIDxzY3JpcHQ+
CiAKIHRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4gTm9k
ZS5wcm90b3R5cGUsICd0cmVlUm9vdCBtdXN0IGJlIGRlZmluZWQgb24gTm9kZS5wcm90b3R5cGUn
KTsKLSAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpLCAndHJlZVJvb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgZGl2IGVsZW1lbnQnKTsKLSAg
ICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSwg
J2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24gYSB0ZXh0IG5vZGUnKTsKLSAgICBhc3Nl
cnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpLCAnYXNzaWdu
ZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIGNvbW1lbnQgbm9kZScpOwotICAgIGFzc2VydF90
cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0
YXJnZXQnLCAnZGF0YScpLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIHByb2Nl
c3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZScpOwotICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4g
ZG9jdW1lbnQsICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgZG9jdW1lbnQgbm9k
ZScpOwotICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pLCAndHJlZVJvb3QgbXVzdCBi
ZSBkZWZpbmVkIG9uIGEgY2xvc2VkIHNoYWRvdyByb290IGVsZW1lbnQnKTsKLSAgICBhc3NlcnRf
dHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmF0dGFjaFNo
YWRvdyh7bW9kZTogJ29wZW4nfSksICd0cmVlUm9vdCBtdXN0IGJlIGRlZmluZWQgb24gYSBvcGVu
IHNoYWRvdyByb290IGVsZW1lbnQnKTsKLX0sICd0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCBiZSBk
ZWZpbmVkIG9uIE5vZGUgaW50ZXJmYWNlJyk7CisgICAgYXNzZXJ0X3RydWUoJ3Jvb3ROb2RlJyBp
biBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9z
ZWQnfSksICdyb290Tm9kZSBtdXN0IGJlIGRlZmluZWQgb24gYSBjbG9zZWQgc2hhZG93IHJvb3Qg
ZWxlbWVudCcpOworICAgIGFzc2VydF90cnVlKCdyb290Tm9kZScgaW4gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KSwgJ3Jvb3ROb2RlIG11
c3QgYmUgZGVmaW5lZCBvbiBhIG9wZW4gc2hhZG93IHJvb3QgZWxlbWVudCcpOworfSwgJ3Jvb3RO
b2RlIGF0dHJpYnV0ZSBtdXN0IGJlIGRlZmluZWQgb24gU2hhZG93Um9vdCBpbnRlcmZhY2UnKTsK
IAogdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKLSAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIGVsZW1l
bnQsICd0cmVlUm9vdCBvbiBhbiBlbGVtZW50IHdpdGhvdXQgYSBwYXJlbnQgbXVzdCByZXR1cm4g
dGhlIGVsZW1lbnQgaXRzZWxmJyk7Ci0KLSAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCcnKTsKLSAgICBhc3NlcnRfZXF1YWxzKHRleHQudHJlZVJvb3QsIHRleHQsICd0cmVl
Um9vdCBvbiBhIHRleHQgbm9kZSB3aXRob3V0IGEgcGFyZW50IG11c3QgcmV0dXJuIHRoZSB0ZXh0
IG5vZGUgaXRzZWxmJyk7Ci0KLSAgICB2YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1l
bnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOwotICAgIGFz
c2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVSb290LCBwcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24sICd0cmVlUm9vdCBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSB3aXRo
b3V0IGEgcGFyZW50IG11c3QgcmV0dXJuIHRoZSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUg
aXRzZWxmJyk7Ci0KLSAgICBhc3NlcnRfZXF1YWxzKGRvY3VtZW50LnRyZWVSb290LCBkb2N1bWVu
dCwgJ3RyZWVSb290IG9uIGEgZG9jdW1lbnQgbm9kZSBtdXN0IHJldHVybiB0aGUgZG9jdW1lbnQg
aXRzZWxmJyk7Ci0KICAgICB2YXIgY2xvc2VkU2hhZG93Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKGNsb3NlZFNoYWRvd1Jvb3QudHJlZVJvb3QsIGNsb3NlZFNoYWRvd1Jvb3QsICd0cmVl
Um9vdCBvbiBhIGNsb3NlZCBzaGFkb3cgcm9vdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3Qg
aXRzZWxmJyk7CisgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRTaGFkb3dSb290LnJvb3ROb2RlLCBj
bG9zZWRTaGFkb3dSb290LCAncm9vdE5vZGUgb24gYSBjbG9zZWQgc2hhZG93IHJvb3QgbXVzdCBy
ZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOwogCiAgICAgdmFyIG9wZW5TaGFkb3dSb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Bl
bid9KTsKLSAgICBhc3NlcnRfZXF1YWxzKG9wZW5TaGFkb3dSb290LnRyZWVSb290LCBvcGVuU2hh
ZG93Um9vdCwgJ3RyZWVSb290IG9uIGEgb3BlbiBzaGFkb3cgcm9vdCBtdXN0IHJldHVybiB0aGUg
c2hhZG93IHJvb3QgaXRzZWxmJyk7Ci19LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJu
IHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0IGRvZXMgbm90IGhhdmUgYW55IHBhcmVudCcpOwor
ICAgIGFzc2VydF9lcXVhbHMob3BlblNoYWRvd1Jvb3Qucm9vdE5vZGUsIG9wZW5TaGFkb3dSb290
LCAncm9vdE5vZGUgb24gYSBvcGVuIHNoYWRvdyByb290IG11c3QgcmV0dXJuIHRoZSBzaGFkb3cg
cm9vdCBpdHNlbGYnKTsKK30sICdyb290Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIGNv
bnRleHQgb2JqZWN0IHdoZW4gaXQgZG9lcyBub3QgaGF2ZSBhbnkgcGFyZW50Jyk7CiAKIHRlc3Qo
ZnVuY3Rpb24gKCkgewogICAgIHZhciBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKIAotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
Ci0gICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICAgIGFzc2VydF9lcXVhbHMoZWxl
bWVudC50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCB3aXRoIGEgc2lu
Z2xlIGFuY2VzdG9yIG11c3QgcmV0dXJuIHRoZSBwYXJlbnQgbm9kZScpOwotCi0gICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Ci0gICAgcGFyZW50LmFwcGVuZENoaWxk
KHRleHQpOwotICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJv
b3Qgb24gYSB0ZXh0IG5vZGUgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJldHVybiB0aGUg
cGFyZW50IG5vZGUnKTsKLQotICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBkb2N1bWVu
dC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7Ci0gICAgcGFy
ZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0cnVjdGlvbikKLSAgICBhc3NlcnRfZXF1YWxz
KHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgcGFyZW50LCAndHJlZVJvb3Qgb24gYSBw
cm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJl
dHVybiB0aGUgcGFyZW50IG5vZGUnKTsKLQogICAgIHZhciBob3N0V2l0aENsb3NlZFNoYWRvd1Jv
b3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICBwYXJlbnQuYXBwZW5kQ2hp
bGQoaG9zdFdpdGhDbG9zZWRTaGFkb3dSb290KTsKICAgICB2YXIgY2xvc2VkU2hhZG93Um9vdCA9
IGhvc3RXaXRoQ2xvc2VkU2hhZG93Um9vdC5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7
Ci0gICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRTaGFkb3dSb290LnRyZWVSb290LCBjbG9zZWRTaGFk
b3dSb290LCAndHJlZVJvb3Qgb24gYSBjbG9zZWQgc2hhZG93IHJvb3Qgd2l0aCBhIHNpbmdsZSBh
bmNlc3RvciBvbiBpdHMgaG9zdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7
CisgICAgYXNzZXJ0X2VxdWFscyhjbG9zZWRTaGFkb3dSb290LnJvb3ROb2RlLCBjbG9zZWRTaGFk
b3dSb290LCAncm9vdE5vZGUgb24gYSBjbG9zZWQgc2hhZG93IHJvb3Qgd2l0aCBhIHNpbmdsZSBh
bmNlc3RvciBvbiBpdHMgaG9zdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7
CiAKICAgICB2YXIgaG9zdFdpdGhPcGVuU2hhZG93Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOwogICAgIHBhcmVudC5hcHBlbmRDaGlsZChob3N0V2l0aE9wZW5TaGFkb3dSb290
KTsKICAgICB2YXIgb3BlblNoYWRvd1Jvb3QgPSBob3N0V2l0aE9wZW5TaGFkb3dSb290LmF0dGFj
aFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7Ci0gICAgYXNzZXJ0X2VxdWFscyhvcGVuU2hhZG93Um9v
dC50cmVlUm9vdCwgb3BlblNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIG9wZW4gc2hhZG93IHJv
b3Qgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBvbiBpdHMgaG9zdCBtdXN0IHJldHVybiB0aGUgc2hh
ZG93IHJvb3QgaXRzZWxmJyk7Ci19LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRo
ZSBwYXJlbnQgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmpl
Y3QgaGFzIGEgc2luZ2xlIGFuY2VzdG9yIG5vdCBpbiBhIGRvY3VtZW50Jyk7CisgICAgYXNzZXJ0
X2VxdWFscyhvcGVuU2hhZG93Um9vdC5yb290Tm9kZSwgb3BlblNoYWRvd1Jvb3QsICdyb290Tm9k
ZSBvbiBhIG9wZW4gc2hhZG93IHJvb3Qgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBvbiBpdHMgaG9z
dCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7Cit9LCAncm9vdE5vZGUgYXR0
cmlidXRlIG11c3QgcmV0dXJuIHRoZSBwYXJlbnQgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qg
d2hlbiB0aGUgY29udGV4dCBvYmplY3QgaGFzIGEgc2luZ2xlIGFuY2VzdG9yIG5vdCBpbiBhIGRv
Y3VtZW50Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIHZhciBwYXJlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKQEAgLTc1LDE4ICs0NiwxOCBAQCB0ZXN0KGZ1bmN0aW9u
ICgpIHsKIAogICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CiAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICAgIGFzc2VydF9lcXVhbHMoZWxl
bWVudC50cmVlUm9vdCwgZG9jdW1lbnQsICd0cmVlUm9vdCBvbiBhbiBlbGVtZW50IGluc2lkZSBh
IGRvY3VtZW50IG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCcpOworICAgIGFzc2VydF9lcXVhbHMo
ZWxlbWVudC5yb290Tm9kZSwgZG9jdW1lbnQsICdyb290Tm9kZSBvbiBhbiBlbGVtZW50IGluc2lk
ZSBhIGRvY3VtZW50IG11c3QgcmV0dXJuIHRoZSBkb2N1bWVudCcpOwogCiAgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CiAgICAgcGFyZW50LmFwcGVuZENoaWxkKHRl
eHQpOwotICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgZG9jdW1lbnQsICd0cmVlUm9v
dCBvbiBhIHRleHQgbm9kZSBpbnNpZGUgYSBkb2N1bWVudCBtdXN0IHJldHVybiB0aGUgZG9jdW1l
bnQnKTsKKyAgICBhc3NlcnRfZXF1YWxzKHRleHQucm9vdE5vZGUsIGRvY3VtZW50LCAncm9vdE5v
ZGUgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3Vt
ZW50Jyk7CiAKICAgICB2YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOwogICAgIHBhcmVudC5hcHBl
bmRDaGlsZChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNz
aW5nSW5zdHJ1Y3Rpb24udHJlZVJvb3QsIGRvY3VtZW50LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNz
aW5nIGluc3RydWN0aW9uIG5vZGUgaW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRv
Y3VtZW50Jyk7Ci19LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBkb2N1bWVu
dCB3aGVuIGEgbm9kZSBpcyBpbiBkb2N1bWVudCBhbmQgbm90IGluIGEgc2hhZG93IHRyZWUnKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi5yb290Tm9kZSwgZG9jdW1l
bnQsICdyb290Tm9kZSBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZSBpbnNpZGUgYSBk
b2N1bWVudCBtdXN0IHJldHVybiB0aGUgZG9jdW1lbnQnKTsKK30sICdyb290Tm9kZSBhdHRyaWJ1
dGUgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50IHdoZW4gYSBub2RlIGlzIGluIGRvY3VtZW50IGFu
ZCBub3QgaW4gYSBzaGFkb3cgdHJlZScpOwogCi1mdW5jdGlvbiB0ZXN0VHJlZVJvb3RPbk5vZGVJ
bnNpZGVTaGFkb3dUcmVlKG1vZGUpIHsKK2Z1bmN0aW9uIHRlc3Ryb290Tm9kZU9uTm9kZUluc2lk
ZVNoYWRvd1RyZWUobW9kZSkgewogICAgIHRlc3QoZnVuY3Rpb24gKCkgewogICAgICAgICB2YXIg
aG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGhvc3QpOwpAQCAtOTcsMjIgKzY4LDIyIEBAIGZ1bmN0aW9uIHRlc3RU
cmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1QKIAogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIHNoYWRvd1Jv
b3QsICd0cmVlUm9vdCBvbiBhbiBlbGVtZW50IGluc2lkZSBhIHNoYWRvdyB0cmVlIG11c3QgcmV0
dXJuIHRoZSBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQucm9v
dE5vZGUsIHNoYWRvd1Jvb3QsICdyb290Tm9kZSBvbiBhbiBlbGVtZW50IGluc2lkZSBhIHNoYWRv
dyB0cmVlIG11c3QgcmV0dXJuIHRoZSBzaGFkb3cgcm9vdCcpOwogCiAgICAgICAgIHZhciB0ZXh0
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwogICAgICAgICBwYXJlbnQuYXBwZW5kQ2hp
bGQodGV4dCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9vdCwgc2hhZG93Um9v
dCwgJ3RyZWVSb290IG9uIGEgdGV4dCBub2RlIGluc2lkZSBhIHNoYWRvdyB0cmVlIG11c3QgcmV0
dXJuIHRoZSBzaGFkb3cgcm9vdCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHRleHQucm9vdE5v
ZGUsIHNoYWRvd1Jvb3QsICdyb290Tm9kZSBvbiBhIHRleHQgbm9kZSBpbnNpZGUgYSBzaGFkb3cg
dHJlZSBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QnKTsKIAogICAgICAgICB2YXIgcHJvY2Vz
c2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0
YXJnZXQnLCAnZGF0YScpOwogICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQocHJvY2Vzc2luZ0lu
c3RydWN0aW9uKTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
dHJlZVJvb3QsIHNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rp
b24gbm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3Qn
KTsKLSAgICB9LCAndHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSAnICsgbW9kZSAr
ICcgc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIHNoYWRvdyBob3N0
IGlzIGluIGEgZG9jdW1lbnQnKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24ucm9vdE5vZGUsIHNoYWRvd1Jvb3QsICdyb290Tm9kZSBvbiBhIHByb2Nlc3Npbmcg
aW5zdHJ1Y3Rpb24gbm9kZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiB0aGUgc2hh
ZG93IHJvb3QnKTsKKyAgICB9LCAncm9vdE5vZGUgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSAn
ICsgbW9kZSArICcgc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIHNo
YWRvdyBob3N0IGlzIGluIGEgZG9jdW1lbnQnKTsKIH0KIAotdGVzdFRyZWVSb290T25Ob2RlSW5z
aWRlU2hhZG93VHJlZSgnb3BlbicpOwotdGVzdFRyZWVSb290T25Ob2RlSW5zaWRlU2hhZG93VHJl
ZSgnY2xvc2VkJyk7Cit0ZXN0cm9vdE5vZGVPbk5vZGVJbnNpZGVTaGFkb3dUcmVlKCdvcGVuJyk7
Cit0ZXN0cm9vdE5vZGVPbk5vZGVJbnNpZGVTaGFkb3dUcmVlKCdjbG9zZWQnKTsKIAotZnVuY3Rp
b24gdGVzdFRyZWVSb290T25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZShvdXRlck1vZGUsIGlu
bmVyTW9kZSkgeworZnVuY3Rpb24gdGVzdHJvb3ROb2RlT25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93
VHJlZShvdXRlck1vZGUsIGlubmVyTW9kZSkgewogICAgIHRlc3QoZnVuY3Rpb24gKCkgewogICAg
ICAgICB2YXIgb3V0ZXJIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0ZXJIb3N0KTsKQEAgLTEyNywyMyArOTgs
MjMgQEAgZnVuY3Rpb24gdGVzdFRyZWVSb290T25Ob2RlSW5zaWRlTmVzdGVkUwogCiAgICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgICAgICBw
YXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMoZWxlbWVu
dC50cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYW4gZWxlbWVudCBpbnNp
ZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiBpdHMgcm9vdCBub2RlJyk7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZWxlbWVudC5yb290Tm9kZSwgaW5uZXJTaGFkb3dSb290LCAncm9vdE5vZGUg
b24gYW4gZWxlbWVudCBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiBpdHMgcm9vdCBu
b2RlJyk7CiAKICAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7
CiAgICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0ZXh0LnRyZWVSb290LCBpbm5lclNoYWRvd1Jvb3QsICd0cmVlUm9vdCBvbiBhIHRleHQgbm9k
ZSBpbnNpZGUgYSBzaGFkb3cgdHJlZSBtdXN0IHJldHVybiBpdHMgcm9vdCBub2RlJyk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHModGV4dC5yb290Tm9kZSwgaW5uZXJTaGFkb3dSb290LCAncm9vdE5v
ZGUgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJv
b3Qgbm9kZScpOwogCiAgICAgICAgIHZhciBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBkb2N1bWVu
dC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3RhcmdldCcsICdkYXRhJyk7CiAgICAgICAg
IHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24pOwotICAgICAgICBhc3Nl
cnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290
LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgaW5zaWRlIGEgc2hh
ZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOwotICAgIH0sICd0cmVlUm9vdCBh
dHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qg
d2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgJyArIGlubmVyTW9kZQorICAgICAg
ICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi5yb290Tm9kZSwgaW5uZXJTaGFk
b3dSb290LCAncm9vdE5vZGUgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgaW5zaWRl
IGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOworICAgIH0sICdyb290
Tm9kZSBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4dCBv
YmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgJyArIGlubmVyTW9kZQog
ICAgICAgICArICcgc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93IGhvc3QgaXMgaW4gYW5vdGhlciAn
ICsgb3V0ZXJNb2RlICsgJyBzaGFkb3cgcm9vdCcpOwogfQogCi10ZXN0VHJlZVJvb3RPbk5vZGVJ
bnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgJ29wZW4nKTsKLXRlc3RUcmVlUm9vdE9uTm9k
ZUluc2lkZU5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAnY2xvc2VkJyk7Ci10ZXN0VHJlZVJvb3RP
bk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQnLCAnb3BlbicpOwotdGVzdFRyZWVS
b290T25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnY2xvc2VkJywgJ2Nsb3NlZCcpOwordGVz
dHJvb3ROb2RlT25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnb3BlbicsICdvcGVuJyk7Cit0
ZXN0cm9vdE5vZGVPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgJ2Nsb3NlZCcp
OwordGVzdHJvb3ROb2RlT25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnY2xvc2VkJywgJ29w
ZW4nKTsKK3Rlc3Ryb290Tm9kZU9uTm9kZUluc2lkZU5lc3RlZFNoYWRvd1RyZWUoJ2Nsb3NlZCcs
ICdjbG9zZWQnKTsKIAogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2UtdHJlZVJvb3QtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9Ob2RlLWludGVyZmFjZS10cmVlUm9v
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE5NzgzNCkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9Ob2RlLWludGVyZmFjZS10cmVlUm9vdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTIgKzAsMCBAQAotCi1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IGJlIGRl
ZmluZWQgb24gTm9kZSBpbnRlcmZhY2UgCi1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJl
dHVybiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiBpdCBkb2VzIG5vdCBoYXZlIGFueSBwYXJlbnQg
Ci1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGUgb2Yg
dGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGhhcyBhIHNpbmdsZSBh
bmNlc3RvciBub3QgaW4gYSBkb2N1bWVudCAKLVBBU1MgdHJlZVJvb3QgYXR0cmlidXRlIG11c3Qg
cmV0dXJuIHRoZSBkb2N1bWVudCB3aGVuIGEgbm9kZSBpcyBpbiBkb2N1bWVudCBhbmQgbm90IGlu
IGEgc2hhZG93IHRyZWUgCi1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUg
b3BlbiBzaGFkb3cgcm9vdCBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgc2hhZG93IGhv
c3QgaXMgaW4gYSBkb2N1bWVudCAKLVBBU1MgdHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJu
IHRoZSBjbG9zZWQgc2hhZG93IHJvb3Qgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIHNo
YWRvdyBob3N0IGlzIGluIGEgZG9jdW1lbnQgCi1QQVNTIHRyZWVSb290IGF0dHJpYnV0ZSBtdXN0
IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBjb250
ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSBvcGVuIHNoYWRvdyByb290IHdob3NlIHNoYWRvdyBob3N0
IGlzIGluIGFub3RoZXIgb3BlbiBzaGFkb3cgcm9vdCAKLVBBU1MgdHJlZVJvb3QgYXR0cmlidXRl
IG11c3QgcmV0dXJuIHRoZSByb290IG5vZGUgb2YgdGhlIGNvbnRleHQgb2JqZWN0IHdoZW4gdGhl
IGNvbnRleHQgb2JqZWN0IGlzIGluc2lkZSBhIGNsb3NlZCBzaGFkb3cgcm9vdCB3aG9zZSBzaGFk
b3cgaG9zdCBpcyBpbiBhbm90aGVyIG9wZW4gc2hhZG93IHJvb3QgCi1QQVNTIHRyZWVSb290IGF0
dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcm9vdCBub2RlIG9mIHRoZSBjb250ZXh0IG9iamVjdCB3
aGVuIHRoZSBjb250ZXh0IG9iamVjdCBpcyBpbnNpZGUgYSBvcGVuIHNoYWRvdyByb290IHdob3Nl
IHNoYWRvdyBob3N0IGlzIGluIGFub3RoZXIgY2xvc2VkIHNoYWRvdyByb290IAotUEFTUyB0cmVl
Um9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY29udGV4dCBv
YmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5zaWRlIGEgY2xvc2VkIHNoYWRvdyBy
b290IHdob3NlIHNoYWRvdyBob3N0IGlzIGluIGFub3RoZXIgY2xvc2VkIHNoYWRvdyByb290IAot
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1pbnRlcmZhY2UtdHJlZVJv
b3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vTm9kZS1p
bnRlcmZhY2UtdHJlZVJvb3QuaHRtbAkocmV2aXNpb24gMTk3ODM0KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL05vZGUtaW50ZXJmYWNlLXRyZWVSb290Lmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTUwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTx0
aXRsZT5TaGFkb3cgRE9NOiBFeHRlbnNpb25zIHRvIE5vZGUgaW50ZXJmYWNlPC90aXRsZT4KLTxt
ZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJlZj0ibWFpbHRvOnJuaXdh
QHdlYmtpdC5vcmciPgotPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJOb2RlIGludGVyZmFj
ZSBtdXN0IGhhdmUgdHJlZVJvb3QgYXR0cmlidXRlIj4KLTxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cDovL3czYy5naXRodWIuaW8vd2ViY29tcG9uZW50cy9zcGVjL3NoYWRvdy8jZXh0ZW5zaW9u
cy10by1ub2RlLWludGVyZmFjZSI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgotPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVmPScu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJz4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KLTxzY3JpcHQ+Ci0KLXRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2Vy
dF90cnVlKCd0cmVlUm9vdCcgaW4gTm9kZS5wcm90b3R5cGUsICd0cmVlUm9vdCBtdXN0IGJlIGRl
ZmluZWQgb24gTm9kZS5wcm90b3R5cGUnKTsKLSAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGlu
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAndHJlZVJvb3QgbXVzdCBiZSBkZWZpbmVk
IG9uIGEgZGl2IGVsZW1lbnQnKTsKLSAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCcnKSwgJ2Fzc2lnbmVkU2xvdCBtdXN0IGJlIGRlZmluZWQgb24g
YSB0ZXh0IG5vZGUnKTsKLSAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNy
ZWF0ZUNvbW1lbnQoJycpLCAnYXNzaWduZWRTbG90IG11c3QgYmUgZGVmaW5lZCBvbiBhIGNvbW1l
bnQgbm9kZScpOwotICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQuY3JlYXRl
UHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpLCAnYXNzaWduZWRTbG90IG11
c3QgYmUgZGVmaW5lZCBvbiBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24gbm9kZScpOwotICAgIGFz
c2VydF90cnVlKCd0cmVlUm9vdCcgaW4gZG9jdW1lbnQsICdhc3NpZ25lZFNsb3QgbXVzdCBiZSBk
ZWZpbmVkIG9uIGEgZG9jdW1lbnQgbm9kZScpOwotICAgIGFzc2VydF90cnVlKCd0cmVlUm9vdCcg
aW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJ30pLCAndHJlZVJvb3QgbXVzdCBiZSBkZWZpbmVkIG9uIGEgY2xvc2VkIHNoYWRvdyByb290
IGVsZW1lbnQnKTsKLSAgICBhc3NlcnRfdHJ1ZSgndHJlZVJvb3QnIGluIGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSksICd0cmVlUm9vdCBt
dXN0IGJlIGRlZmluZWQgb24gYSBvcGVuIHNoYWRvdyByb290IGVsZW1lbnQnKTsKLX0sICd0cmVl
Um9vdCBhdHRyaWJ1dGUgbXVzdCBiZSBkZWZpbmVkIG9uIE5vZGUgaW50ZXJmYWNlJyk7Ci0KLXRl
c3QoZnVuY3Rpb24gKCkgewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7Ci0gICAgYXNzZXJ0X2VxdWFscyhlbGVtZW50LnRyZWVSb290LCBlbGVtZW50LCAn
dHJlZVJvb3Qgb24gYW4gZWxlbWVudCB3aXRob3V0IGEgcGFyZW50IG11c3QgcmV0dXJuIHRoZSBl
bGVtZW50IGl0c2VsZicpOwotCi0gICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgnJyk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCB0ZXh0LCAndHJlZVJvb3Qg
b24gYSB0ZXh0IG5vZGUgd2l0aG91dCBhIHBhcmVudCBtdXN0IHJldHVybiB0aGUgdGV4dCBub2Rl
IGl0c2VsZicpOwotCi0gICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRvY3VtZW50LmNy
ZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi50cmVlUm9vdCwgcHJvY2Vzc2luZ0luc3RydWN0
aW9uLCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGUgd2l0aG91dCBh
IHBhcmVudCBtdXN0IHJldHVybiB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlIGl0c2Vs
ZicpOwotCi0gICAgYXNzZXJ0X2VxdWFscyhkb2N1bWVudC50cmVlUm9vdCwgZG9jdW1lbnQsICd0
cmVlUm9vdCBvbiBhIGRvY3VtZW50IG5vZGUgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50IGl0c2Vs
ZicpOwotCi0gICAgdmFyIGNsb3NlZFNoYWRvd1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKS5hdHRhY2hTaGFkb3coe21vZGU6ICdjbG9zZWQnfSk7Ci0gICAgYXNzZXJ0X2VxdWFs
cyhjbG9zZWRTaGFkb3dSb290LnRyZWVSb290LCBjbG9zZWRTaGFkb3dSb290LCAndHJlZVJvb3Qg
b24gYSBjbG9zZWQgc2hhZG93IHJvb3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2Vs
ZicpOwotCi0gICAgdmFyIG9wZW5TaGFkb3dSb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykuYXR0YWNoU2hhZG93KHttb2RlOiAnb3Blbid9KTsKLSAgICBhc3NlcnRfZXF1YWxzKG9w
ZW5TaGFkb3dSb290LnRyZWVSb290LCBvcGVuU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGEgb3Bl
biBzaGFkb3cgcm9vdCBtdXN0IHJldHVybiB0aGUgc2hhZG93IHJvb3QgaXRzZWxmJyk7Ci19LCAn
dHJlZVJvb3QgYXR0cmlidXRlIG11c3QgcmV0dXJuIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIGl0
IGRvZXMgbm90IGhhdmUgYW55IHBhcmVudCcpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2
YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0KLSAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIHBhcmVudC5hcHBlbmRD
aGlsZChlbGVtZW50KTsKLSAgICBhc3NlcnRfZXF1YWxzKGVsZW1lbnQudHJlZVJvb3QsIHBhcmVu
dCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgd2l0aCBhIHNpbmdsZSBhbmNlc3RvciBtdXN0IHJl
dHVybiB0aGUgcGFyZW50IG5vZGUnKTsKLQotICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJycpOwotICAgIHBhcmVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKLSAgICBhc3NlcnRf
ZXF1YWxzKHRleHQudHJlZVJvb3QsIHBhcmVudCwgJ3RyZWVSb290IG9uIGEgdGV4dCBub2RlIHdp
dGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBub2RlJyk7Ci0KLSAg
ICB2YXIgcHJvY2Vzc2luZ0luc3RydWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlUHJvY2Vzc2luZ0lu
c3RydWN0aW9uKCd0YXJnZXQnLCAnZGF0YScpOwotICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24pCi0gICAgYXNzZXJ0X2VxdWFscyhwcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24udHJlZVJvb3QsIHBhcmVudCwgJ3RyZWVSb290IG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlv
biBub2RlIHdpdGggYSBzaW5nbGUgYW5jZXN0b3IgbXVzdCByZXR1cm4gdGhlIHBhcmVudCBub2Rl
Jyk7Ci0KLSAgICB2YXIgaG9zdFdpdGhDbG9zZWRTaGFkb3dSb290ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7Ci0gICAgcGFyZW50LmFwcGVuZENoaWxkKGhvc3RXaXRoQ2xvc2VkU2hh
ZG93Um9vdCk7Ci0gICAgdmFyIGNsb3NlZFNoYWRvd1Jvb3QgPSBob3N0V2l0aENsb3NlZFNoYWRv
d1Jvb3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xvc2VkJ30pOwotICAgIGFzc2VydF9lcXVhbHMo
Y2xvc2VkU2hhZG93Um9vdC50cmVlUm9vdCwgY2xvc2VkU2hhZG93Um9vdCwgJ3RyZWVSb290IG9u
IGEgY2xvc2VkIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUgYW5jZXN0b3Igb24gaXRzIGhvc3Qg
bXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOwotCi0gICAgdmFyIGhvc3RXaXRo
T3BlblNoYWRvd1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQoaG9zdFdpdGhPcGVuU2hhZG93Um9vdCk7Ci0gICAgdmFyIG9wZW5TaGFk
b3dSb290ID0gaG9zdFdpdGhPcGVuU2hhZG93Um9vdC5hdHRhY2hTaGFkb3coe21vZGU6ICdvcGVu
J30pOwotICAgIGFzc2VydF9lcXVhbHMob3BlblNoYWRvd1Jvb3QudHJlZVJvb3QsIG9wZW5TaGFk
b3dSb290LCAndHJlZVJvb3Qgb24gYSBvcGVuIHNoYWRvdyByb290IHdpdGggYSBzaW5nbGUgYW5j
ZXN0b3Igb24gaXRzIGhvc3QgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290IGl0c2VsZicpOwot
fSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgcGFyZW50IG5vZGUgb2YgdGhl
IGNvbnRleHQgb2JqZWN0IHdoZW4gdGhlIGNvbnRleHQgb2JqZWN0IGhhcyBhIHNpbmdsZSBhbmNl
c3RvciBub3QgaW4gYSBkb2N1bWVudCcpOwotCi10ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIg
cGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChwYXJlbnQpOwotCi0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKLSAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAg
YXNzZXJ0X2VxdWFscyhlbGVtZW50LnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290IG9uIGFu
IGVsZW1lbnQgaW5zaWRlIGEgZG9jdW1lbnQgbXVzdCByZXR1cm4gdGhlIGRvY3VtZW50Jyk7Ci0K
LSAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTsKLSAgICBwYXJlbnQu
YXBwZW5kQ2hpbGQodGV4dCk7Ci0gICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290LCBkb2N1
bWVudCwgJ3RyZWVSb290IG9uIGEgdGV4dCBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3QgcmV0
dXJuIHRoZSBkb2N1bWVudCcpOwotCi0gICAgdmFyIHByb2Nlc3NpbmdJbnN0cnVjdGlvbiA9IGRv
Y3VtZW50LmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFyZ2V0JywgJ2RhdGEnKTsKLSAg
ICBwYXJlbnQuYXBwZW5kQ2hpbGQocHJvY2Vzc2luZ0luc3RydWN0aW9uKQotICAgIGFzc2VydF9l
cXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRyZWVSb290LCBkb2N1bWVudCwgJ3RyZWVSb290
IG9uIGEgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBub2RlIGluc2lkZSBhIGRvY3VtZW50IG11c3Qg
cmV0dXJuIHRoZSBkb2N1bWVudCcpOwotfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVy
biB0aGUgZG9jdW1lbnQgd2hlbiBhIG5vZGUgaXMgaW4gZG9jdW1lbnQgYW5kIG5vdCBpbiBhIHNo
YWRvdyB0cmVlJyk7Ci0KLWZ1bmN0aW9uIHRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1Ry
ZWUobW9kZSkgewotICAgIHRlc3QoZnVuY3Rpb24gKCkgewotICAgICAgICB2YXIgaG9zdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGhvc3QpOwotCi0gICAgICAgIHZhciBzaGFkb3dSb290ID0gaG9zdC5hdHRhY2hTaGFk
b3coe21vZGU6IG1vZGV9KTsKLSAgICAgICAgdmFyIHBhcmVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3AnKTsKLSAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChwYXJlbnQpOwotCi0g
ICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwotICAg
ICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMo
ZWxlbWVudC50cmVlUm9vdCwgc2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQgaW5z
aWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7Ci0KLSAgICAg
ICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7Ci0gICAgICAgIHBhcmVu
dC5hcHBlbmRDaGlsZCh0ZXh0KTsKLSAgICAgICAgYXNzZXJ0X2VxdWFscyh0ZXh0LnRyZWVSb290
LCBzaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRy
ZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7Ci0KLSAgICAgICAgdmFyIHByb2Nlc3Np
bmdJbnN0cnVjdGlvbiA9IGRvY3VtZW50LmNyZWF0ZVByb2Nlc3NpbmdJbnN0cnVjdGlvbigndGFy
Z2V0JywgJ2RhdGEnKTsKLSAgICAgICAgcGFyZW50LmFwcGVuZENoaWxkKHByb2Nlc3NpbmdJbnN0
cnVjdGlvbik7Ci0gICAgICAgIGFzc2VydF9lcXVhbHMocHJvY2Vzc2luZ0luc3RydWN0aW9uLnRy
ZWVSb290LCBzaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGluc3RydWN0aW9u
IG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gdGhlIHNoYWRvdyByb290Jyk7
Ci0gICAgfSwgJ3RyZWVSb290IGF0dHJpYnV0ZSBtdXN0IHJldHVybiB0aGUgJyArIG1vZGUgKyAn
IHNoYWRvdyByb290IG9mIHRoZSBjb250ZXh0IG9iamVjdCB3aGVuIHRoZSBzaGFkb3cgaG9zdCBp
cyBpbiBhIGRvY3VtZW50Jyk7Ci19Ci0KLXRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1Ry
ZWUoJ29wZW4nKTsKLXRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZVNoYWRvd1RyZWUoJ2Nsb3NlZCcp
OwotCi1mdW5jdGlvbiB0ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKG91
dGVyTW9kZSwgaW5uZXJNb2RlKSB7Ci0gICAgdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgICAgIHZh
ciBvdXRlckhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChvdXRlckhvc3QpOwotICAgICAgICB2YXIgb3V0ZXJTaGFk
b3dSb290ID0gb3V0ZXJIb3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogb3V0ZXJNb2RlfSk7Ci0KLSAg
ICAgICAgdmFyIGlubmVySG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTsK
LSAgICAgICAgb3V0ZXJTaGFkb3dSb290LmFwcGVuZENoaWxkKGlubmVySG9zdCk7Ci0gICAgICAg
IHZhciBpbm5lclNoYWRvd1Jvb3QgPSBpbm5lckhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiBpbm5l
ck1vZGV9KTsKLQotICAgICAgICB2YXIgcGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
cCcpOwotICAgICAgICBpbm5lclNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQocGFyZW50KTsKLQotICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAg
ICAgcGFyZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpOwotICAgICAgICBhc3NlcnRfZXF1YWxzKGVs
ZW1lbnQudHJlZVJvb3QsIGlubmVyU2hhZG93Um9vdCwgJ3RyZWVSb290IG9uIGFuIGVsZW1lbnQg
aW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOwotCi0gICAg
ICAgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwotICAgICAgICBwYXJl
bnQuYXBwZW5kQ2hpbGQodGV4dCk7Ci0gICAgICAgIGFzc2VydF9lcXVhbHModGV4dC50cmVlUm9v
dCwgaW5uZXJTaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSB0ZXh0IG5vZGUgaW5zaWRlIGEgc2hh
ZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qgbm9kZScpOwotCi0gICAgICAgIHZhciBwcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24gPSBkb2N1bWVudC5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24o
J3RhcmdldCcsICdkYXRhJyk7Ci0gICAgICAgIHBhcmVudC5hcHBlbmRDaGlsZChwcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24pOwotICAgICAgICBhc3NlcnRfZXF1YWxzKHByb2Nlc3NpbmdJbnN0cnVjdGlv
bi50cmVlUm9vdCwgaW5uZXJTaGFkb3dSb290LCAndHJlZVJvb3Qgb24gYSBwcm9jZXNzaW5nIGlu
c3RydWN0aW9uIG5vZGUgaW5zaWRlIGEgc2hhZG93IHRyZWUgbXVzdCByZXR1cm4gaXRzIHJvb3Qg
bm9kZScpOwotICAgIH0sICd0cmVlUm9vdCBhdHRyaWJ1dGUgbXVzdCByZXR1cm4gdGhlIHJvb3Qg
bm9kZSBvZiB0aGUgY29udGV4dCBvYmplY3Qgd2hlbiB0aGUgY29udGV4dCBvYmplY3QgaXMgaW5z
aWRlIGEgJyArIGlubmVyTW9kZQotICAgICAgICArICcgc2hhZG93IHJvb3Qgd2hvc2Ugc2hhZG93
IGhvc3QgaXMgaW4gYW5vdGhlciAnICsgb3V0ZXJNb2RlICsgJyBzaGFkb3cgcm9vdCcpOwotfQot
Ci10ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdvcGVuJywgJ29wZW4n
KTsKLXRlc3RUcmVlUm9vdE9uTm9kZUluc2lkZU5lc3RlZFNoYWRvd1RyZWUoJ29wZW4nLCAnY2xv
c2VkJyk7Ci10ZXN0VHJlZVJvb3RPbk5vZGVJbnNpZGVOZXN0ZWRTaGFkb3dUcmVlKCdjbG9zZWQn
LCAnb3BlbicpOwotdGVzdFRyZWVSb290T25Ob2RlSW5zaWRlTmVzdGVkU2hhZG93VHJlZSgnY2xv
c2VkJywgJ2Nsb3NlZCcpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXBy
b3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTc4MzQpCisr
KyBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9u
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBAIFBBU1MgYVsi
bGFzdENoaWxkIl0gaXMgW29iamVjdCBUZXh0XQogUEFTUyBhWyJwcmV2aW91c1NpYmxpbmciXSBp
cyBbb2JqZWN0IFRleHRdCiBQQVNTIGFbIm5leHRTaWJsaW5nIl0gaXMgW29iamVjdCBUZXh0XQog
UEFTUyBhWyJvd25lckRvY3VtZW50Il0gaXMgW29iamVjdCBIVE1MRG9jdW1lbnRdCi1QQVNTIGFb
InRyZWVSb290Il0gaXMgW29iamVjdCBIVE1MRG9jdW1lbnRdCitQQVNTIGFbInJvb3ROb2RlIl0g
aXMgW29iamVjdCBIVE1MRG9jdW1lbnRdCiBQQVNTIGFbIm5hbWVzcGFjZVVSSSJdIGlzIGh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGh0bWwKIFBBU1MgYVsicHJlZml4Il0gaXMgbnVsbAogUEFTUyBh
WyJsb2NhbE5hbWUiXSBpcyBhCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvanMvZG9t
L2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2pzL2RvbS9kb20tc3RhdGljLXByb3Bl
cnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTc4MzQpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvanMvZG9tL2RvbS1zdGF0aWMtcHJvcGVydHktZm9yLWlu
LWl0ZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAg
UEFTUyBhWyJwcmVmaXgiXSBpcyBudWxsCiBQQVNTIGFbImNoaWxkTm9kZXMiXSBpcyBbb2JqZWN0
IE5vZGVMaXN0XQogUEFTUyBhWyJuZXh0U2libGluZyJdIGlzIFtvYmplY3QgVGV4dF0KIFBBU1Mg
YVsib3duZXJEb2N1bWVudCJdIGlzIFtvYmplY3QgSFRNTERvY3VtZW50XQorUEFTUyBhWyJyb290
Tm9kZSJdIGlzIFtvYmplY3QgSFRNTERvY3VtZW50XQogUEFTUyBhWyJuYW1lc3BhY2VVUkkiXSBp
cyBodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sCiBQQVNTIGFbImxvY2FsTmFtZSJdIGlzIGEK
IFBBU1MgYVsicGFyZW50RWxlbWVudCJdIGlzIFtvYmplY3QgSFRNTEJvZHlFbGVtZW50XQpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZv
ci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTk3ODM0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIFBBU1MgYVsibGFzdENoaWxkIl0gaXMg
W29iamVjdCBUZXh0XQogUEFTUyBhWyJwcmV2aW91c1NpYmxpbmciXSBpcyBbb2JqZWN0IFRleHRd
CiBQQVNTIGFbIm5leHRTaWJsaW5nIl0gaXMgW29iamVjdCBUZXh0XQogUEFTUyBhWyJvd25lckRv
Y3VtZW50Il0gaXMgW29iamVjdCBIVE1MRG9jdW1lbnRdCitQQVNTIGFbInJvb3ROb2RlIl0gaXMg
W29iamVjdCBIVE1MRG9jdW1lbnRdCiBQQVNTIGFbIm5hbWVzcGFjZVVSSSJdIGlzIGh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwKIFBBU1MgYVsicHJlZml4Il0gaXMgbnVsbAogUEFTUyBhWyJs
b2NhbE5hbWUiXSBpcyBhCg==
</data>
<flag name="review"
          id="298010"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
          </attachment>
      

    </bug>

</bugzilla>