<?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>158131</bug_id>
          
          <creation_ts>2016-05-26 15:04:22 -0700</creation_ts>
          <short_desc>ShadowChicken/DebuggerCallFrame don&apos;t properly handle when the entry stack frame is a tail deleted frame</short_desc>
          <delta_ts>2016-05-27 13:25:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>burg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>timothy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1196871</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-26 15:04:22 -0700</bug_when>
    <thetext>They both fail for various reasons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196875</commentid>
    <comment_count>1</comment_count>
      <attachid>279915</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-26 15:27:28 -0700</bug_when>
    <thetext>Created attachment 279915
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196877</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-26 15:28:56 -0700</bug_when>
    <thetext>Attachment 279915 did not pass style-queue:


ERROR: Source/JavaScriptCore/interpreter/ShadowChicken.cpp:298:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196990</commentid>
    <comment_count>3</comment_count>
      <attachid>279915</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-26 23:29:52 -0700</bug_when>
    <thetext>Comment on attachment 279915
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        ```

Nice catch.

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        current machine frame. This is wrong because if the entry frames

OK. Previously, if there are the logical / physical stack as follows,

logical: [F1][TD2][TD3][TD4][F2] =&gt;
physical: [F1][F2] =&gt;

First, we record [F2], and when visiting [F1], we push [TD4][TD3][TD2] (by retrieving them from the log) and push [F1].

But this assumes that TD frames are always between non TD frames.
In tail deleted entry case, that becomes as follows,

logical: [TD1][TD2][TD3][TD4][F1] =&gt;
physical: [F1] =&gt;

In that case, before this patch, we just record [F1] and finish.

&gt; Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp:-81
&gt; -        ASSERT(exec);

OK, so the exec of the entry tail deleted frame becomes `callFrame-&gt;lexicalGlobalObject()-&gt;globalExec()`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197189</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-27 13:25:19 -0700</bug_when>
    <thetext>Thanks for the review. landed in:
http://trac.webkit.org/changeset/201465</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279915</attachid>
            <date>2016-05-26 15:27:28 -0700</date>
            <delta_ts>2016-05-26 23:29:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>24457</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNDM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE2LTA1LTI2ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFNoYWRvd0NoaWNrZW4vRGVidWdnZXJDYWxsRnJhbWUgZG9uJ3QgcHJvcGVybHkgaGFuZGxlIHdo
ZW4gdGhlIGVudHJ5IHN0YWNrIGZyYW1lIGlzIGEgdGFpbCBkZWxldGVkIGZyYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgxMzEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSB3ZXJlIGJ1Z3Mg
Ym90aCBpbiBEZWJ1Z2dlckNhbGxGcmFtZSBhbmQgU2hhZG93Q2hpY2tlbiB3aGVuIHRoZSBlbnRy
eSBzdGFjaworICAgICAgICBmcmFtZShzKSBhcmUgdGFpbCBkZWxldGVkLgorCisgICAgICAgIERl
YnVnZ2VyQ2FsbEZyYW1lIGhhZCBhbiBhc3NlcnRpb24gc2F5aW5nIHRoYXQgdGhlIGVudHJ5IGZy
YW1lIHNob3VsZG4ndCBiZQorICAgICAgICB0YWlsIGRlbGV0ZWQuIFRoaXMgaXMgY2xlYXJseSB3
cm9uZy4gVGhlIGZvbGxvd2luZyBwcm9ncmFtIHByb3ZlcyB0aGF0IHRoaXMgYXNzZXJ0aW9uCisg
ICAgICAgIHdhcyBtaXNndWlkZWQ6CisgICAgICAgIGBgYAorICAgICAgICAidXNlIHN0cmljdCI7
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gYmFyKCk7IH0sIDAp
OworICAgICAgICBgYGAKKworICAgICAgICBTaGFkb3dDaGlja2VuIGhhZCBhIHZlcnkgc3VidGxl
IGJ1ZyB3aGVuIGNyZWF0aW5nIHRoZSBzaGFkb3cgc3RhY2sgd2hlbiAKKyAgICAgICAgdGhlIGVu
dHJ5IGZyYW1lcyBvZiB0aGUgc3RhY2sgd2VyZSB0YWlsIGRlbGV0ZWQuIEJlY2F1c2UgaXQgcGxh
Y2VzIGZyYW1lcyBpbnRvIGl0cyBzaGFkb3cKKyAgICAgICAgc3RhY2sgYnkgd2Fsa2luZyB0aGUg
bWFjaGluZSBmcmFtZSBhbmQgbG9va2luZyB1cCBlbnRyaWVzIGluIHRoZSBsb2csCisgICAgICAg
IHRoZSBtYWNoaW5lIGZyYW1lIGRvZXNuJ3QgaGF2ZSBhbnkgbm90aW9uIG9mIHRob3NlIHRhaWwg
ZGVsZXRlZCBmcmFtZXMKKyAgICAgICAgYXQgdGhlIGVudHJ5IG9mIGV4ZWN1dGlvbi4gU2hhZG93
Q2hpY2tlbiB3b3VsZCBuZXZlciBmaW5kIHRob3NlIGZyYW1lcworICAgICAgICBiZWNhdXNlIGl0
IHdvdWxkIGxvb2sgZm9yIHRhaWwgZGVsZXRlZCBmcmFtZXMgKmJlZm9yZSogY29uc3VsdGluZyB0
aGUKKyAgICAgICAgY3VycmVudCBtYWNoaW5lIGZyYW1lLiBUaGlzIGlzIHdyb25nIGJlY2F1c2Ug
aWYgdGhlIGVudHJ5IGZyYW1lcworICAgICAgICBhcmUgdGFpbCBkZWxldGVkLCB0aGVuIHRoZXJl
IGlzIG5vIG1hY2hpbmUgZnJhbWUgZm9yIHRoZW0gYmVjYXVzZSB0aGVyZQorICAgICAgICBpcyBu
byBtYWNoaW5lIGZyYW1lIGJlZm9yZSB0aGVtISBUaGVyZWZvcmUsIHdlIG11c3Qgc2VhcmNoIGZv
ciB0YWlsIGRlbGV0ZWQKKyAgICAgICAgZnJhbWVzICphZnRlciogY29uc3VsdGluZyBhIG1hY2hp
bmUgZnJhbWUuIFRoaXMgaXMgc291bmQgYmVjYXVzZSB3ZSB3aWxsIGFsd2F5cworICAgICAgICBo
YXZlIGF0IGxlYXN0IG9uZSBtYWNoaW5lIGZyYW1lIG9uIHRoZSBzdGFjayAod2hlbiB3ZSBhcmUg
dXNpbmcgU3RhY2tWaXNpdG9yIG9uIGEgdmFsaWQgRXhlY1N0YXRlKS4KKyAgICAgICAgU28gd2hl
biB3ZSBjb25zdWx0IHRoZSBtYWNoaW5lIGZyYW1lIHRoYXQgaXMgdGhlIGVudHJ5IGZyYW1lIG9u
IHRoZSBtYWNoaW5lIHN0YWNrLAorICAgICAgICB3ZSB3aWxsIHNlYXJjaCBmb3IgdGFpbCBkZWxl
dGVkIGZyYW1lcyB0aGF0IGNvbWUgYmVmb3JlIGl0IGluIHRoZSBzaGFkb3cgc3RhY2suCisgICAg
ICAgIFRoaXMgd2lsbCBhbGxvdyB1cyB0byBmaW5kIHRob3NlIHRhaWwgZGVsZXRlZCBmcmFtZXMg
dGhhdCBhcmUgdGhlIGVudHJ5IGZyYW1lcworICAgICAgICBmb3IgdGhlIHNoYWRvdyBzdGFjay4K
KworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU2hh
ZG93Q2hpY2tlbi5jcHA6CisgICAgICAgIChKU0M6OlNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZHVt
cCk6CisgICAgICAgIChKU0M6OlNoYWRvd0NoaWNrZW46OnVwZGF0ZSk6CisgICAgICAgIChKU0M6
OlNoYWRvd0NoaWNrZW46OmR1bXApOgorCiAyMDE2LTA1LTI1ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgcmVwbGFjZWFibGUgb3duIHByb3BlcnRpZXMgc2Vl
bSB0byBpZ25vcmUgcmVwbGFjZW1lbnQgYWZ0ZXIgcHJvcGVydHkgY2FjaGluZwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUu
Y3BwCShyZXZpc2lvbiAyMDE0MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJDYWxsRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxNiArNjksMTUgQEAg
UmVmPERlYnVnZ2VyQ2FsbEZyYW1lPiBEZWJ1Z2dlckNhbGxGcmFtZQogICAgIH0pOwogCiAgICAg
UkVMRUFTRV9BU1NFUlQoZnJhbWVzLnNpemUoKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWZyYW1l
c1swXS5pc1RhaWxEZWxldGVkKTsgLy8gVGhlIHRvcCBmcmFtZSBzaG91bGQgbmV2ZXIgYmUgdGFp
bCBkZWxldGVkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFmcmFtZXNbZnJhbWVzLnNpemUoKSAtIDFd
LmlzVGFpbERlbGV0ZWQpOyAvLyBUaGUgZmlyc3QgZnJhbWUgc2hvdWxkIG5ldmVyIGJlIHRhaWwg
ZGVsZXRlZC4KKyAgICBBU1NFUlQoIWZyYW1lc1swXS5pc1RhaWxEZWxldGVkKTsgLy8gVGhlIHRv
cCBmcmFtZSBzaG91bGQgbmV2ZXIgYmUgdGFpbCBkZWxldGVkLgogCiAgICAgUmVmUHRyPERlYnVn
Z2VyQ2FsbEZyYW1lPiBjdXJyZW50UGFyZW50ID0gbnVsbHB0cjsKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBudWxscHRyOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGNhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7CisgICAgLy8gVGhpcyB3YWxrcyB0aGUgc3RhY2sg
ZnJvbSB0aGUgZW50cnkgc3RhY2sgZnJhbWUgdG8gdGhlIHRvcCBvZiB0aGUgc3RhY2suCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZnJhbWVzLnNpemUoKTsgaS0tOyApIHsKICAgICAgICAgY29uc3Qg
U2hhZG93Q2hpY2tlbjo6RnJhbWUmIGZyYW1lID0gZnJhbWVzW2ldOwogICAgICAgICBpZiAoIWZy
YW1lLmlzVGFpbERlbGV0ZWQpCiAgICAgICAgICAgICBleGVjID0gZnJhbWUuZnJhbWU7Ci0gICAg
ICAgIEFTU0VSVChleGVjKTsKICAgICAgICAgUmVmPERlYnVnZ2VyQ2FsbEZyYW1lPiBjdXJyZW50
RnJhbWUgPSBhZG9wdFJlZigqbmV3IERlYnVnZ2VyQ2FsbEZyYW1lKGV4ZWMsIGZyYW1lKSk7CiAg
ICAgICAgIGN1cnJlbnRGcmFtZS0+bV9jYWxsZXIgPSBjdXJyZW50UGFyZW50OwogICAgICAgICBj
dXJyZW50UGFyZW50ID0gV1RGTW92ZShjdXJyZW50RnJhbWUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAkocmV2aXNp
b24gMjAxNDIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU2hhZG93Q2hp
Y2tlbjo6UGFja2V0OjpkdW1wKFByaW50U3QKICAgICB9CiAgICAgCiAgICAgaWYgKGlzVGFpbCgp
KSB7Ci0gICAgICAgIG91dC5wcmludCgidGFpbDp7ZnJhbWUgPSAiLCBSYXdQb2ludGVyKGZyYW1l
KSwgIn0iKTsKKyAgICAgICAgb3V0LnByaW50KCJ0YWlsLXBhY2tldDp7ZnJhbWUgPSAiLCBSYXdQ
b2ludGVyKGZyYW1lKSwgIn0iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTI3
MSwxNSArMjcxLDM2IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQK
ICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1Njg2CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gdmlz
aXRvci0+Y2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCIgICAgRXhhbWluaW5nICIsIFJhd1BvaW50ZXIoY2FsbEZyYW1lKSwgIlxu
Iik7Ci0gICAgICAgICAgICBpZiAoIXRvUHVzaC5pc0VtcHR5KCkgJiYgaW5kZXhJbkxvZyA8IGxv
Z0N1cnNvckluZGV4CisgICAgICAgICAgICBpZiAoY2FsbEZyYW1lID09IGhpZ2hlc3RQb2ludFNp
bmNlTGFzdFRpbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiICAgIEJhaWxpbmcgYXQgIiwgUmF3UG9pbnRlcihjYWxsRnJhbWUp
LCAiIGJlY2F1c2UgaXQncyB0aGUgaGlnaGVzdCBwb2ludCBzaW5jZSBsYXN0IHRpbWUuXG4iKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBib29sIGZvdW5kRnJhbWUgPSBhZHZhbmNlSW5kZXhJbkxvZ1RvKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jYWxsZWUoKSwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKTsK
KyAgICAgICAgICAgIGJvb2wgaXNUYWlsRGVsZXRlZCA9IGZhbHNlOworICAgICAgICAgICAgSlNT
Y29wZSogc2NvcGUgPSBudWxscHRyOworICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAgICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBj
b2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2st
PnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgICAgICBzY29wZSA9IGNh
bGxGcmFtZS0+c2NvcGUoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZv
KCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgeworICAgICAgICAgICAg
ICAgIHNjb3BlID0gbV9sb2dbaW5kZXhJbkxvZ10uc2NvcGU7CisgICAgICAgICAgICAgICAgaWYg
KHNjb3BlKQorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJp
dHMoSlNTY29wZTo6aW5mbygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b1B1c2gu
YXBwZW5kKEZyYW1lKHZpc2l0b3ItPmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQs
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCksIHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2Fs
bFNpdGVJbmRleCgpKSk7CisKKyAgICAgICAgICAgIGlmIChpbmRleEluTG9nIDwgbG9nQ3Vyc29y
SW5kZXgKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvbmRpdGlvbiBwcm90ZWN0cyB1cyBmcm9t
IHRoZSBjYXNlIHdoZXJlIGFkdmFuY2VJbmRleEluTG9nVG8gZGlkbid0IGZpbmQKICAgICAgICAg
ICAgICAgICAvLyBhbnl0aGluZy4KICAgICAgICAgICAgICAgICAmJiBtX2xvZ1tpbmRleEluTG9n
XS5mcmFtZSA9PSB0b1B1c2gubGFzdCgpLmZyYW1lKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRo
cm91Z2ggdGhpbmdzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1c2gt
c3RhY2sgdG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIiAgICBHb2luZyB0byBsb29wIHRocm91Z2ggdG8gZmluZCB0YWlsIGRlbGV0ZWQg
ZnJhbWVzIHdpdGggaW5kZXhJbkxvZyA9ICIsIGluZGV4SW5Mb2csICIgYW5kIHB1c2gtc3RhY2sg
dG9wID0gIiwgdG9QdXNoLmxhc3QoKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgZm9yICg7Oykg
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9sb2dbaW5kZXhJbkxvZ10uZnJhbWUgPT0g
dG9QdXNoLmxhc3QoKS5mcmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMzAzLDYgKzMy
NCw4IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6dXBkYXRlKFZNJiwgRXhlY1N0YXQKICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkxvZy0tOyAvLyBTa2lwIG92ZXIgdGhlIHRhaWwgcGFja2V0Lgog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhZHZhbmNlSW5k
ZXhJbkxvZ1RvKHRhaWxQYWNrZXQuZnJhbWUsIG51bGxwdHIsIG51bGxwdHIpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJDYW4ndCBmaW5kIHByb2xvZ3VlIHBhY2tldCBmb3IgdGFpbDogIiwgUmF3UG9p
bnRlcih0YWlsUGFja2V0LmZyYW1lKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBXZSB3ZXJlIHVuYWJsZSB0byBsb2NhdGUgdGhlIHByb2xvZ3VlIHBhY2tldCBmb3IgdGhpcyB0
YWlsIHBhY2tldC4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgcmFyZSBidXQg
Y2FuIGhhcHBlbiBpbiBhIHNpdHVhdGlvbiBsaWtlOgogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gZnVuY3Rpb24gZm9vKCkgewpAQCAtMzE3LDI0ICszNDAsNyBAQCB2b2lkIFNoYWRvd0NoaWNr
ZW46OnVwZGF0ZShWTSYsIEV4ZWNTdGF0CiAgICAgICAgICAgICAgICAgICAgIHRvUHVzaC5hcHBl
bmQoRnJhbWUocGFja2V0LmNhbGxlZSwgcGFja2V0LmZyYW1lLCBpc1RhaWxEZWxldGVkLCB0YWls
UGFja2V0LnRoaXNWYWx1ZSwgdGFpbFBhY2tldC5zY29wZSwgdGFpbFBhY2tldC5jb2RlQmxvY2ss
IHRhaWxQYWNrZXQuY2FsbFNpdGVJbmRleCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChjYWxsRnJhbWUgPT0gaGlnaGVzdFBvaW50U2luY2VMYXN0
VGltZSkgewotICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nKCIgICAgQmFpbGluZyBhdCAiLCBSYXdQb2ludGVyKGNhbGxGcmFtZSksICIgYmVj
YXVzZSBpdCdzIHRoZSBoaWdoZXN0IHBvaW50IHNpbmNlIGxhc3QgdGltZS5cbiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBib29sIGZvdW5kRnJhbWUgPSBhZHZhbmNlSW5kZXhJbkxvZ1RvKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5jYWxsZWUoKSwgY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKTsKLSAgICAgICAg
ICAgIGJvb2wgaXNUYWlsRGVsZXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgSlNTY29wZSogc2Nv
cGUgPSBudWxscHRyOwotICAgICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpOwotICAgICAgICAgICAgaWYgKGNvZGVCbG9jayAmJiBjb2RlQmxvY2st
Pndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgICAgICBzY29wZSA9IGNhbGxGcmFtZS0+
c2NvcGUoY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHNjb3BlLT5pbmhlcml0cyhKU1Njb3BlOjppbmZvKCkpKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZm91bmRGcmFtZSkgewotICAgICAgICAgICAgICAgIHNjb3Bl
ID0gbV9sb2dbaW5kZXhJbkxvZ10uc2NvcGU7Ci0gICAgICAgICAgICAgICAgaWYgKHNjb3BlKQot
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzY29wZS0+aW5oZXJpdHMoSlNTY29w
ZTo6aW5mbygpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b1B1c2guYXBwZW5kKEZy
YW1lKHZpc2l0b3ItPmNhbGxlZSgpLCBjYWxsRnJhbWUsIGlzVGFpbERlbGV0ZWQsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCksIHNjb3BlLCBjb2RlQmxvY2ssIGNhbGxGcmFtZS0+Y2FsbFNpdGVJbmRl
eCgpKSk7CisKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogICAg
ICAgICB9KTsKIApAQCAtNDIxLDggKzQyNyw5IEBAIHZvaWQgU2hhZG93Q2hpY2tlbjo6ZHVtcChQ
cmludFN0cmVhbSYgb3UKICAgICAKICAgICBDb21tYVByaW50ZXIgY29tbWE7CiAgICAgdW5zaWdu
ZWQgbGltaXQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9sb2dDdXJzb3IgLSBtX2xvZyk7Cisg
ICAgb3V0LnByaW50KCJcbiIpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW1pdDsg
KytpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsIG1fbG9nW2ldKTsKKyAgICAgICAgb3V0LnBy
aW50KCJcdCIsIGNvbW1hLCBtX2xvZ1tpXSwgIlxuIik7CiAgICAgb3V0LnByaW50KCJdfSIpOwog
fQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE0MjApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNS0yNiAgU2FhbSBiYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFkb3dDaGlja2VuL0RlYnVnZ2VyQ2Fs
bEZyYW1lIGRvbid0IHByb3Blcmx5IGhhbmRsZSB3aGVuIHRoZSBlbnRyeSBzdGFjayBmcmFtZSBp
cyBhIHRhaWwgZGVsZXRlZCBmcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4MTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2VzL3RhaWwtZGVsZXRl
ZC1mcmFtZXMtZnJvbS12bS1lbnRyeS5qczogQWRkZWQuCisgICAgICAgICh0aW1lb3V0KToKKyAg
ICAgICAgKGJhcik6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1m
cmFtZXMtZnJvbS12bS1lbnRyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLWZyb20tdm0tZW50cnkuaHRtbDogQWRk
ZWQuCisKIDIwMTYtMDUtMjYgIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nz
b24uY29tPgogCiAgICAgICAgIFdlYlJUQzogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOiBNYWtlIGF0
dHJpYnV0ZXMgcmVhZG9ubHkgKGFuZCByZW1vdmUgY3VzdG9tIGJpbmRpbmcpCkluZGV4OiBMYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy1mcm9tLXZtLWVu
dHJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy1mcm9tLXZtLWVudHJ5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQt
ZnJhbWVzLWZyb20tdm0tZW50cnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTkxIEBACitUZXN0aW5nIHRoYXQgd2Uga2VlcCBhcm91bmQgdGFpbCBkZWxldGVkIGZyYW1l
cyB0aGF0IGFyZSBlbnRyeSBmcmFtZXMuCisKK1N0YXJ0aW5nIFRlc3QKKworCistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hpdCBicmVha3BvaW50IGF0IGxpbmU6IDcsIGNv
bHVtbjogNAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitFeHBlY3RlZCBm
cmFtZTogeyJmdW5jdGlvbk5hbWUiOiJiYXIiLCJzY29wZSI6WyJpIiwwXSwiaXNUYWlsRGVsZXRl
ZCI6ZmFsc2V9CitQQVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29ycmVjdC4KK1BBU1M6IFRh
aWwgZGVsZXRlZCBleHBlY3RhdGlvbiBjb3JyZWN0OiBmYWxzZQorRXhwZWN0ZWQgZnJhbWU6IHsi
ZnVuY3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIsMV0sImlzVGFpbERlbGV0ZWQiOnRydWV9
CitQQVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRl
ZCBleHBlY3RhdGlvbiBjb3JyZWN0OiB0cnVlCitFeHBlY3RlZCBmcmFtZTogeyJmdW5jdGlvbk5h
bWUiOiJiYXIiLCJzY29wZSI6WyJpIiwyXSwiaXNUYWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1
bmN0aW9uIG5hbWU6IGJhciBpcyBjb3JyZWN0LgorUEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0
aW9uIGNvcnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZyYW1lOiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIs
InNjb3BlIjpbImkiLDNdLCJpc1RhaWxEZWxldGVkIjp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFt
ZTogYmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWlsIGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVj
dDogdHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVuY3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsi
aSIsNF0sImlzVGFpbERlbGV0ZWQiOnRydWV9CitQQVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMg
Y29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBleHBlY3RhdGlvbiBjb3JyZWN0OiB0cnVlCitF
eHBlY3RlZCBmcmFtZTogeyJmdW5jdGlvbk5hbWUiOiJiYXIiLCJzY29wZSI6WyJpIiw1XSwiaXNU
YWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0aW9uIG5hbWU6IGJhciBpcyBjb3JyZWN0Lgor
UEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9uIGNvcnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZy
YW1lOiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIsInNjb3BlIjpbImkiLDZdLCJpc1RhaWxEZWxldGVk
Ijp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTogYmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWls
IGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDogdHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVu
Y3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIsN10sImlzVGFpbERlbGV0ZWQiOnRydWV9CitQ
QVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBl
eHBlY3RhdGlvbiBjb3JyZWN0OiB0cnVlCitFeHBlY3RlZCBmcmFtZTogeyJmdW5jdGlvbk5hbWUi
OiJiYXIiLCJzY29wZSI6WyJpIiw4XSwiaXNUYWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0
aW9uIG5hbWU6IGJhciBpcyBjb3JyZWN0LgorUEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9u
IGNvcnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZyYW1lOiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIsInNj
b3BlIjpbImkiLDldLCJpc1RhaWxEZWxldGVkIjp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTog
YmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWlsIGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDog
dHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVuY3Rpb25OYW1lIjoidGltZW91dCIsInNjb3BlIjpb
ImZvbyIsMjVdLCJpc1RhaWxEZWxldGVkIjp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTogdGlt
ZW91dCBpcyBjb3JyZWN0LgorUEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9uIGNvcnJlY3Q6
IHRydWUKK0xvb2tpbmcgYXQgZnJhbWUgbnVtYmVyOiAwCisgICAgdmFyaWFibGUgJ2knOiB7Il90
eXBlIjoibnVtYmVyIiwiX2Rlc2NyaXB0aW9uIjoiMCIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92
YWx1ZSI6MH0KK1BBU1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUg
dmFsdWU6IDAKK1BBU1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9y
OiBpCitMb29raW5nIGF0IGZyYW1lIG51bWJlcjogMQorICAgIHZhcmlhYmxlICdpJzogeyJfdHlw
ZSI6Im51bWJlciIsIl9kZXNjcmlwdGlvbiI6IjEiLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJfdmFs
dWUiOjF9CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZh
bHVlOiAxCitQQVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjog
aQorTG9va2luZyBhdCBmcmFtZSBudW1iZXI6IDIKKyAgICB2YXJpYWJsZSAnaSc6IHsiX3R5cGUi
OiJudW1iZXIiLCJfZGVzY3JpcHRpb24iOiIyIiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3ZhbHVl
IjoyfQorUEFTUzogVmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBzY29wZSB2YWx1
ZTogMgorUEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6IGkK
K0xvb2tpbmcgYXQgZnJhbWUgbnVtYmVyOiAzCisgICAgdmFyaWFibGUgJ2knOiB7Il90eXBlIjoi
bnVtYmVyIiwiX2Rlc2NyaXB0aW9uIjoiMyIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1ZSI6
M30KK1BBU1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFsdWU6
IDMKK1BBU1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yOiBpCitM
b29raW5nIGF0IGZyYW1lIG51bWJlcjogNAorICAgIHZhcmlhYmxlICdpJzogeyJfdHlwZSI6Im51
bWJlciIsIl9kZXNjcmlwdGlvbiI6IjQiLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJfdmFsdWUiOjR9
CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZhbHVlOiA0
CitQQVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogaQorTG9v
a2luZyBhdCBmcmFtZSBudW1iZXI6IDUKKyAgICB2YXJpYWJsZSAnaSc6IHsiX3R5cGUiOiJudW1i
ZXIiLCJfZGVzY3JpcHRpb24iOiI1IiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3ZhbHVlIjo1fQor
UEFTUzogVmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBzY29wZSB2YWx1ZTogNQor
UEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6IGkKK0xvb2tp
bmcgYXQgZnJhbWUgbnVtYmVyOiA2CisgICAgdmFyaWFibGUgJ2knOiB7Il90eXBlIjoibnVtYmVy
IiwiX2Rlc2NyaXB0aW9uIjoiNiIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1ZSI6Nn0KK1BB
U1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFsdWU6IDYKK1BB
U1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yOiBpCitMb29raW5n
IGF0IGZyYW1lIG51bWJlcjogNworICAgIHZhcmlhYmxlICdpJzogeyJfdHlwZSI6Im51bWJlciIs
Il9kZXNjcmlwdGlvbiI6IjciLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJfdmFsdWUiOjd9CitQQVNT
OiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZhbHVlOiA3CitQQVNT
OiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogaQorTG9va2luZyBh
dCBmcmFtZSBudW1iZXI6IDgKKyAgICB2YXJpYWJsZSAnaSc6IHsiX3R5cGUiOiJudW1iZXIiLCJf
ZGVzY3JpcHRpb24iOiI4IiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3ZhbHVlIjo4fQorUEFTUzog
VmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBzY29wZSB2YWx1ZTogOAorUEFTUzog
RGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6IGkKK0xvb2tpbmcgYXQg
ZnJhbWUgbnVtYmVyOiA5CisgICAgdmFyaWFibGUgJ2knOiB7Il90eXBlIjoibnVtYmVyIiwiX2Rl
c2NyaXB0aW9uIjoiOSIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1ZSI6OX0KK1BBU1M6IFZh
cmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFsdWU6IDkKK1BBU1M6IERp
ZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yOiBpCitMb29raW5nIGF0IGZy
YW1lIG51bWJlcjogMTAKKyAgICB2YXJpYWJsZSAnZm9vJzogeyJfdHlwZSI6Im51bWJlciIsIl9k
ZXNjcmlwdGlvbiI6IjI1IiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3ZhbHVlIjoyNX0KK1BBU1M6
IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFsdWU6IDI1CitQQVNT
OiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogZm9vCisKKworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIaXQgYnJlYWtwb2ludCBhdCBsaW5l
OiA3LCBjb2x1bW46IDQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRXhw
ZWN0ZWQgZnJhbWU6IHsiZnVuY3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIsMF0sImlzVGFp
bERlbGV0ZWQiOmZhbHNlfQorUEFTUzogRnVuY3Rpb24gbmFtZTogYmFyIGlzIGNvcnJlY3QuCitQ
QVNTOiBUYWlsIGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDogZmFsc2UKK0V4cGVjdGVkIGZy
YW1lOiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIsInNjb3BlIjpbImkiLDFdLCJpc1RhaWxEZWxldGVk
Ijp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTogYmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWls
IGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDogdHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVu
Y3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIsMl0sImlzVGFpbERlbGV0ZWQiOnRydWV9CitQ
QVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBl
eHBlY3RhdGlvbiBjb3JyZWN0OiB0cnVlCitFeHBlY3RlZCBmcmFtZTogeyJmdW5jdGlvbk5hbWUi
OiJiYXIiLCJzY29wZSI6WyJpIiwzXSwiaXNUYWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0
aW9uIG5hbWU6IGJhciBpcyBjb3JyZWN0LgorUEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9u
IGNvcnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZyYW1lOiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIsInNj
b3BlIjpbImkiLDRdLCJpc1RhaWxEZWxldGVkIjp0cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTog
YmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWlsIGRlbGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDog
dHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVuY3Rpb25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIs
NV0sImlzVGFpbERlbGV0ZWQiOnRydWV9CitQQVNTOiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29y
cmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBleHBlY3RhdGlvbiBjb3JyZWN0OiB0cnVlCitFeHBl
Y3RlZCBmcmFtZTogeyJmdW5jdGlvbk5hbWUiOiJiYXIiLCJzY29wZSI6WyJpIiw2XSwiaXNUYWls
RGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0aW9uIG5hbWU6IGJhciBpcyBjb3JyZWN0LgorUEFT
UzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9uIGNvcnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZyYW1l
OiB7ImZ1bmN0aW9uTmFtZSI6ImJhciIsInNjb3BlIjpbImkiLDddLCJpc1RhaWxEZWxldGVkIjp0
cnVlfQorUEFTUzogRnVuY3Rpb24gbmFtZTogYmFyIGlzIGNvcnJlY3QuCitQQVNTOiBUYWlsIGRl
bGV0ZWQgZXhwZWN0YXRpb24gY29ycmVjdDogdHJ1ZQorRXhwZWN0ZWQgZnJhbWU6IHsiZnVuY3Rp
b25OYW1lIjoiYmFyIiwic2NvcGUiOlsiaSIsOF0sImlzVGFpbERlbGV0ZWQiOnRydWV9CitQQVNT
OiBGdW5jdGlvbiBuYW1lOiBiYXIgaXMgY29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBleHBl
Y3RhdGlvbiBjb3JyZWN0OiB0cnVlCitFeHBlY3RlZCBmcmFtZTogeyJmdW5jdGlvbk5hbWUiOiJi
YXIiLCJzY29wZSI6WyJpIiw5XSwiaXNUYWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0aW9u
IG5hbWU6IGJhciBpcyBjb3JyZWN0LgorUEFTUzogVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9uIGNv
cnJlY3Q6IHRydWUKK0V4cGVjdGVkIGZyYW1lOiB7ImZ1bmN0aW9uTmFtZSI6InRpbWVvdXQiLCJz
Y29wZSI6WyJmb28iLDI1XSwiaXNUYWlsRGVsZXRlZCI6dHJ1ZX0KK1BBU1M6IEZ1bmN0aW9uIG5h
bWU6IHRpbWVvdXQgaXMgY29ycmVjdC4KK1BBU1M6IFRhaWwgZGVsZXRlZCBleHBlY3RhdGlvbiBj
b3JyZWN0OiB0cnVlCitMb29raW5nIGF0IGZyYW1lIG51bWJlcjogMAorICAgIHZhcmlhYmxlICdp
JzogeyJfdHlwZSI6Im51bWJlciIsIl9kZXNjcmlwdGlvbiI6IjAiLCJfaGFzQ2hpbGRyZW4iOmZh
bHNlLCJfdmFsdWUiOjB9CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5k
IHNjb3BlIHZhbHVlOiAwCitQQVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29r
aW5nIGZvcjogaQorTG9va2luZyBhdCBmcmFtZSBudW1iZXI6IDEKKyAgICB2YXJpYWJsZSAnaSc6
IHsiX3R5cGUiOiJudW1iZXIiLCJfZGVzY3JpcHRpb24iOiIxIiwiX2hhc0NoaWxkcmVuIjpmYWxz
ZSwiX3ZhbHVlIjoxfQorUEFTUzogVmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBz
Y29wZSB2YWx1ZTogMQorUEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2lu
ZyBmb3I6IGkKK0xvb2tpbmcgYXQgZnJhbWUgbnVtYmVyOiAyCisgICAgdmFyaWFibGUgJ2knOiB7
Il90eXBlIjoibnVtYmVyIiwiX2Rlc2NyaXB0aW9uIjoiMiIsIl9oYXNDaGlsZHJlbiI6ZmFsc2Us
Il92YWx1ZSI6Mn0KK1BBU1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2Nv
cGUgdmFsdWU6IDIKK1BBU1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcg
Zm9yOiBpCitMb29raW5nIGF0IGZyYW1lIG51bWJlcjogMworICAgIHZhcmlhYmxlICdpJzogeyJf
dHlwZSI6Im51bWJlciIsIl9kZXNjcmlwdGlvbiI6IjMiLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJf
dmFsdWUiOjN9CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3Bl
IHZhbHVlOiAzCitQQVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZv
cjogaQorTG9va2luZyBhdCBmcmFtZSBudW1iZXI6IDQKKyAgICB2YXJpYWJsZSAnaSc6IHsiX3R5
cGUiOiJudW1iZXIiLCJfZGVzY3JpcHRpb24iOiI0IiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3Zh
bHVlIjo0fQorUEFTUzogVmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBzY29wZSB2
YWx1ZTogNAorUEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6
IGkKK0xvb2tpbmcgYXQgZnJhbWUgbnVtYmVyOiA1CisgICAgdmFyaWFibGUgJ2knOiB7Il90eXBl
IjoibnVtYmVyIiwiX2Rlc2NyaXB0aW9uIjoiNSIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1
ZSI6NX0KK1BBU1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFs
dWU6IDUKK1BBU1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yOiBp
CitMb29raW5nIGF0IGZyYW1lIG51bWJlcjogNgorICAgIHZhcmlhYmxlICdpJzogeyJfdHlwZSI6
Im51bWJlciIsIl9kZXNjcmlwdGlvbiI6IjYiLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJfdmFsdWUi
OjZ9CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZhbHVl
OiA2CitQQVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogaQor
TG9va2luZyBhdCBmcmFtZSBudW1iZXI6IDcKKyAgICB2YXJpYWJsZSAnaSc6IHsiX3R5cGUiOiJu
dW1iZXIiLCJfZGVzY3JpcHRpb24iOiI3IiwiX2hhc0NoaWxkcmVuIjpmYWxzZSwiX3ZhbHVlIjo3
fQorUEFTUzogVmFyaWFibGUgaXMgYSBudW1iZXIuCitQQVNTOiBGb3VuZCBzY29wZSB2YWx1ZTog
NworUEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6IGkKK0xv
b2tpbmcgYXQgZnJhbWUgbnVtYmVyOiA4CisgICAgdmFyaWFibGUgJ2knOiB7Il90eXBlIjoibnVt
YmVyIiwiX2Rlc2NyaXB0aW9uIjoiOCIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1ZSI6OH0K
K1BBU1M6IFZhcmlhYmxlIGlzIGEgbnVtYmVyLgorUEFTUzogRm91bmQgc2NvcGUgdmFsdWU6IDgK
K1BBU1M6IERpZCBub3QgZmluZCB2YXJpYWJsZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yOiBpCitMb29r
aW5nIGF0IGZyYW1lIG51bWJlcjogOQorICAgIHZhcmlhYmxlICdpJzogeyJfdHlwZSI6Im51bWJl
ciIsIl9kZXNjcmlwdGlvbiI6IjkiLCJfaGFzQ2hpbGRyZW4iOmZhbHNlLCJfdmFsdWUiOjl9CitQ
QVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZhbHVlOiA5CitQ
QVNTOiBEaWQgbm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogaQorTG9va2lu
ZyBhdCBmcmFtZSBudW1iZXI6IDEwCisgICAgdmFyaWFibGUgJ2Zvbyc6IHsiX3R5cGUiOiJudW1i
ZXIiLCJfZGVzY3JpcHRpb24iOiIyNSIsIl9oYXNDaGlsZHJlbiI6ZmFsc2UsIl92YWx1ZSI6MjV9
CitQQVNTOiBWYXJpYWJsZSBpcyBhIG51bWJlci4KK1BBU1M6IEZvdW5kIHNjb3BlIHZhbHVlOiAy
NQorUEFTUzogRGlkIG5vdCBmaW5kIHZhcmlhYmxlIHdlIHdlcmUgbG9va2luZyBmb3I6IGZvbwor
VGVzdHMgZG9uZQorCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1k
ZWxldGVkLWZyYW1lcy1mcm9tLXZtLWVudHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMtZnJvbS12bS1lbnRyeS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwt
ZGVsZXRlZC1mcmFtZXMtZnJvbS12bS1lbnRyeS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOTUgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4v
cmVzb3VyY2VzL3RhaWwtZGVsZXRlZC1mcmFtZXMtZnJvbS12bS1lbnRyeS5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc2NyaXB0T2JqZWN0Owor
CisgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
U3RhcnRpbmcgVGVzdCIpOworICAgICAgICAvLyAwIGJhc2VkIGluZGljZXMuCisgICAgICAgIGxl
dCB0ZXN0SW5mbyA9IHtsaW5lOiA3LCBjb2x1bW46IDR9OworICAgICAgICBsZXQgbG9jYXRpb24g
PSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRl
c3RJbmZvLmNvbHVtbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFu
YWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKCJzZXRUaW1lb3V0KHRpbWVvdXQsIDApOyIpOworICAgIH0KKworICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LkNhbGxGcmFtZXNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIHZhciBhY3RpdmVDYWxsRnJhbWUgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
YW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZTsKKworICAgICAgICBpZiAoIWFjdGl2ZUNhbGxGcmFtZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgc3RvcExvY2F0aW9uID0gImxpbmU6
ICIgKyBhY3RpdmVDYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiLCBj
b2x1bW46ICIgKyBhY3RpdmVDYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJl
cjsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG5cbi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiSGl0IGJyZWFr
cG9pbnQgYXQgIiArIHN0b3BMb2NhdGlvbik7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCIt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKworICAgICAgICAvLyB0b3Ag
ZG93biBsaXN0CisgICAgICAgIGxldCBleHBlY3RlZEZyYW1lcyA9IFtdOworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwOyBpKyspCisgICAgICAgICAgICBleHBlY3RlZEZyYW1lcy5wdXNo
KHtmdW5jdGlvbk5hbWU6ICdiYXInLCBzY29wZTogWydpJywgaV0sIGlzVGFpbERlbGV0ZWQ6IGkg
PiAwID8gdHJ1ZSA6IGZhbHNlfSk7CisgICAgICAgIGV4cGVjdGVkRnJhbWVzLnB1c2goe2Z1bmN0
aW9uTmFtZTogJ3RpbWVvdXQnLCBzY29wZTogWydmb28nLCAyNV0sIGlzVGFpbERlbGV0ZWQ6IHRy
dWV9KTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLmNhbGxGcmFtZXMubGVuZ3RoID49IGV4cGVjdGVkRnJhbWVzLmxlbmd0aCk7CisK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBlY3RlZEZyYW1lcy5sZW5ndGg7IGkrKykg
eworICAgICAgICAgICAgbGV0IGNhbGxGcmFtZSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuY2FsbEZyYW1lc1tpXTsKKyAgICAgICAgICAgIGxldCBleHBlY3RlZEZyYW1lID0gZXhwZWN0
ZWRGcmFtZXNbaV07CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXhwZWN0ZWQgZnJh
bWU6ICIgKyBKU09OLnN0cmluZ2lmeShleHBlY3RlZEZyYW1lKSk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdFRoYXQoY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSA9PT0gZXhwZWN0ZWRG
cmFtZS5mdW5jdGlvbk5hbWUsIGBGdW5jdGlvbiBuYW1lOiAke2NhbGxGcmFtZS5mdW5jdGlvbk5h
bWV9IGlzIGNvcnJlY3QuYCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhh
dChjYWxsRnJhbWUuaXNUYWlsRGVsZXRlZCA9PT0gZXhwZWN0ZWRGcmFtZS5pc1RhaWxEZWxldGVk
LCBgVGFpbCBkZWxldGVkIGV4cGVjdGF0aW9uIGNvcnJlY3Q6ICR7Y2FsbEZyYW1lLmlzVGFpbERl
bGV0ZWR9YCk7CisgICAgICAgICAgICBsZXQgc2NvcGUgPSBjYWxsRnJhbWUuc2NvcGVDaGFpblsx
XTsKKworICAgICAgICAgICAgc2NvcGUub2JqZWN0c1swXS5nZXRBbGxQcm9wZXJ0eURlc2NyaXB0
b3JzKGZ1bmN0aW9uKHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgZm91bmQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBsZXQgdmFyaWFibGVOYW1lID0gZXhwZWN0ZWRGcmFtZS5z
Y29wZVswXTsKKyAgICAgICAgICAgICAgICBsZXQgdmFyaWFibGVWYWx1ZSA9IGV4cGVjdGVkRnJh
bWUuc2NvcGVbMV07CisgICAgICAgICAgICAgICAgZm9yIChsZXQgcHJvcGVydHlEZXNjcmlwdG9y
IG9mIHByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5RGVzY3Jp
cHRvci5uYW1lID09PSB2YXJpYWJsZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJM
b29raW5nIGF0IGZyYW1lIG51bWJlcjogIiArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coYCAgICB2YXJpYWJsZSAnJHt2YXJpYWJsZU5hbWV9JzogJHtKU09O
LnN0cmluZ2lmeShwcm9wZXJ0eURlc2NyaXB0b3IudmFsdWUpfWApOworICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHByb3BlcnR5RGVzY3JpcHRvci52YWx1
ZS50eXBlID09PSAnbnVtYmVyJywgIlZhcmlhYmxlIGlzIGEgbnVtYmVyLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHByb3BlcnR5RGVzY3JpcHRv
ci52YWx1ZS52YWx1ZSA9PT0gdmFyaWFibGVWYWx1ZSwgYEZvdW5kIHNjb3BlIHZhbHVlOiAke3Zh
cmlhYmxlVmFsdWV9YCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCEhZm91bmQsIGBEaWQg
bm90IGZpbmQgdmFyaWFibGUgd2Ugd2VyZSBsb29raW5nIGZvcjogJHt2YXJpYWJsZU5hbWV9YCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgfSk7CisKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5SZXN1bWVkLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiVGVzdHMgZG9uZSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgIH0pOworCisgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50U2NyaXB0T2JqZWN0ID0gZXZlbnQuZGF0YS5zY3Jp
cHQ7CisgICAgICAgIAorICAgICAgICBpZiAoL3RhaWwtZGVsZXRlZC1mcmFtZXMtZnJvbS12bS1l
bnRyeVwuanMkLy50ZXN0KGV2ZW50U2NyaXB0T2JqZWN0LnVybCkpIHsKKyAgICAgICAgICAgIHNj
cmlwdE9iamVjdCA9IGV2ZW50U2NyaXB0T2JqZWN0OworICAgICAgICAgICAgc3RhcnRUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgIH0pOworCisgICAgSW5zcGVj
dG9yVGVzdC5yZWxvYWRQYWdlKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIHRoYXQgd2Uga2VlcCBhcm91bmQgdGFpbCBk
ZWxldGVkIGZyYW1lcyB0aGF0IGFyZSBlbnRyeSBmcmFtZXMuIDwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvdGFpbC1k
ZWxldGVkLWZyYW1lcy1mcm9tLXZtLWVudHJ5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZXMvdGFpbC1kZWxldGVkLWZyYW1lcy1mcm9tLXZt
LWVudHJ5LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jlc291cmNlcy90YWlsLWRlbGV0ZWQtZnJhbWVzLWZyb20tdm0tZW50cnkuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw5IEBACisidXNlIHN0cmljdCI7CitmdW5jdGlvbiB0aW1lb3V0KGZv
byA9IDI1KSB7CisgICAgcmV0dXJuIGJhcigpOworfQorZnVuY3Rpb24gYmFyKGkgPSA5KSB7Cisg
ICAgaWYgKGkgPiAwKQorICAgICAgICByZXR1cm4gYmFyKGkgLSAxKTsKKyAgICByZXR1cm4gMjU7
Cit9Cg==
</data>
<flag name="review"
          id="303927"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>