<?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>16631</bug_id>
          
          <creation_ts>2007-12-27 23:37:58 -0800</creation_ts>
          <short_desc>security/frameNavigation tests should test for DENIED cases</short_desc>
          <delta_ts>2010-06-10 15:40:40 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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="Adam Barth">abarth</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>65443</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2007-12-27 23:37:58 -0800</bug_when>
    <thetext>Currently, the tests in LayoutTests/http/tests/security/frameNavigation test only for ALLOWED cases.  To provide better coverage, they should tests DENIED cases too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65444</commentid>
    <comment_count>1</comment_count>
      <attachid>18141</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2007-12-27 23:39:28 -0800</bug_when>
    <thetext>Created attachment 18141
More frameNavigation tests

This patch adds a few tests for DENIED frame navigation cases.  Currently, they should all pass, but hopefully they&apos;ll catch future regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65446</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2007-12-27 23:55:51 -0800</bug_when>
    <thetext>I&apos;m not sure these tests properly call notifyDone when the navigation is blocked.  One possibility is to wait for Bug 16522 to be fixed.  After that patch lands, failed navigations will cause navigation-changed-iframe.html to be opened in a popup window (as in other browsers).  If we go that route, we&apos;ll want to set layoutTestController.setCanOpenWindows() and clean up the popup if top === self.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65633</commentid>
    <comment_count>3</comment_count>
      <attachid>18141</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-29 14:32:25 -0800</bug_when>
    <thetext>Comment on attachment 18141
More frameNavigation tests

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65635</commentid>
    <comment_count>4</comment_count>
      <attachid>18141</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-29 14:37:44 -0800</bug_when>
    <thetext>Comment on attachment 18141
More frameNavigation tests

As you suspected, these tests don&apos;t all pass. Also, the patch doesn&apos;t include expected results for navigation-ALLOWED-descendant.html or navigation-ALLOWED-top.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65638</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2007-12-29 15:04:08 -0800</bug_when>
    <thetext>Thanks for taking a look at this.  I should have access to a Mac in a week or two and will update the patch then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65656</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-29 18:58:28 -0800</bug_when>
    <thetext>A way I have considered testing the denied case, after the behavior has been changed to open the denied navigation in a new window, would be to use the layoutTestController.windowCount() function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>65720</commentid>
    <comment_count>7</comment_count>
      <attachid>18184</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2007-12-30 00:48:48 -0800</bug_when>
    <thetext>Created attachment 18184
More tests (still not working)

Added another test, but haven&apos;t addressed the issues raised by Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>67307</commentid>
    <comment_count>8</comment_count>
      <attachid>18459</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-01-15 09:55:09 -0800</bug_when>
    <thetext>Created attachment 18459
Mozilla frame navigation tests

We wrote a fairly extensive test suite for Mozilla that you&apos;re welcome to use.  It&apos;s written for their testing harness, and I&apos;m not sure what would be involved in porting it to DRT.  Also, their rules for when you can script data: URLs are different than yours, so you might want to replace those with actual documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82342</commentid>
    <comment_count>9</comment_count>
      <attachid>21507</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-06-05 04:36:14 -0700</bug_when>
    <thetext>Created attachment 21507
More test coverage

This patch significantly improves our LayoutTest coverage for navigation tests.  The patch tries each method of navigation (assigning to location, window.open, clicking hyperlinks, submitting forms, and plugs calling getURL) in a variety of frame configurations.  The tests reveal a bug in our plugin code where we don&apos;t properly set the opener of frames we create, but we should fix that in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82691</commentid>
    <comment_count>10</comment_count>
      <attachid>21507</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-08 17:50:59 -0700</bug_when>
    <thetext>Comment on attachment 21507
More test coverage

I&apos;m concerned about timing dependencies in the tests. I&apos;m not happy with the 50ms timeouts in some tests.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82764</commentid>
    <comment_count>11</comment_count>
      <attachid>21507</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2008-06-09 13:04:50 -0700</bug_when>
    <thetext>Comment on attachment 21507
More test coverage

The tests didn&apos;t pass on the build bots.  I&apos;m not entirely sure why, but I&apos;ll go another round with them and address Darin&apos;s comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18141</attachid>
            <date>2007-12-27 23:39:28 -0800</date>
            <delta_ts>2007-12-30 00:48:48 -0800</delta_ts>
            <desc>More frameNavigation tests</desc>
            <filename>navigation-tests.patch</filename>
            <type>text/plain</type>
            <size>22235</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI5MDEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDctMTItMjcgIEFkYW0gQmFydGggIDxoazk1
NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcHJvdmUgZnJhbWVOYXZpZ2F0aW9uIExheW91dFRlc3RzIHRvIGluY2x1ZGUgc29t
ZSBkZW5pZWQgY2FzZXMuCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRh
bnQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFu
Z2UuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9u
YXZpZ2F0aW9uLUFMTE9XRUQtdG9wLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0
aW9uLWNoYW5nZS5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctZm9ybS1zdWJtaXQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1ERU5JRUQtc2libGluZy1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXdp
bmRvdy1vcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBhcmVudC1sb2NhdGlv
bi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRp
b24uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9y
ZXNvdXJjZXMvaWZyYW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL2lmcmFtZS10aGF0LWNhbGxzLXdpbmRvdy1vcGVuLXRhcmdldC1mcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJj
ZXMvaWZyYW1lLXRoYXQtc3VibWl0cy1mb3JtLXRvLXRhcmdldC1mcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
bmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0aW9uLWNoYW5n
ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
eHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdlLmh0bWw6
IFJlbW92ZWQuCisKIDIwMDctMTItMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1kZXNj
ZW5kYW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRhbnQuaHRtbAkocmV2
aXNpb24gMjkwMDkpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdl
Lmh0bWw6MjkwMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtZGVzY2VuZGFudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBp
ZnJhbWUgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7fQorICAgIDwvc3R5bGU+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBsb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47
CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXRGb3JGbGFnLCAxKTsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiB3YWl0Rm9yRmxhZygpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXlvdXRU
ZXN0Q29udHJvbGxlci5nbG9iYWxGbGFnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHdhaXRGb3JGbGFnLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmdsb2JhbEZsYWcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcGVyZm9y
bVRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBzdWJGcmFtZSA9IHdpbmRvdy5mcmFtZXNbMF07CisgICAgICAgICAgICBzdWJGcmFtZS5mcmFt
ZXNbMF0ubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sIjsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgor
ICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2NhdGlv
biBvZiBhbnkgb2YgaXQncyBzdWItZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwvcD4KKyAg
ICA8aDQ+RE9NQUlOPC9oND4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXdpdGgtaW5uZXItZnJh
bWUtb24tZm9yZWlnbi1kb21haW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGJ1dHRvbiBvbmNsaWNr
PSJwZXJmb3JtVGVzdCgpIj5QZXJmb3JtIFRlc3Q8L2J1dHRvbj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25h
dmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtdG9wLmh0
bWwJKHJldmlzaW9uIDI5MDA5KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRt
bDoyOTAwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL25hdmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIzIEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsgd2lk
dGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxw
PlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2NhdGlvbiBvZiBh
bnkgb2YgaXQncyBwYXJlbnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwvcD4KKyAgICA8
aDQ+RE9NQUlOPC9oND4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFy
ZW50LW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9u
LUFMTE9XRUQtdG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELXRvcC5odG1sCShyZXZp
c2lvbiAyOTAwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYs
OCArMTYsOCBAQAogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJsb2FkZWQo
KTsiPgotICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBs
b2NhdGlvbiBvZiBhbnkgb2YgaXQncyBwYXJlbnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWlu
LjwvcD4KKyAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbiBuYXZpZ2F0ZSB0aGUg
bG9jYXRpb24gb2YgdGhlIHRvcCBmcmFtZSwgcmVnYXJkbGVzcyBvZiBkb21haW4uPC9wPgogICAg
IDxoND5ET01BSU48L2g0PgotICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1wZXJmb3Jtcy1w
YXJlbnQtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1l
LXRoYXQtYXNzaWducy1wYXJlbnQtbG9jYXRpb24uaHRtbCI+PC9pZnJhbWU+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0tc3VibWl0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1ERU5JRUQtc2libGluZy1mb3JtLXN1Ym1pdC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1ERU5JRUQtc2libGluZy1mb3JtLXN1Ym1pdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI5IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsgd2lk
dGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KKyAgICAgICAgLnZpY3RpbSB7IGJvcmRlcjogc29s
aWQgM3B4IHJlZDsgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQn
KVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47CisKKyAgICAgICAgICAgIHZhciBhY3Rp
dmVGcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAg
YWN0aXZlRnJhbWUuc3JjID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS10aGF0LXN1Ym1pdHMtZm9ybS10by10YXJnZXQtZnJh
bWUuaHRtbCc7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFjdGl2ZUZy
YW1lKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJs
b2FkZWQoKTsiPgorICAgIDxoND5ET01BSU48L2g0PgorICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBk
b2N1bWVudHMgY2Fubm90IG5hdmlnYXRlIHRoZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJlIG9uIGEg
ZGlmZmVyZW50IGRvbWFpbi48L3A+CisgICAgPGlmcmFtZSBjbGFzcz0idmljdGltIiBuYW1lPSJ0
YXJnZXRGcmFtZSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2lubm9jZW50LXZpY3RpbS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRp
b24tREVOSUVELXNpYmxpbmctbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1z
aWJsaW5nLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxv
Y2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+
CisgICAgPHN0eWxlPgorICAgICAgICBpZnJhbWUgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAw
cHg7fQorICAgICAgICAudmljdGltIHsgYm9yZGVyOiBzb2xpZCAzcHggcmVkOyB9CisgICAgPC9z
dHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmRvbWFpbjsKKworICAgICAgICAgICAgdmFyIGFjdGl2ZUZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgICAgICBhY3RpdmVGcmFtZS5zcmMgPSAnaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZy
YW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRtbCc7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFjdGl2ZUZyYW1lKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxoND5E
T01BSU48L2g0PgorICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2Fubm90IG5hdmln
YXRlIHRoZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJlIG9uIGEgZGlmZmVyZW50IGRvbWFpbi48L3A+
CisgICAgPGlmcmFtZSBjbGFzcz0idmljdGltIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvaW5ub2NlbnQtdmljdGltLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy13aW5kb3ctb3Blbi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctd2luZG93LW9wZW4uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmln
YXRpb24tREVOSUVELXNpYmxpbmctd2luZG93LW9wZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGlmcmFtZSB7
IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDt9CisgICAgICAgIC52aWN0aW0geyBib3JkZXI6
IHNvbGlkIDNweCByZWQ7IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbG9hZGVk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOworCisgICAgICAgICAgICB2YXIg
YWN0aXZlRnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKyAgICAgICAg
ICAgIGFjdGl2ZUZyYW1lLnNyYyA9ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1jYWxscy13aW5kb3ctb3Blbi10YXJn
ZXQtZnJhbWUuaHRtbCc7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFj
dGl2ZUZyYW1lKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJsb2FkZWQoKTsiPgorICAgIDxoND5ET01BSU48L2g0PgorICAgIDxwPlRoaXMgdGVzdHMg
dGhhdCBkb2N1bWVudHMgY2Fubm90IG5hdmlnYXRlIHRoZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJl
IG9uIGEgZGlmZmVyZW50IGRvbWFpbi48L3A+CisgICAgPGlmcmFtZSBjbGFzcz0idmljdGltIiBu
YW1lPSJ0YXJnZXRGcmFtZSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2lubm9jZW50LXZpY3RpbS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hz
cy1BTExPV0VELXBhcmVudC1uYXZpZ2F0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNz
LUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjkwMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBAQAotbG9jYWxob3N0Ci0KLVBBU1NFRDogTmF2aWdhdGlv
biBzdWNjZWVkZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMjkw
MDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94
c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMSwyMyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDxzdHlsZT4KLSAgICAgICAgaWZy
YW1lIHsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KLSAgICA8L3N0eWxlPgotICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIGxvYWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKLSAg
ICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsi
PgotICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2Nh
dGlvbiBvZiBhbnkgb2YgaXQncyBwYXJlbnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwv
cD4KLSAgICA8aDQ+RE9NQUlOPC9oND4KLSAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVy
Zm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94
c3MtQUxMT1dFRC10YXJnZXRlZC1zdWJmcmFtZS1uYXZpZ2F0aW9uLWNoYW5nZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFuZ2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyOTAwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5h
dmlnYXRpb24tY2hhbmdlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCww
IEBACi1UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbiBuYXZpZ2F0ZSB0aGUgbG9jYXRpb24g
b2YgYW55IG9mIGl0J3Mgc3ViLWZyYW1lcyByZWdhcmRsZXNzIG9mIGRvbWFpbi4KLQotMTI3LjAu
MC4xCi0KLSAgUGVyZm9ybSBUZXN0Ci0KLS0tLS0tLS0tCi1GcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JwotLS0tLS0tLS0KLWxvY2FsaG9zdAotCi0KLQotLS0tLS0tLS0K
LUZyYW1lOiAndGFyZ2V0RnJhbWUnCi0tLS0tLS0tLQotbG9jYWxob3N0Ci0KLVBBU1NFRDogTmF2
aWdhdGlvbiBzdWNjZWVkZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC10YXJnZXRlZC1zdWJmcmFtZS1uYXZpZ2F0aW9u
LWNoYW5nZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRp
b24tY2hhbmdlLmh0bWwJKHJldmlzaW9uIDI5MDA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUt
bmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi08
aHRtbD4KLTxoZWFkPgotICAgIDxzdHlsZT4KLSAgICAgICAgaWZyYW1lIHsgd2lkdGg6IDQwMHB4
OyBoZWlnaHQ6IDIwMHB4O30KLSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbG9hZGVk
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
J2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOwotCi0gICAgICAgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91
dCh3YWl0Rm9yRmxhZywgMSk7Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEZvckZsYWco
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFs
RmxhZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3YWl0Rm9yRmxhZywg
MSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5nbG9iYWxGbGFn
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcGVy
Zm9ybVRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc3ViRnJhbWUgPSB3aW5kb3cu
ZnJhbWVzWzBdOwotICAgICAgICAgICAgc3ViRnJhbWUuZnJhbWVzWzBdLmxvY2F0aW9uID0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25h
dmlnYXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbCI7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KLSAgICA8cD5UaGlzIHRlc3RzIHRo
YXQgZG9jdW1lbnRzIGNhbiBuYXZpZ2F0ZSB0aGUgbG9jYXRpb24gb2YgYW55IG9mIGl0J3Mgc3Vi
LWZyYW1lcyByZWdhcmRsZXNzIG9mIGRvbWFpbi48L3A+Ci0gICAgPGg0PkRPTUFJTjwvaDQ+Ci0g
ICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL2lmcmFtZS13aXRoLWlubmVyLWZyYW1lLW9uLWZvcmVpZ24tZG9tYWlu
Lmh0bWwiPjwvaWZyYW1lPgotICAgIDxidXR0b24gb25jbGljaz0icGVyZm9ybVRlc3QoKSI+UGVy
Zm9ybSBUZXN0PC9idXR0b24+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQt
YXNzaWducy1wYXJlbnQtbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQt
YXNzaWducy1wYXJlbnQtbG9jYXRpb24uaHRtbAkocmV2aXNpb24gMjkwMTApCShmcm9tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJh
bWUtdGhhdC1wZXJmb3Jtcy1wYXJlbnQtbmF2aWdhdGlvbi5odG1sOjI5MDEwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFt
ZS10aGF0LWFzc2lnbnMtcGFyZW50LWxvY2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biBsb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47CisgICAgICAgICAg
ICAvLyBBbGxvdyB0aGUgdXNlciB0byBjbGljayB0aGUgYnV0dG9uIGR1cmluZyBtYW51ZWwgcnVu
cy4KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICAgICAgcGVyZm9ybVRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHBl
cmZvcm1UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcGFyZW50LmxvY2F0aW9uID0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25h
dmlnYXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbCI7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KKyAgICA8aDQ+RE9NQUlOPC9oND4K
KyAgICA8YnV0dG9uIG9uY2xpY2s9InBlcmZvcm1UZXN0KCk7Ij5QZXJmb3JtIFRlc3Q8L2J1dHRv
bj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBhcmVudC1s
b2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBhcmVudC1s
b2NhdGlvbi5odG1sCShyZXZpc2lvbiAyOTAxMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBh
cmVudC1sb2NhdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDE0ICs0LDE0IEBACiAgICAg
ICAgIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsK
LSAgICAgICAgICAgIC8vIEFsbG93IHRoZSB1c2VyIHRvIGNsaWNrIHRoZSBidXR0b24gZHVyaW5n
IG1hbnVlbCBydW5zLgorICAgICAgICAgICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhl
IGJ1dHRvbiBkdXJpbmcgbWFudWFsIHJ1bnMuCiAgICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQogICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7CiAgICAgICAg
IH0KIAogICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHBhcmVudC5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiOwor
ICAgICAgICAgICAgcGFyZW50LmxvY2F0aW9uID0gIm5hdmlnYXRpb24tY2hhbmdlZC1pZnJhbWUu
aHRtbCI7CiAgICAgICAgIH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUt
dGhhdC1hc3NpZ25zLXRvcC1mcmFtZXMtMC1sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9p
ZnJhbWUtdGhhdC1hc3NpZ25zLXRvcC1mcmFtZXMtMC1sb2NhdGlvbi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL2lmcmFtZS10aGF0LWFzc2lnbnMtdG9wLWZyYW1lcy0wLWxvY2F0aW9uLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4K
KyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9t
YWluOworICAgICAgICAgICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhlIGJ1dHRvbiBk
dXJpbmcgbWFudWFsIHJ1bnMuCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRvcC5m
cmFtZXNbMF0ubG9jYXRpb24gPSAibmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sIjsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsi
PgorICAgIDxoND5ET01BSU48L2g0PgorICAgIDxidXR0b24gb25jbGljaz0icGVyZm9ybVRlc3Qo
KTsiPlBlcmZvcm0gVGVzdDwvYnV0dG9uPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFt
ZS10aGF0LWNhbGxzLXdpbmRvdy1vcGVuLXRhcmdldC1mcmFtZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNl
cy9pZnJhbWUtdGhhdC1jYWxscy13aW5kb3ctb3Blbi10YXJnZXQtZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L3Jlc291cmNlcy9pZnJhbWUtdGhhdC1jYWxscy13aW5kb3ctb3Blbi10YXJnZXQtZnJhbWUuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVu
dC5kb21haW47CisgICAgICAgICAgICAvLyBBbGxvdyB0aGUgdXNlciB0byBjbGljayB0aGUgYnV0
dG9uIGR1cmluZyBtYW51YWwgcnVucy4KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgICAgICAgICAgcGVyZm9ybVRlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHBlcmZvcm1UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
d2luZG93Lm9wZW4oIm5hdmlnYXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbCIsICJ0YXJnZXRGcmFt
ZSIpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9Imxv
YWRlZCgpOyI+CisgICAgPGg0PkRPTUFJTjwvaDQ+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJwZXJm
b3JtVGVzdCgpOyI+UGVyZm9ybSBUZXN0PC9idXR0b24+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJj
ZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbAkocmV2aXNp
b24gMjkwMTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMSwyMiArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDxz
Y3JpcHQ+Ci0gICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmRvbWFpbjsKLSAgICAgICAgICAgIC8vIEFsbG93IHRoZSB1c2VyIHRvIGNsaWNrIHRoZSBi
dXR0b24gZHVyaW5nIG1hbnVlbCBydW5zLgotICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgICAgICAgICBwZXJmb3JtVGVzdCgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRlc3QoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBwYXJlbnQubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sIjsKLSAg
ICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsi
PgotICAgIDxoND5ET01BSU48L2g0PgotICAgIDxidXR0b24gb25jbGljaz0icGVyZm9ybVRlc3Qo
KTsiPlBlcmZvcm0gVGVzdDwvYnV0dG9uPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFt
ZS10aGF0LXN1Ym1pdHMtZm9ybS10by10YXJnZXQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
aWZyYW1lLXRoYXQtc3VibWl0cy1mb3JtLXRvLXRhcmdldC1mcmFtZS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL2lmcmFtZS10aGF0LXN1Ym1pdHMtZm9ybS10by10YXJnZXQtZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0Pgor
ICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21h
aW47CisgICAgICAgICAgICAvLyBBbGxvdyB0aGUgdXNlciB0byBjbGljayB0aGUgYnV0dG9uIGR1
cmluZyBtYW51YWwgcnVucy4KKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgICAgICAgICAgcGVyZm9ybVRlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHBlcmZvcm1UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKVswXS5zdWJtaXQoKTsKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxo
ND5ET01BSU48L2g0PgorICAgIDxidXR0b24gb25jbGljaz0icGVyZm9ybVRlc3QoKTsiPlBlcmZv
cm0gVGVzdDwvYnV0dG9uPgorICAgIDxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSJuYXZpZ2F0
aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiIHRhcmdldD0idGFyZ2V0RnJhbWUiPgorICAgICAgICBU
aGlzIHRleHQgaXMgaW4gYSA8Y29kZT4mbHQ7Zm9ybSZndDs8L2NvZGU+LgorICAgIDwvZm9ybT4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL25hdmlnYXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbAkocmV2aXNpb24g
MjkwMTApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMSw2ICsxMSw2IEBACiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9ImZpcmVTZW50aW5lbCgp
OyI+CiAgICAgPGg0PkRPTUFJTjwvaDQ+Ci0gICAgPHA+UEFTU0VEOiBOYXZpZ2F0aW9uIHN1Y2Nl
ZWRlZC48L3A+CisgICAgPHA+TmF2aWdhdGlvbiBzdWNjZWVkZWQuPC9wPgogPC9ib2R5PgogPC9o
dG1sPgo=
</data>
<flag name="review"
          id="7876"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18184</attachid>
            <date>2007-12-30 00:48:48 -0800</date>
            <delta_ts>2008-06-05 04:36:14 -0700</delta_ts>
            <desc>More tests (still not working)</desc>
            <filename>navigation-tests-2.patch</filename>
            <type>text/plain</type>
            <size>25255</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI5MDEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDctMTItMjcgIEFkYW0gQmFydGggIDxoazk1
NjVAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEltcHJvdmUgZnJhbWVOYXZpZ2F0aW9uIExheW91dFRlc3RzIHRvIGluY2x1ZGUgc29t
ZSBkZW5pZWQgY2FzZXMuCisKKyAgICAgICAgKiBDaGFuZ2VMb2c6CisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRh
bnQuaHRtbDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFu
Z2UuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9u
YXZpZ2F0aW9uLUFMTE9XRUQtdG9wLmh0bWw6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0
aW9uLWNoYW5nZS5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctZm9ybS1zdWJtaXQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1ERU5JRUQtc2libGluZy1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXdp
bmRvdy1vcGVuLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBhcmVudC1sb2NhdGlv
bi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRp
b24uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9y
ZXNvdXJjZXMvaWZyYW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL2lmcmFtZS10aGF0LWNhbGxzLXdpbmRvdy1vcGVuLXRhcmdldC1mcmFtZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJj
ZXMvaWZyYW1lLXRoYXQtc3VibWl0cy1mb3JtLXRvLXRhcmdldC1mcmFtZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
bmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0aW9uLWNoYW5n
ZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLmh0bWw6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
eHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQu
dHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdlLmh0bWw6
IFJlbW92ZWQuCisKIDIwMDctMTItMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1kZXNj
ZW5kYW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRhbnQuaHRtbAkocmV2
aXNpb24gMjkwMDkpCShmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdl
Lmh0bWw6MjkwMDkpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtZGVzY2VuZGFudC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBp
ZnJhbWUgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7fQorICAgIDwvc3R5bGU+CisgICAg
PHNjcmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBsb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47
CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXRGb3JGbGFnLCAxKTsKKyAgICAgICAgICAgICAgICBm
dW5jdGlvbiB3YWl0Rm9yRmxhZygpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXlvdXRU
ZXN0Q29udHJvbGxlci5nbG9iYWxGbGFnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KHdhaXRGb3JGbGFnLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmdsb2JhbEZsYWcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcGVyZm9y
bVRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBzdWJGcmFtZSA9IHdpbmRvdy5mcmFtZXNbMF07CisgICAgICAgICAgICBzdWJGcmFtZS5mcmFt
ZXNbMF0ubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sIjsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgor
ICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2NhdGlv
biBvZiBhbnkgb2YgaXQncyBzdWItZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwvcD4KKyAg
ICA8aDQ+RE9NQUlOPC9oND4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXdpdGgtaW5uZXItZnJh
bWUtb24tZm9yZWlnbi1kb21haW4uaHRtbCI+PC9pZnJhbWU+CisgICAgPGJ1dHRvbiBvbmNsaWNr
PSJwZXJmb3JtVGVzdCgpIj5QZXJmb3JtIFRlc3Q8L2J1dHRvbj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25h
dmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtdG9wLmh0
bWwJKHJldmlzaW9uIDI5MDA5KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRt
bDoyOTAwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL25hdmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDIzIEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsgd2lk
dGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+Cisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxw
PlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2NhdGlvbiBvZiBh
bnkgb2YgaXQncyBwYXJlbnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwvcD4KKyAgICA8
aDQ+RE9NQUlOPC9oND4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFy
ZW50LW5hdmlnYXRpb24uaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9u
LUFMTE9XRUQtdG9wLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELXRvcC5odG1sCShyZXZp
c2lvbiAyOTAwOSkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC10b3AuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYs
OCArMTYsOCBAQAogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJsb2FkZWQo
KTsiPgotICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBs
b2NhdGlvbiBvZiBhbnkgb2YgaXQncyBwYXJlbnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWlu
LjwvcD4KKyAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbiBuYXZpZ2F0ZSB0aGUg
bG9jYXRpb24gb2YgdGhlIHRvcCBmcmFtZSwgcmVnYXJkbGVzcyBvZiBkb21haW4uPC9wPgogICAg
IDxoND5ET01BSU48L2g0PgotICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1wZXJmb3Jtcy1w
YXJlbnQtbmF2aWdhdGlvbi5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHNyYz0iaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1l
LXRoYXQtYXNzaWducy1wYXJlbnQtbG9jYXRpb24uaHRtbCI+PC9pZnJhbWU+CiA8L2JvZHk+CiA8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0tc3VibWl0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1ERU5JRUQtc2libGluZy1mb3JtLXN1Ym1pdC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1ERU5JRUQtc2libGluZy1mb3JtLXN1Ym1pdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI5IEBACis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsgd2lk
dGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KKyAgICAgICAgLnZpY3RpbSB7IGJvcmRlcjogc29s
aWQgM3B4IHJlZDsgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQn
KVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47CisKKyAgICAgICAgICAgIHZhciBhY3Rp
dmVGcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOworICAgICAgICAgICAg
YWN0aXZlRnJhbWUuc3JjID0gJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS10aGF0LXN1Ym1pdHMtZm9ybS10by10YXJnZXQtZnJh
bWUuaHRtbCc7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFjdGl2ZUZy
YW1lKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJs
b2FkZWQoKTsiPgorICAgIDxoND5ET01BSU48L2g0PgorICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBk
b2N1bWVudHMgY2Fubm90IG5hdmlnYXRlIHRoZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJlIG9uIGEg
ZGlmZmVyZW50IGRvbWFpbi48L3A+CisgICAgPGlmcmFtZSBjbGFzcz0idmljdGltIiBuYW1lPSJ0
YXJnZXRGcmFtZSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2Vz
L2lubm9jZW50LXZpY3RpbS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRp
b24tREVOSUVELXNpYmxpbmctbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1z
aWJsaW5nLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxv
Y2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+
CisgICAgPHN0eWxlPgorICAgICAgICBpZnJhbWUgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAw
cHg7fQorICAgICAgICAudmljdGltIHsgYm9yZGVyOiBzb2xpZCAzcHggcmVkOyB9CisgICAgPC9z
dHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
KyAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3Vt
ZW50LmRvbWFpbjsKKworICAgICAgICAgICAgdmFyIGFjdGl2ZUZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgICAgICAgICBhY3RpdmVGcmFtZS5zcmMgPSAnaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZy
YW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRtbCc7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFjdGl2ZUZyYW1lKTsKKyAgICAgICAgfQorICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxoND5E
T01BSU48L2g0PgorICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2Fubm90IG5hdmln
YXRlIHRoZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJlIG9uIGEgZGlmZmVyZW50IGRvbWFpbi48L3A+
CisgICAgPGlmcmFtZSBjbGFzcz0idmljdGltIiBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvaW5ub2NlbnQtdmljdGltLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy13aW5kb3ctb3Blbi1jYWxsLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy13aW5kb3ctb3Blbi1jYWxsLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXdpbmRvdy1vcGVuLWNhbGwuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+Cisg
ICAgICAgIGlmcmFtZSB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDt9CisgICAgICAgIC52
aWN0aW0geyBib3JkZXI6IHNvbGlkIDNweCByZWQ7IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3Jp
cHQ+CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOworCisg
ICAgICAgICAgICB2YXIgYWN0aXZlRnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJh
bWUnKTsKKyAgICAgICAgICAgIGFjdGl2ZUZyYW1lLnNyYyA9ICdodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1jYWxscy13
aW5kb3ctb3Blbi1jYWxsLXRvcC10YXJnZXQtZnJhbWUuaHRtbCc7CisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGFjdGl2ZUZyYW1lKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxoND5ET01BSU48
L2g0PgorICAgIDxwPlRoaXMgdGVzdHMgdGhhdCBkb2N1bWVudHMgY2Fubm90IG5hdmlnYXRlIHRo
ZWlyIHNpYmxpbmdzIGlmIHRoZXkgYXJlIG9uIGEgZGlmZmVyZW50IGRvbWFpbi48L3A+CisgICAg
PGlmcmFtZSBjbGFzcz0idmljdGltIiBuYW1lPSJ0YXJnZXRGcmFtZSIgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lubm9jZW50LXZpY3RpbS5odG1sIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctd2luZG93LW9w
ZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXdpbmRvdy1vcGVuLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXdpbmRvdy1vcGVuLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAg
ICAgICBpZnJhbWUgeyB3aWR0aDogNDAwcHg7IGhlaWdodDogMjAwcHg7fQorICAgICAgICAudmlj
dGltIHsgYm9yZGVyOiBzb2xpZCAzcHggcmVkOyB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0
PgorICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKKworICAg
ICAgICAgICAgdmFyIGFjdGl2ZUZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1l
Jyk7CisgICAgICAgICAgICBhY3RpdmVGcmFtZS5zcmMgPSAnaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtY2FsbHMtd2lu
ZG93LW9wZW4tdGFyZ2V0LWZyYW1lLmh0bWwnOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChhY3RpdmVGcmFtZSk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KKyAgICA8aDQ+RE9NQUlOPC9oND4KKyAgICA8
cD5UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbm5vdCBuYXZpZ2F0ZSB0aGVpciBzaWJsaW5n
cyBpZiB0aGV5IGFyZSBvbiBhIGRpZmZlcmVudCBkb21haW4uPC9wPgorICAgIDxpZnJhbWUgY2xh
c3M9InZpY3RpbSIgbmFtZT0idGFyZ2V0RnJhbWUiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9pbm5vY2VudC12aWN0aW0uaHRtbCI+PC9pZnJhbWU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0aW9uLWNoYW5nZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDI5MDA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICswLDAgQEAKLWxvY2FsaG9zdAotCi1QQVNT
RUQ6IE5hdmlnYXRpb24gc3VjY2VlZGVkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hh
bmdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLmh0bWwJ
KHJldmlzaW9uIDI5MDA5KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMjMgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8c3R5bGU+
Ci0gICAgICAgIGlmcmFtZSB7IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDt9Ci0gICAgPC9z
dHlsZT4KLSAgICA8c2NyaXB0PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0g
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVu
dC5kb21haW47Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9h
ZD0ibG9hZGVkKCk7Ij4KLSAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbiBuYXZp
Z2F0ZSB0aGUgbG9jYXRpb24gb2YgYW55IG9mIGl0J3MgcGFyZW50LWZyYW1lcyByZWdhcmRsZXNz
IG9mIGRvbWFpbi48L3A+Ci0gICAgPGg0PkRPTUFJTjwvaDQ+Ci0gICAgPGlmcmFtZSBzcmM9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lm
cmFtZS10aGF0LXBlcmZvcm1zLXBhcmVudC1uYXZpZ2F0aW9uLmh0bWwiPjwvaWZyYW1lPgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFu
Z2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmln
YXRpb24tY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjkwMDkpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC10YXJnZXRl
ZC1zdWJmcmFtZS1uYXZpZ2F0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTkgKzAsMCBAQAotVGhpcyB0ZXN0cyB0aGF0IGRvY3VtZW50cyBjYW4gbmF2aWdhdGUg
dGhlIGxvY2F0aW9uIG9mIGFueSBvZiBpdCdzIHN1Yi1mcmFtZXMgcmVnYXJkbGVzcyBvZiBkb21h
aW4uCi0KLTEyNy4wLjAuMQotCi0gIFBlcmZvcm0gVGVzdAotCi0tLS0tLS0tLQotRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKLS0tLS0tLS0tCi1sb2NhbGhvc3QKLQot
Ci0KLS0tLS0tLS0tCi1GcmFtZTogJ3RhcmdldEZyYW1lJwotLS0tLS0tLS0KLWxvY2FsaG9zdAot
Ci1QQVNTRUQ6IE5hdmlnYXRpb24gc3VjY2VlZGVkLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJh
bWUtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC10YXJnZXRlZC1zdWJm
cmFtZS1uYXZpZ2F0aW9uLWNoYW5nZS5odG1sCShyZXZpc2lvbiAyOTAwOSkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXRhcmdl
dGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
NDQgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8c3R5bGU+Ci0gICAgICAgIGlmcmFtZSB7
IHdpZHRoOiA0MDBweDsgaGVpZ2h0OiAyMDBweDt9Ci0gICAgPC9zdHlsZT4KLSAgICA8c2NyaXB0
PgotICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGxvYWRlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKLQotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQod2FpdEZvckZsYWcsIDEpOwotICAgICAgICAgICAgICAgIGZ1bmN0aW9u
IHdhaXRGb3JGbGFnKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWxheW91dFRlc3RDb250
cm9sbGVyLmdsb2JhbEZsYWcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
d2FpdEZvckZsYWcsIDEpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZ2xvYmFsRmxhZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBwZXJmb3JtVGVzdCgp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGZ1bmN0aW9uIHBlcmZvcm1UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHN1YkZy
YW1lID0gd2luZG93LmZyYW1lc1swXTsKLSAgICAgICAgICAgIHN1YkZyYW1lLmZyYW1lc1swXS5s
b2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiOwotICAgICAgICB9Ci0g
ICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+Ci0gICAgPHA+
VGhpcyB0ZXN0cyB0aGF0IGRvY3VtZW50cyBjYW4gbmF2aWdhdGUgdGhlIGxvY2F0aW9uIG9mIGFu
eSBvZiBpdCdzIHN1Yi1mcmFtZXMgcmVnYXJkbGVzcyBvZiBkb21haW4uPC9wPgotICAgIDxoND5E
T01BSU48L2g0PgotICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtd2l0aC1pbm5lci1mcmFtZS1vbi1m
b3JlaWduLWRvbWFpbi5odG1sIj48L2lmcmFtZT4KLSAgICA8YnV0dG9uIG9uY2xpY2s9InBlcmZv
cm1UZXN0KCkiPlBlcmZvcm0gVGVzdDwvYnV0dG9uPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2Vz
L2lmcmFtZS10aGF0LWFzc2lnbnMtcGFyZW50LWxvY2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2Vz
L2lmcmFtZS10aGF0LWFzc2lnbnMtcGFyZW50LWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDI5MDEw
KQkoZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9y
ZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24uaHRtbDoyOTAx
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXBhcmVudC1sb2NhdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWlu
OworICAgICAgICAgICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhlIGJ1dHRvbiBkdXJp
bmcgbWFudWVsIHJ1bnMuCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHBhcmVudC5s
b2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiOworICAgICAgICB9Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+CisgICAgPGg0
PkRPTUFJTjwvaDQ+CisgICAgPGJ1dHRvbiBvbmNsaWNrPSJwZXJmb3JtVGVzdCgpOyI+UGVyZm9y
bSBUZXN0PC9idXR0b24+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtYXNz
aWducy1wYXJlbnQtbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtYXNz
aWducy1wYXJlbnQtbG9jYXRpb24uaHRtbAkocmV2aXNpb24gMjkwMTApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRo
YXQtYXNzaWducy1wYXJlbnQtbG9jYXRpb24uaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxNCAr
NCwxNCBAQAogICAgICAgICBmdW5jdGlvbiBsb2FkZWQoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1
bWVudC5kb21haW47Ci0gICAgICAgICAgICAvLyBBbGxvdyB0aGUgdXNlciB0byBjbGljayB0aGUg
YnV0dG9uIGR1cmluZyBtYW51ZWwgcnVucy4KKyAgICAgICAgICAgIC8vIEFsbG93IHRoZSB1c2Vy
IHRvIGNsaWNrIHRoZSBidXR0b24gZHVyaW5nIG1hbnVhbCBydW5zLgogICAgICAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgICAgICAgICBwZXJmb3JtVGVz
dCgpOwogICAgICAgICB9CiAKICAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRlc3QoKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBwYXJlbnQubG9jYXRpb24gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlm
cmFtZS5odG1sIjsKKyAgICAgICAgICAgIHBhcmVudC5sb2NhdGlvbiA9ICJuYXZpZ2F0aW9uLWNo
YW5nZWQtaWZyYW1lLmh0bWwiOwogICAgICAgICB9CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvaWZyYW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtYXNzaWducy10b3AtZnJhbWVzLTAtbG9jYXRpb24uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1hc3NpZ25zLXRvcC1mcmFtZXMtMC1sb2Nh
dGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9
IGRvY3VtZW50LmRvbWFpbjsKKyAgICAgICAgICAgIC8vIEFsbG93IHRoZSB1c2VyIHRvIGNsaWNr
IHRoZSBidXR0b24gZHVyaW5nIG1hbnVhbCBydW5zLgorICAgICAgICAgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICAgICAgICBwZXJmb3JtVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRlc3QoKQorICAgICAgICB7CisgICAg
ICAgICAgICB0b3AuZnJhbWVzWzBdLmxvY2F0aW9uID0gIm5hdmlnYXRpb24tY2hhbmdlZC1pZnJh
bWUuaHRtbCI7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0ibG9hZGVkKCk7Ij4KKyAgICA8aDQ+RE9NQUlOPC9oND4KKyAgICA8YnV0dG9uIG9uY2xpY2s9
InBlcmZvcm1UZXN0KCk7Ij5QZXJmb3JtIFRlc3Q8L2J1dHRvbj4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9pZnJhbWUtdGhhdC1jYWxscy13aW5kb3ctb3Blbi1jYWxsLXRvcC10YXJnZXQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtY2FsbHMtd2luZG93LW9wZW4tY2FsbC10b3At
dGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtY2FsbHMtd2luZG93LW9w
ZW4tY2FsbC10b3AtdGFyZ2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxo
dG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0Jylb
MF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOworICAgICAgICAgICAgLy8gQWxsb3cgdGhl
IHVzZXIgdG8gY2xpY2sgdGhlIGJ1dHRvbiBkdXJpbmcgbWFudWFsIHJ1bnMuCisgICAgICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAgIHBlcmZv
cm1UZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHdpbmRvdy5vcGVuLmNhbGwodG9wLCAibmF2aWdhdGlvbi1j
aGFuZ2VkLWlmcmFtZS5odG1sIiwgInRhcmdldEZyYW1lIik7CisgICAgICAgIH0KKyAgICA8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KKyAgICA8aDQ+RE9NQUlO
PC9oND4KKyAgICA8YnV0dG9uIG9uY2xpY2s9InBlcmZvcm1UZXN0KCk7Ij5QZXJmb3JtIFRlc3Q8
L2J1dHRvbj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1jYWxscy13aW5k
b3ctb3Blbi10YXJnZXQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtY2Fs
bHMtd2luZG93LW9wZW4tdGFyZ2V0LWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1l
LXRoYXQtY2FsbHMtd2luZG93LW9wZW4tdGFyZ2V0LWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjIgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVu
Y3Rpb24gbG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOworICAgICAg
ICAgICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhlIGJ1dHRvbiBkdXJpbmcgbWFudWFs
IHJ1bnMuCisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBwZXJmb3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdpbmRvdy5vcGVuKCJuYXZp
Z2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiLCAidGFyZ2V0RnJhbWUiKTsKKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgorICAgIDxo
ND5ET01BSU48L2g0PgorICAgIDxidXR0b24gb25jbGljaz0icGVyZm9ybVRlc3QoKTsiPlBlcmZv
cm0gVGVzdDwvYnV0dG9uPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS10aGF0LXBl
cmZvcm1zLXBhcmVudC1uYXZpZ2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS10aGF0
LXBlcmZvcm1zLXBhcmVudC1uYXZpZ2F0aW9uLmh0bWwJKHJldmlzaW9uIDI5MDEwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lm
cmFtZS10aGF0LXBlcmZvcm1zLXBhcmVudC1uYXZpZ2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0PgotICAgICAgICBm
dW5jdGlvbiBsb2FkZWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47Ci0gICAg
ICAgICAgICAvLyBBbGxvdyB0aGUgdXNlciB0byBjbGljayB0aGUgYnV0dG9uIGR1cmluZyBtYW51
ZWwgcnVucy4KLSAgICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0g
ICAgICAgICAgICAgICAgcGVyZm9ybVRlc3QoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0
aW9uIHBlcmZvcm1UZXN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcGFyZW50LmxvY2F0aW9u
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3Vy
Y2VzL25hdmlnYXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbCI7Ci0gICAgICAgIH0KLSAgICA8L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KLSAgICA8aDQ+RE9NQUlO
PC9oND4KLSAgICA8YnV0dG9uIG9uY2xpY2s9InBlcmZvcm1UZXN0KCk7Ij5QZXJmb3JtIFRlc3Q8
L2J1dHRvbj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1zdWJtaXRzLWZv
cm0tdG8tdGFyZ2V0LWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS10aGF0LXN1Ym1p
dHMtZm9ybS10by10YXJnZXQtZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhh
dC1zdWJtaXRzLWZvcm0tdG8tdGFyZ2V0LWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24g
bG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9jdW1lbnQuZG9tYWluOworICAgICAgICAgICAg
Ly8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhlIGJ1dHRvbiBkdXJpbmcgbWFudWFsIHJ1bnMu
CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
ICAgICAgIHBlcmZvcm1UZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBwZXJm
b3JtVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdmb3JtJylbMF0uc3VibWl0KCk7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KKyAgICA8aDQ+RE9NQUlOPC9oND4KKyAg
ICA8YnV0dG9uIG9uY2xpY2s9InBlcmZvcm1UZXN0KCk7Ij5QZXJmb3JtIFRlc3Q8L2J1dHRvbj4K
KyAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0ibmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFt
ZS5odG1sIiB0YXJnZXQ9InRhcmdldEZyYW1lIj4KKyAgICAgICAgVGhpcyB0ZXh0IGlzIGluIGEg
PGNvZGU+Jmx0O2Zvcm0mZ3Q7PC9jb2RlPi4KKyAgICA8L2Zvcm0+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9y
ZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9u
YXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwJKHJldmlzaW9uIDI5MDEwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25hdmln
YXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCwxMyArNCwxOCBA
QAogICAgICAgICBmdW5jdGlvbiBmaXJlU2VudGluZWwoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBkb2N1
bWVudC5kb21haW47Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodG9wID09PSBzZWxmKSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0iZmlyZVNlbnRpbmVsKCk7
Ij4KICAgICA8aDQ+RE9NQUlOPC9oND4KLSAgICA8cD5QQVNTRUQ6IE5hdmlnYXRpb24gc3VjY2Vl
ZGVkLjwvcD4KKyAgICA8cD5OYXZpZ2F0aW9uIHN1Y2NlZWRlZC48L3A+CiA8L2JvZHk+CiA8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18459</attachid>
            <date>2008-01-15 09:55:09 -0800</date>
            <delta_ts>2008-06-05 04:36:14 -0700</delta_ts>
            <desc>Mozilla frame navigation tests</desc>
            <filename>mozilla-tests.txt</filename>
            <type>text/plain</type>
            <size>47619</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">PyBvYmotZmYKSW5kZXg6IGRvY3NoZWxsL2Jhc2UvbnNEb2NTaGVsbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2c3Jvb3QvbW96aWxsYS9kb2NzaGVsbC9iYXNlL25zRG9jU2hlbGwuY3BwLHYK
cmV0cmlldmluZyByZXZpc2lvbiAxLjg3OApkaWZmIC11IC1wIC0xIC0yIC1yMS44NzggbnNEb2NT
aGVsbC5jcHAKLS0tIGRvY3NoZWxsL2Jhc2UvbnNEb2NTaGVsbC5jcHAJNSBKYW4gMjAwOCAxMzo0
MDo0OSAtMDAwMAkxLjg3OAorKysgZG9jc2hlbGwvYmFzZS9uc0RvY1NoZWxsLmNwcAkxMSBKYW4g
MjAwOCAwMjozMDoyMyAtMDAwMApAQCAtMTg5NCw2NiArMTg5NCw2MSBAQCBuc0RvY1NoZWxsOjpD
YW5BY2Nlc3NJdGVtKG5zSURvY1NoZWxsVHJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBS
Qm9vbCBhQ29uc2lkZXJPcGVuZXIpCiB7CiAgICAgTlNfUFJFQ09ORElUSU9OKGFUYXJnZXRJdGVt
LCAiTXVzdCBoYXZlIHRhcmdldCBpdGVtISIpOwogCiAgICAgaWYgKCFnVmFsaWRhdGVPcmlnaW4g
fHwgIWFBY2Nlc3NpbmdJdGVtKSB7CiAgICAgICAgIC8vIEdvb2QgdG8gZ28KICAgICAgICAgcmV0
dXJuIFBSX1RSVUU7CiAgICAgfQogCiAgICAgLy8gWFhYYnogc2hvdWxkIHdlIGNhcmUgaWYgYUFj
Y2Vzc2luZ0l0ZW0gb3IgdGhlIGRvY3VtZW50IHRoZXJlaW4gaXMKICAgICAvLyBjaHJvbWU/ICBT
aG91bGQgdGhvc2UgZ2V0IGV4dHJhIHByaXZpbGVnZXM/CiAKKyAgICAvLyBGb3IgaGlzdG9yaWNh
bCBjb250ZXh0LCBzZWU6CisgICAgLy8gCisgICAgLy8gQnVnIDEzODcxOiAgUHJldmVudCBmcmFt
ZXNldCBzcG9vZmluZworICAgIC8vIEJ1ZyAxMDM2Mzg6IFRhcmdldHMgd2l0aCBzYW1lIG5hbWUg
aW4gZGlmZmVyZW50IHdpbmRvd3Mgb3BlbiBpbiB3cm9uZworICAgIC8vICAgICAgICAgICAgIHdp
bmRvdyB3aXRoIGphdmFzY3JpcHQKKwogICAgIC8vIE5vdyBkbyBhIHNlY3VyaXR5IGNoZWNrCi0g
ICAgLy8gQnVnIDEzODcxOiBQcmV2ZW50IGZyYW1lc2V0IHNwb29maW5nCi0gICAgLy8gICAgIFNl
ZSBCdWdTcGxhdCAzMzYxNzAsIDMzODczNyBhbmQgWFBfRmluZE5hbWVkQ29udGV4dEluTGlzdCBp
bgotICAgIC8vICAgICB0aGUgY2xhc3NpYyBjb2RlYmFzZQotICAgIC8vICAgICBOYXYncyBiZWhh
dmlvdXIgd2FzOgotICAgIC8vICAgICAgICAgLSBwcmVmIGNvbnRyb2xsZWQ6ICJicm93c2VyLmZy
YW1lLnZhbGlkYXRlX29yaWdpbiIgCi0gICAgLy8gICAgICAgICAgIChnVmFsaWRhdGVPcmlnaW4p
Ci0gICAgLy8gICAgICAgICAtIGFsbG93IGxvYWQgaWYgaG9zdCBvZiB0YXJnZXQgb3IgdGFyZ2V0
J3MgcGFyZW50IGlzIHNhbWUKLSAgICAvLyAgICAgICAgICAgYXMgaG9zdCBvZiBvcmlnaW4KLSAg
ICAvLyAgICAgICAgIC0gYWxsb3cgbG9hZCBpZiB0YXJnZXQgaXMgYSB0b3AgbGV2ZWwgd2luZG93
Ci0gICAgCi0gICAgLy8gICAgIFdlIGFyZSBnb2luZyB0byBiZSBhIGxpdHRsZSBtb3JlIHJlc3Ry
aWN0aXZlLCB3aXRoIHRoZQotICAgIC8vICAgICBmb2xsb3dpbmcgYWxnb3JpdGhtOgotICAgIC8v
ICAgICAgICAgLSBwcmVmIGNvbnRyb2xsZWQgaW4gdGhlIHNhbWUgd2F5Ci0gICAgLy8gICAgICAg
ICAtIGFsbG93IGFjY2VzcyBpZiB0aGUgdHdvIHRyZWVpdGVtcyBhcmUgaW4gdGhlIHNhbWUgdHJl
ZQotICAgIC8vICAgICAgICAgLSBhbGxvdyBhY2Nlc3MgaWYgdGhlIGFUYXJnZXRJdGVtIG9yIG9u
ZSBvZiBpdHMgYW5jZXN0b3JzCi0gICAgLy8gICAgICAgICAgIGhhcyB0aGUgc2FtZSBvcmlnaW4g
YXMgYUFjY2Vzc2luZ0l0ZW0KLSAgICAvLyAgICAgICAgIC0gYWxsb3cgYWNjZXNzIGlmIHRoZSB0
YXJnZXQgaXMgYSB0b3BsZXZlbCB3aW5kb3cgYW5kIHdlIGNhbgotICAgIC8vICAgICAgICAgICBh
Y2Nlc3MgaXRzIG9wZW5lci4gIE5vdGUgdGhhdCB3ZSBvbmx5IGFsbG93IG9uZSBsZXZlbCBvZgot
ICAgIC8vICAgICAgICAgICByZWN1cnNpb24gdGhlcmUuCisgICAgLy8KKyAgICAvLyBBbGxvdyBu
YXZpZ2F0aW9uIGlmCisgICAgLy8gIDEpIGFBY2Nlc3NpbmdJdGVtIGNhbiBzY3JpcHQgYVRhcmdl
dEl0ZW0gb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMgaW4KKyAgICAvLyAgICAgdGhlIGZyYW1lIGhp
ZXJhcmNoeSBvcgorICAgIC8vICAyKSBhVGFyZ2V0SXRlbSBpcyBhIHRvcC1sZXZlbCBmcmFtZSBh
bmQgd2UgYXJlIGl0cyBkZXNjZW5kYW50IG9yIGNhbgorICAgIC8vICAgICBhY2Nlc3MgaXRzIG9w
ZW5lci4KIAotICAgIG5zQ09NUHRyPG5zSURvY1NoZWxsVHJlZUl0ZW0+IHRhcmdldFJvb3Q7Ci0g
ICAgYVRhcmdldEl0ZW0tPkdldFNhbWVUeXBlUm9vdFRyZWVJdGVtKGdldHRlcl9BZGRSZWZzKHRh
cmdldFJvb3QpKTsKKyAgICBpZiAoYVRhcmdldEl0ZW0gPT0gYUFjY2Vzc2luZ0l0ZW0pCisgICAg
ICAgIHJldHVybiBQUl9UUlVFOyAgLy8gQSBmcmFtZSBpcyBhbGxvd2VkIHRvIG5hdmlnYXRlIGl0
c2VsZi4KIAogICAgIG5zQ09NUHRyPG5zSURvY1NoZWxsVHJlZUl0ZW0+IGFjY2Vzc2luZ1Jvb3Q7
CiAgICAgYUFjY2Vzc2luZ0l0ZW0tPkdldFNhbWVUeXBlUm9vdFRyZWVJdGVtKGdldHRlcl9BZGRS
ZWZzKGFjY2Vzc2luZ1Jvb3QpKTsKIAotICAgIGlmICh0YXJnZXRSb290ID09IGFjY2Vzc2luZ1Jv
b3QpIHsKLSAgICAgICAgcmV0dXJuIFBSX1RSVUU7Ci0gICAgfQorICAgIGlmIChhVGFyZ2V0SXRl
bSA9PSBhY2Nlc3NpbmdSb290KQorICAgICAgICByZXR1cm4gUFJfVFJVRTsgIC8vIEEgZnJhbWUg
Y2FuIG5hdmlnYXRlIGl0cyByb290LgogCisgICAgLy8gQ2hlY2sgaWYgYUFjY2Vzc2luZ0l0ZW0g
Y2FuIG5hdmlnYXRlIG9uZSBvZiBhVGFyZ2V0SXRlbSdzIGFuY2VzdG9ycy4KICAgICBuc0NPTVB0
cjxuc0lEb2NTaGVsbFRyZWVJdGVtPiB0YXJnZXQgPSBhVGFyZ2V0SXRlbTsKICAgICBkbyB7Ci0g
ICAgICAgIGlmIChWYWxpZGF0ZU9yaWdpbihhQWNjZXNzaW5nSXRlbSwgdGFyZ2V0KSkgeworICAg
ICAgICBpZiAoVmFsaWRhdGVPcmlnaW4oYUFjY2Vzc2luZ0l0ZW0sIHRhcmdldCkpCiAgICAgICAg
ICAgICByZXR1cm4gUFJfVFJVRTsKLSAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
bnNDT01QdHI8bnNJRG9jU2hlbGxUcmVlSXRlbT4gcGFyZW50OwogICAgICAgICB0YXJnZXQtPkdl
dFNhbWVUeXBlUGFyZW50KGdldHRlcl9BZGRSZWZzKHBhcmVudCkpOwogICAgICAgICBwYXJlbnQu
c3dhcCh0YXJnZXQpOwogICAgIH0gd2hpbGUgKHRhcmdldCk7CiAKKyAgICBuc0NPTVB0cjxuc0lE
b2NTaGVsbFRyZWVJdGVtPiB0YXJnZXRSb290OworICAgIGFUYXJnZXRJdGVtLT5HZXRTYW1lVHlw
ZVJvb3RUcmVlSXRlbShnZXR0ZXJfQWRkUmVmcyh0YXJnZXRSb290KSk7CisKICAgICBpZiAoYVRh
cmdldEl0ZW0gIT0gdGFyZ2V0Um9vdCkgewogICAgICAgICAvLyB0YXJnZXQgaXMgYSBzdWJmcmFt
ZSwgbm90IGluIGFjY2Vzc29yJ3MgZnJhbWUgaGllcmFyY2h5LCBhbmQgYWxsIGl0cwogICAgICAg
ICAvLyBhbmNlc3RvcnMgaGF2ZSBvcmlnaW5zIGRpZmZlcmVudCBmcm9tIHRoYXQgb2YgdGhlIGFj
Y2Vzc29yLiBEb24ndAogICAgICAgICAvLyBhbGxvdyBhY2Nlc3MuCiAgICAgICAgIHJldHVybiBQ
Ul9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoIWFDb25zaWRlck9wZW5lcikgewogICAgICAgICAv
LyBBbGwgZG9uZSBoZXJlCiAgICAgICAgIHJldHVybiBQUl9GQUxTRTsKICAgICB9CiAKQEAgLTY0
MTUsNjggKzY0MTAsMjQgQEAgbnNEb2NTaGVsbDo6Q2hlY2tMb2FkaW5nUGVybWlzc2lvbnMoKQog
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNhbWVPcmlnaW47CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIHNhbWVPcmlnaW4gPSBOU19FUlJPUl9ET01fUFJPUF9BQ0NFU1NfREVOSUVEOwog
ICAgICAgICB9CiAKICAgICAgICAgbnNDT01QdHI8bnNJRG9jU2hlbGxUcmVlSXRlbT4gdG1wOwog
ICAgICAgICBpdGVtLT5HZXRTYW1lVHlwZVBhcmVudChnZXR0ZXJfQWRkUmVmcyh0bXApKTsKICAg
ICAgICAgaXRlbS5zd2FwKHRtcCk7CiAgICAgfSB3aGlsZSAoaXRlbSk7CiAKLSAgICAvLyBUaGUg
Y2FsbGVyIGlzIG5vdCBmcm9tIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGlzIGl0ZW0sIG9yIGFueSBp
ZgotICAgIC8vIHRoaXMgaXRlbXMgYW5jZXN0b3JzLiBPbmx5IHBlcm1pdCBsb2FkaW5nIGNvbnRl
bnQgaWYgYm90aCBhcmUKLSAgICAvLyBwYXJ0IG9mIHRoZSBzYW1lIHdpbmRvdywgYXNzdW1pbmcg
d2UgY2FuIGZpbmQgdGhlIHdpbmRvdyBvZiB0aGUKLSAgICAvLyBjYWxsZXIuCi0KLSAgICBuc0NP
TVB0cjxuc0lKU0NvbnRleHRTdGFjaz4gc3RhY2sgPQotICAgICAgICBkb19HZXRTZXJ2aWNlKCJA
bW96aWxsYS5vcmcvanMveHBjL0NvbnRleHRTdGFjazsxIik7Ci0gICAgaWYgKCFzdGFjaykgewot
ICAgICAgICAvLyBObyBjb250ZXh0IHN0YWNrIGF2YWlsYWJsZS4gU2hvdWxkIG5ldmVyIGhhcHBl
biwgYnV0IGluCi0gICAgICAgIC8vIGNhc2UgaXQgZG9lcywgcmV0dXJuIHRoZSBzYW1lT3JpZ2lu
IGVycm9yIGZyb20gdGhlIHNlY3VyaXR5Ci0gICAgICAgIC8vIGNoZWNrIGFib3ZlLgotCi0gICAg
ICAgIHJldHVybiBzYW1lT3JpZ2luOwotICAgIH0KLQotICAgIEpTQ29udGV4dCAqY3ggPSBuc251
bGw7Ci0gICAgc3RhY2stPlBlZWsoJmN4KTsKLQotICAgIGlmICghY3gpIHsKLSAgICAgICAgLy8g
Tm8gY2FsbGVyIGRvY3NoZWxsIHJlYWNoYWJsZSwgcmV0dXJuIHRoZSBzYW1lT3JpZ2luIGVycm9y
Ci0gICAgICAgIC8vIGZyb20gdGhlIHNlY3VyaXR5IGNoZWNrIGFib3ZlLgotCi0gICAgICAgIHJl
dHVybiBzYW1lT3JpZ2luOwotICAgIH0KLQotICAgIG5zSVNjcmlwdENvbnRleHQgKmN1cnJlbnRD
WCA9IEdldFNjcmlwdENvbnRleHRGcm9tSlNDb250ZXh0KGN4KTsKLSAgICBuc0NPTVB0cjxuc0lE
b2NTaGVsbFRyZWVJdGVtPiBjYWxsZXJUcmVlSXRlbTsKLSAgICBuc0NPTVB0cjxuc1BJRE9NV2lu
ZG93PiB3aW47Ci0gICAgaWYgKGN1cnJlbnRDWCAmJgotICAgICAgICAod2luID0gZG9fUXVlcnlJ
bnRlcmZhY2UoY3VycmVudENYLT5HZXRHbG9iYWxPYmplY3QoKSkpICYmCi0gICAgICAgIChjYWxs
ZXJUcmVlSXRlbSA9IGRvX1F1ZXJ5SW50ZXJmYWNlKHdpbi0+R2V0RG9jU2hlbGwoKSkpKSB7Ci0g
ICAgICAgIG5zQ09NUHRyPG5zSURvY1NoZWxsVHJlZUl0ZW0+IGNhbGxlclJvb3Q7Ci0gICAgICAg
IGNhbGxlclRyZWVJdGVtLT5HZXRTYW1lVHlwZVJvb3RUcmVlSXRlbShnZXR0ZXJfQWRkUmVmcyhj
YWxsZXJSb290KSk7Ci0KLSAgICAgICAgbnNDT01QdHI8bnNJRG9jU2hlbGxUcmVlSXRlbT4gb3Vy
Um9vdDsKLSAgICAgICAgR2V0U2FtZVR5cGVSb290VHJlZUl0ZW0oZ2V0dGVyX0FkZFJlZnMob3Vy
Um9vdCkpOwotCi0gICAgICAgIGlmIChvdXJSb290ID09IGNhbGxlclJvb3QpIHsKLSAgICAgICAg
ICAgIC8vIFRoZSBydW5uaW5nIEpTIGlzIGluIHRoZSBzYW1lIHdpbmRvdyBhcyB0aGUgdGFyZ2V0
Ci0gICAgICAgICAgICAvLyBmcmFtZSwgcGVybWl0IGxvYWQuCi0gICAgICAgICAgICBzYW1lT3Jp
Z2luID0gTlNfT0s7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4gc2FtZU9yaWdpbjsK
IH0KIAogLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLy8gbnNEb2NTaGVsbDogU2l0ZSBMb2FkaW5n
CiAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqICAgCiBOU19JTUVUSE9ESU1QCiBuc0RvY1NoZWxsOjpJ
bnRlcm5hbExvYWQobnNJVVJJICogYVVSSSwKICAgICAgICAgICAgICAgICAgICAgICAgICBuc0lV
UkkgKiBhUmVmZXJyZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJU3VwcG9ydHMgKiBh
T3duZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUFJVaW50MzIgYUZsYWdzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5pY2hhciAqYVdpbmRvd1RhcmdldCwKSW5kZXg6
IGRvY3NoZWxsL3Rlc3QvTWFrZWZpbGUuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3Qv
bW96aWxsYS9kb2NzaGVsbC90ZXN0L01ha2VmaWxlLmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAx
LjkKZGlmZiAtdSAtcCAtMSAtMiAtcjEuOSBNYWtlZmlsZS5pbgotLS0gZG9jc2hlbGwvdGVzdC9N
YWtlZmlsZS5pbgkyNyBOb3YgMjAwNyAwNTozMjoyNSAtMDAwMAkxLjkKKysrIGRvY3NoZWxsL3Rl
c3QvTWFrZWZpbGUuaW4JMTEgSmFuIDIwMDggMDI6MzA6NDcgLTAwMDAKQEAgLTM2LDI0ICszNiwy
NSBAQAogIyAqKioqKiBFTkQgTElDRU5TRSBCTE9DSyAqKioqKgogCiBERVBUSAkJPSAuLi8uLgog
dG9wc3JjZGlyCT0gQHRvcF9zcmNkaXJACiBzcmNkaXIJCT0gQHNyY2RpckAKIFZQQVRICQk9IEBz
cmNkaXJACiByZWxhdGl2ZXNyY2RpciAgPSBkb2NzaGVsbC90ZXN0CiAKIE1PRFVMRSA9IHRlc3Rf
ZG9jc2hlbGwKIAogRElSUyArPSBjaHJvbWUgXAogCWJyb3dzZXIgXAorCW5hdmlnYXRpb24gXAog
CSQoTlVMTCkKIAogWFBDU0hFTExfVEVTVFMgPSB1bml0CiAKIGluY2x1ZGUgJChERVBUSCkvY29u
ZmlnL2F1dG9jb25mLm1rCiBpbmNsdWRlICQodG9wc3JjZGlyKS9jb25maWcvcnVsZXMubWsKIAog
X1RFU1RfRklMRVMgPSBcCiAJCXRlc3RfYnVnMzQ0ODYxLmh0bWwgXAogCQl0ZXN0X2J1ZzM2OTgx
NC5odG1sIFwKIAkJYnVnMzY5ODE0LnppcCAgICAgICBcCiAJCXRlc3RfYnVnMzg0MDE0Lmh0bWwg
XApJbmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL01ha2VmaWxlLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
UkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9NYWtlZmlsZS5pbgpkaWZmIC1OIGRv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9NYWtlZmlsZS5pbgotLS0gL2Rldi9udWxsCTEgSmFuIDE5
NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9NYWtlZmlsZS5p
bgkxMSBKYW4gMjAwOCAwMjozMDo0NyAtMDAwMApAQCAtMCwwICsxLDcwIEBACisjCisjICoqKioq
IEJFR0lOIExJQ0VOU0UgQkxPQ0sgKioqKiogIyBWZXJzaW9uOiBNUEwgMS4xL0dQTCAyLjAvTEdQ
TCAyLjEKKyMKKyMgVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUg
TW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uCisjIDEuMSAodGhlICJMaWNlbnNlIik7IHlv
dSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAorIyB0aGUg
TGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjIGh0dHA6
Ly93d3cubW96aWxsYS5vcmcvTVBMLworIworIyBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0
aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIGJhc2lzLAorIyBXSVRIT1VU
IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhl
IExpY2Vuc2UKKyMgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFu
ZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKKyMgTGljZW5zZS4KKyMgIyBUaGUgT3JpZ2luYWwgQ29k
ZSBpcyBtb3ppbGxhLm9yZyBjb2RlLgorIworIyBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhl
IE9yaWdpbmFsIENvZGUgaXMKKyMgTW96aWxsYSBGb3VuZGF0aW9uLgorIyBQb3J0aW9ucyBjcmVh
dGVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAyMDA3CisjIHRo
ZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMKKyMgQ29udHJpYnV0
b3Iocyk6CisjCisjIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5
IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCisjIGVpdGhlciBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgVmVyc2lvbiAyIG9yIGxhdGVyICh0aGUgIkdQTCIpLAorIyBvciB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0
aGUgIkxHUEwiKSwKKyMgaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9y
IHRoZSBMR1BMIGFyZSBhcHBsaWNhYmxlIGluc3RlYWQKKyMgb2YgdGhvc2UgYWJvdmUuIElmIHlv
dSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkKKyMg
dW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRv
IGFsbG93IG90aGVycyB0bworIyB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIE1QTCwgaW5kaWNhdGUgeW91cgorIyBkZWNpc2lvbiBieSBkZWxldGlu
ZyB0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZQor
IyBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yIHRoZSBMR1BMLiBJ
ZiB5b3UgZG8gbm90IGRlbGV0ZQorIyB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQg
bWF5IHVzZSB5b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyCisjIHRoZSB0ZXJtcyBvZiBh
bnkgb25lIG9mIHRoZSBNUEwsIHRoZSBHUEwgb3IgdGhlIExHUEwuCisjCisjICoqKioqIEVORCBM
SUNFTlNFIEJMT0NLICoqKioqCisKK0RFUFRICQk9IC4uLy4uLy4uCit0b3BzcmNkaXIJPSBAdG9w
X3NyY2RpckAKK3NyY2RpcgkJPSBAc3JjZGlyQAorVlBBVEgJCT0gQHNyY2RpckAKK3JlbGF0aXZl
c3JjZGlyICA9IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbgorCitNT0RVTEUgPSB0ZXN0X2RvY3No
ZWxsCisKK0RJUlMgKz0gJChOVUxMKQorCitpbmNsdWRlICQoREVQVEgpL2NvbmZpZy9hdXRvY29u
Zi5taworaW5jbHVkZSAkKHRvcHNyY2RpcikvY29uZmlnL3J1bGVzLm1rCisKK19URVNUX0ZJTEVT
ID0gXAorCQl0ZXN0X2J1ZzEzODcxLmh0bWwgXAorCQl0ZXN0X2J1ZzI3MDQxNC5odG1sIFwKKwkJ
dGVzdF9idWcyNzg5MTYuaHRtbCBcCisJCXRlc3RfYnVnMjc4MTQzLmh0bWwgXAorCQl0ZXN0X2No
aWxkLmh0bWwgXAorCQl0ZXN0X2dyYW5kY2hpbGQuaHRtbCBcCisJCXRlc3Rfc2libGluZy1vZmYt
ZG9tYWluLmh0bWwgXAorCQl0ZXN0X3NpYmxpbmctbWF0Y2hpbmctcGFyZW50Lmh0bWwgXAorCQl0
ZXN0X29wZW5lci5odG1sIFwKKwkJdGVzdF9ub3Qtb3BlbmVyLmh0bWwgXAorCQl0ZXN0X3Jlc2Vy
dmVkLmh0bWwgXAorCQlOYXZpZ2F0aW9uVXRpbHMuanMgXAorCQluYXZpZ2F0ZS5odG1sIFwKKwkJ
b3Blbi5odG1sIFwKKwkJaWZyYW1lLmh0bWwgXAorCQlwYXJlbnQuaHRtbCBcCisJCWJsYW5rLmh0
bWwgXAorCQkkKE5VTEwpCisKK2xpYnM6OiAkKF9URVNUX0ZJTEVTKQorCSQoSU5TVEFMTCkgJChm
b3JlYWNoIGYsJF4sIiRmIikgJChERVBUSCkvX3Rlc3RzL3Rlc3RpbmcvbW9jaGl0ZXN0L3Rlc3Rz
LyQocmVsYXRpdmVzcmNkaXIpCkluZGV4OiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vTmF2aWdh
dGlvblV0aWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlv
bi9OYXZpZ2F0aW9uVXRpbHMuanMKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vTmF2
aWdhdGlvblV0aWxzLmpzCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor
KysgZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL05hdmlnYXRpb25VdGlscy5qcwkxMSBKYW4gMjAw
OCAwMjozMDo0NyAtMDAwMApAQCAtMCwwICsxLDIyNiBAQAorLyogKioqKiogQkVHSU4gTElDRU5T
RSBCTE9DSyAqKioqKgorICogVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xHUEwgMi4xCisgKgor
ICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQ
dWJsaWMgTGljZW5zZSBWZXJzaW9uCisgKiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5v
dCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKKyAqIHRoZSBMaWNlbnNl
LiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cu
bW96aWxsYS5vcmcvTVBMLworICoKKyAqIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBM
aWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCisgKiBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExp
Y2Vuc2UKKyAqIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHJpZ2h0cyBhbmQg
bGltaXRhdGlvbnMgdW5kZXIgdGhlCisgKiBMaWNlbnNlLgorICoKKyAqIFRoZSBPcmlnaW5hbCBD
b2RlIGlzIE5hdmlnYXRpb25VdGlscy5qcworICoKKyAqIFRoZSBJbml0aWFsIERldmVsb3BlciBv
ZiB0aGUgT3JpZ2luYWwgQ29kZSBpcworICogTW96aWxsYSBGb3VuZGF0aW9uCisgKiBQb3J0aW9u
cyBjcmVhdGVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhcmUgQ29weXJpZ2h0IChDKSAyMDA4
CisgKiB0aGUgSW5pdGlhbCBEZXZlbG9wZXIuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
Q29udHJpYnV0b3Iocyk6CisgKiAgIEFkYW0gQmFydGggPGhrOTU2NUBnbWFpbC5jb20+CisgKiAg
IENvbGxpbiBKYWNrc29uIDxtb3ppbGxhQGNvbGxpbmphY2tzb24uY29tPgorICoKKyAqIEFsdGVy
bmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhl
IHRlcm1zIG9mCisgKiBlaXRoZXIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZl
cnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwKKyAqIG9yIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgb3IgbGF0ZXIgKHRoZSAiTEdQTCIpLAorICog
aW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBvZiB0aGUgR1BMIG9yIHRoZSBMR1BMIGFyZSBh
cHBsaWNhYmxlIGluc3RlYWQKKyAqIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ugd2lzaCB0byBhbGxv
dyB1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CisgKiB1bmRlciB0aGUgdGVy
bXMgb2YgZWl0aGVyIHRoZSBHUEwgb3IgdGhlIExHUEwsIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJz
IHRvCisgKiB1c2UgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIE1QTCwgaW5kaWNhdGUgeW91cgorICogZGVjaXNpb24gYnkgZGVsZXRpbmcgdGhlIHByb3Zp
c2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UKKyAqIGFuZCBvdGhl
ciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBHUEwgb3IgdGhlIExHUEwuIElmIHlvdSBkbyBu
b3QgZGVsZXRlCisgKiB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5
b3VyIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyCisgKiB0aGUgdGVybXMgb2YgYW55IG9uZSBv
ZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgorICoKKyAqICoqKioqIEVORCBMSUNFTlNF
IEJMT0NLICoqKioqICovCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFV0aWxpdGllcyBm
b3IgbmF2aWdhdGlvbiB0ZXN0cworLy8gCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwordmFyIGJvZHkg
PSAiVGhpcyBmcmFtZSB3YXMgbmF2aWdhdGVkLiI7Cit2YXIgdGFyZ2V0X3VybCA9ICJkYXRhOnRl
eHQvaHRtbCw8aHRtbD48Ym9keT4iICsgYm9keSArICI8L2JvZHk+PC9odG1sPiI7CisKKy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLworLy8gRnVuY3Rpb25zIHRoYXQgbmF2aWdhdGUgZnJhbWVzCisvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KKworZnVuY3Rpb24gbmF2aWdhdGVCeUxvY2F0aW9uKHduZCkgeworICB0cnkg
eworICAgIHduZC5sb2NhdGlvbiA9IHRhcmdldF91cmw7CisgIH0gY2F0Y2goZXgpIHsKKyAgICAv
LyBXZSBuZWVkIHRvIGtlZXAgb3VyIGZpbmlzaGVkIGZyYW1lcyBjb3VudCBjb25zaXN0ZW50Lgor
ICAgIC8vIE9kZGx5LCB0aGlzIGVuZHMgdXAgc2ltdWxhdGluZyB0aGUgYmVoYXZpb3Igb2YgSUU3
LgorICAgIHdpbmRvdy5vcGVuKHRhcmdldF91cmwsICJfYmxhbmsiKTsKKyAgfQorfQorCitmdW5j
dGlvbiBuYXZpZ2F0ZUJ5T3BlbihuYW1lKSB7CisgIHdpbmRvdy5vcGVuKHRhcmdldF91cmwsIG5h
bWUpOworfQorCitmdW5jdGlvbiBuYXZpZ2F0ZUJ5Rm9ybShuYW1lKSB7CisgIHZhciBmb3JtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpOworICBmb3JtLmFjdGlvbiA9IHRhcmdldF91
cmw7CisgIGZvcm0ubWV0aG9kID0gIlBPU1QiOworICBmb3JtLnRhcmdldCA9IG5hbWU7IGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZm9ybSk7CisgIGZvcm0uc3VibWl0KCk7Cit9CisKK3ZhciBo
eXBlcmxpbmtfY291bnQgPSAwOworCitmdW5jdGlvbiBuYXZpZ2F0ZUJ5SHlwZXJsaW5rKG5hbWUp
IHsKKyAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisgIGxpbmsuaHJl
ZiA9IHRhcmdldF91cmw7CisgIGxpbmsudGFyZ2V0ID0gbmFtZTsKKyAgbGluay5pZCA9ICJuYXZp
Z2F0aW9uX2h5cGVybGlua18iICsgaHlwZXJsaW5rX2NvdW50Kys7CisgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQobGluayk7CisgIHNlbmRNb3VzZUV2ZW50KHt0eXBlOiJjbGljayJ9LCBsaW5r
LmlkKTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBGdW5jdGlvbnMgdGhhdCBjYWxsIGlu
dG8gTW9jaGl0ZXN0IGZyYW1ld29yaworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2Z1bmN0aW9uIGlz
TmF2aWdhdGVkKHduZCwgbWVzc2FnZSkgeworICB2YXIgcmVzdWx0ID0gbnVsbDsKKyAgdHJ5IHsK
KyAgICByZXN1bHQgPSB3bmQuZG9jdW1lbnQuYm9keS5pbm5lckhUTUw7CisgIH0gY2F0Y2goZXgp
IHsKKyAgICByZXN1bHQgPSBleDsKKyAgfQorICBpcyhyZXN1bHQsIGJvZHksIG1lc3NhZ2UpOwor
fQorCitmdW5jdGlvbiBpc0JsYW5rKHduZCwgbWVzc2FnZSkgeworICB2YXIgcmVzdWx0ID0gbnVs
bDsKKyAgdHJ5IHsKKyAgICByZXN1bHQgPSB3bmQuZG9jdW1lbnQuYm9keS5pbm5lckhUTUw7Cisg
IH0gY2F0Y2goZXgpIHsKKyAgICByZXN1bHQgPSBleDsKKyAgfQorICBpcyhyZXN1bHQsICJUaGlz
IGlzIGEgYmxhbmsgZG9jdW1lbnQuIiwgbWVzc2FnZSk7Cit9CisKK2Z1bmN0aW9uIGlzQWNjZXNz
aWJsZSh3bmQsIG1lc3NhZ2UpIHsKKyAgdHJ5IHsKKyAgICB3bmQuZG9jdW1lbnQuYm9keS5pbm5l
ckhUTUw7CisgICAgb2sodHJ1ZSwgbWVzc2FnZSk7CisgIH0gY2F0Y2goZXgpIHsKKyAgICBvayhm
YWxzZSwgbWVzc2FnZSk7CisgIH0KK30KKworZnVuY3Rpb24gaXNJbmFjY2Vzc2libGUod25kLCBt
ZXNzYWdlKSB7CisgIHRyeSB7CisgICAgd25kLmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MOworICAg
IG9rKGZhbHNlLCBtZXNzYWdlKTsKKyAgfSBjYXRjaChleCkgeworICAgIG9rKHRydWUsIG1lc3Nh
Z2UpOworICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gRnVuY3Rpb25zIHRoYXQgcmVx
dWlyZSBVbml2ZXJzYWxYUENvbm5lY3QgcHJpdmlsZWdlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKwor
ZnVuY3Rpb24geHBjR2V0RnJhbWVzQnlOYW1lKG5hbWUpIHsKKyAgbmV0c2NhcGUuc2VjdXJpdHku
UHJpdmlsZWdlTWFuYWdlci5lbmFibGVQcml2aWxlZ2UoIlVuaXZlcnNhbFhQQ29ubmVjdCIpOwor
ICB2YXIgd20gPSBDb21wb25lbnRzLmNsYXNzZXNbIkBtb3ppbGxhLm9yZy9hcHBzaGVsbC93aW5k
b3ctbWVkaWF0b3I7MSJdCisgICAgICAgICAgICAgICAgICAgICAuZ2V0U2VydmljZShDb21wb25l
bnRzLmludGVyZmFjZXMubnNJV2luZG93TWVkaWF0b3IpOworICB2YXIgZW51bWVyYXRvciA9IHdt
LmdldEVudW1lcmF0b3IoIm5hdmlnYXRvcjpicm93c2VyIik7CisKKyAgdmFyIHJlc3VsdHMgPSBb
XTsKKworICB3aGlsZSAoZW51bWVyYXRvci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgIHZhciB3
aW4gPSBlbnVtZXJhdG9yLmdldE5leHQoKTsKKyAgICB2YXIgdGFicyA9IHdpbi5nQnJvd3Nlci5i
cm93c2VyczsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7IGkrKykgewor
ICAgICAgdmFyIGRvbXdpbmRvdyA9IHRhYnNbaV0uZG9jU2hlbGwuZG9jdW1lbnQuZGVmYXVsdFZp
ZXc7CisKKyAgICAgIGlmIChkb213aW5kb3cubmFtZSA9PSBuYW1lKQorICAgICAgICByZXN1bHRz
LnB1c2goZG9td2luZG93KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmVzdWx0czsKK30KKwor
ZnVuY3Rpb24geHBjQ2xlYW51cFdpbmRvd3MoKSB7CisgIG5ldHNjYXBlLnNlY3VyaXR5LlByaXZp
bGVnZU1hbmFnZXIuZW5hYmxlUHJpdmlsZWdlKCJVbml2ZXJzYWxYUENvbm5lY3QiKTsKKyAgdmFy
IHdtID0gQ29tcG9uZW50cy5jbGFzc2VzWyJAbW96aWxsYS5vcmcvYXBwc2hlbGwvd2luZG93LW1l
ZGlhdG9yOzEiXQorICAgICAgICAgICAgICAgICAgICAgLmdldFNlcnZpY2UoQ29tcG9uZW50cy5p
bnRlcmZhY2VzLm5zSVdpbmRvd01lZGlhdG9yKTsKKyAgdmFyIGVudW1lcmF0b3IgPSB3bS5nZXRF
bnVtZXJhdG9yKCJuYXZpZ2F0b3I6YnJvd3NlciIpOworCisgIHdoaWxlIChlbnVtZXJhdG9yLmhh
c01vcmVFbGVtZW50cygpKSB7CisgICAgdmFyIHdpbiA9IGVudW1lcmF0b3IuZ2V0TmV4dCgpOwor
ICAgIHZhciB0YWJzID0gd2luLmdCcm93c2VyLmJyb3dzZXJzOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7CisgICAgICB2YXIgZG9td2luZG93ID0gdGFic1tp
XS5kb2NTaGVsbC5kb2N1bWVudC5kZWZhdWx0VmlldzsKKworICAgICAgaWYgKGRvbXdpbmRvdy5s
b2NhdGlvbi5wcm90b2NvbCA9PSAiZGF0YToiKQorICAgICAgICBkb213aW5kb3cuY2xvc2UoKTsK
KyAgICB9CisgIH0KK30KKworZnVuY3Rpb24geHBjV2FpdEZvckZpbmlzaGVkRnJhbWVzKGNhbGxi
YWNrLCBudW1GcmFtZXMpIHsKKyAgdmFyIGZpbmlzaGVkRnJhbWVDb3VudCA9IDA7CisgIGZ1bmN0
aW9uIGZyYW1lRmluaXNoZWQoKSB7CisgICAgZmluaXNoZWRGcmFtZUNvdW50Kys7CisKKyAgICBp
ZiAoZmluaXNoZWRGcmFtZUNvdW50ID09IG51bUZyYW1lcykgeworICAgICAgY2xlYXJJbnRlcnZh
bChmcmFtZVdhaXRJbnRlcnZhbCk7CisgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAxKTsKKyAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZmluaXNoZWRGcmFtZUNvdW50ID4gbnVtRnJh
bWVzKQorICAgICAgdGhyb3cgIlRvbyBtYW55IGZyYW1lcyBsb2FkZWQuIjsKKyAgfQorCisgIHZh
ciBmaW5pc2hlZFdpbmRvd3MgPSBbXTsKKworICBmdW5jdGlvbiBjb250YWlucyhvYmosIGFycikg
eworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICBpZiAo
b2JqID09PSBhcnJbaV0pCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7CisgIH0KKworICBmdW5jdGlvbiBzZWFyY2hGb3JGaW5pc2hlZEZyYW1lcyh3aW4pIHsK
KyAgICBpZiAoZXNjYXBlKHVuZXNjYXBlKHdpbi5sb2NhdGlvbikpID09IGVzY2FwZSh0YXJnZXRf
dXJsKSkgeworICAgICAgaWYgKCFjb250YWlucyh3aW4sIGZpbmlzaGVkV2luZG93cykpIHsKKyAg
ICAgICAgZmluaXNoZWRXaW5kb3dzLnB1c2god2luKTsKKyAgICAgICAgZnJhbWVGaW5pc2hlZCgp
OworICAgICAgfQorICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpbi5mcmFtZXMubGVu
Z3RoOyBpKyspCisgICAgICBzZWFyY2hGb3JGaW5pc2hlZEZyYW1lcyh3aW4uZnJhbWVzW2ldKTsK
KyAgfQorCisgIGZ1bmN0aW9uIHBvbGwoKSB7CisgICAgLy8gVGhpcyBvbmx5IGdpdmVzIHVzIFVu
aXZlcnNhbFhQQ29ubmVjdCBmb3IgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUKKyAgICAvLyBXZSdy
ZSB1c2luZyBzZXRJbnRlcnZhbCwgc28gdGhlIG1haW4gcGFnZSdzIHByaXZpbGVnZXMgYXJlIHN0
aWxsIG5vcm1hbAorICAgIG5ldHNjYXBlLnNlY3VyaXR5LlByaXZpbGVnZU1hbmFnZXIuZW5hYmxl
UHJpdmlsZWdlKCJVbml2ZXJzYWxYUENvbm5lY3QiKTsKKyAgICB2YXIgd20gPSBDb21wb25lbnRz
LmNsYXNzZXNbIkBtb3ppbGxhLm9yZy9hcHBzaGVsbC93aW5kb3ctbWVkaWF0b3I7MSJdCisgICAg
ICAgICAgICAgICAgICAgICAgIC5nZXRTZXJ2aWNlKENvbXBvbmVudHMuaW50ZXJmYWNlcy5uc0lX
aW5kb3dNZWRpYXRvcik7CisgICAgdmFyIGVudW1lcmF0b3IgPSB3bS5nZXRFbnVtZXJhdG9yKCJu
YXZpZ2F0b3I6YnJvd3NlciIpOworICAgIHdoaWxlIChlbnVtZXJhdG9yLmhhc01vcmVFbGVtZW50
cygpKSB7CisgICAgICB2YXIgdGFicyA9IGVudW1lcmF0b3IuZ2V0TmV4dCgpLmdCcm93c2VyLmJy
b3dzZXJzOworICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIHNlYXJjaEZvckZpbmlzaGVkRnJhbWVzKHRhYnNbaV0uZG9jU2hlbGwuZG9jdW1lbnQu
ZGVmYXVsdFZpZXcpOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHZhciBmcmFtZVdhaXRJbnRl
cnZhbCA9IHNldEludGVydmFsKHBvbGwsIDUwMCk7Cit9CisKSW5kZXg6IGRvY3NoZWxsL3Rlc3Qv
bmF2aWdhdGlvbi9ibGFuay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3Qv
bmF2aWdhdGlvbi9ibGFuay5odG1sCmRpZmYgLU4gZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL2Js
YW5rLmh0bWwKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb2Nz
aGVsbC90ZXN0L25hdmlnYXRpb24vYmxhbmsuaHRtbAkxMSBKYW4gMjAwOCAwMjozMDo0NyAtMDAw
MApAQCAtMCwwICsxIEBACis8aHRtbD48Ym9keT5UaGlzIGlzIGEgYmxhbmsgZG9jdW1lbnQuPC9i
b2R5PjwvaHRtbD4KSW5kZXg6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9pZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vaWZyYW1lLmh0bWwK
ZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vaWZyYW1lLmh0bWwKLS0tIC9kZXYvbnVs
bAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24v
aWZyYW1lLmh0bWwJMTEgSmFuIDIwMDggMDI6MzA6NDcgLTAwMDAKQEAgLTAsMCArMSw4IEBACis8
aHRtbD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciBzcmMgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5z
dWJzdHJpbmcoMSk7Citkb2N1bWVudC53cml0ZSgnPGlmcmFtZSBzcmM9IicgKyBzcmMgKyAnIj48
L2lmcmFtZT4nKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogZG9jc2hlbGwv
dGVzdC9uYXZpZ2F0aW9uL25hdmlnYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL25hdmlnYXRlLmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25h
dmlnYXRpb24vbmF2aWdhdGUuaHRtbAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAg
LTAwMDAKKysrIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9uYXZpZ2F0ZS5odG1sCTExIEphbiAy
MDA4IDAyOjMwOjQ3IC0wMDAwCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZl
bnRVdGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik5hdmlnYXRpb25VdGlscy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgYXJndW1lbnRzID0g
d2luZG93LmxvY2F0aW9uLmhhc2guc3Vic3RyaW5nKDEpLnNwbGl0KCIsIik7Cit2YXIgdGFyZ2V0
ID0gYXJndW1lbnRzWzBdOwordmFyIG1lY2hhbmlzbSA9IGFyZ3VtZW50c1sxXTsKKworZG9jdW1l
bnQud3JpdGUoInRhcmdldD0iICsgdGFyZ2V0ICsgIiBtZWNoYW5pc209IiArIG1lY2hhbmlzbSk7
CisKK3N3aXRjaChtZWNoYW5pc20pIHsKK2Nhc2UgImxvY2F0aW9uIjoKKyAgbmF2aWdhdGVCeUxv
Y2F0aW9uKGV2YWwodGFyZ2V0KSk7CisgIGJyZWFrOworY2FzZSAib3BlbiI6CisgIG5hdmlnYXRl
QnlPcGVuKHRhcmdldCk7CisgIGJyZWFrOworY2FzZSAiZm9ybSI6CisgIG5hdmlnYXRlQnlGb3Jt
KHRhcmdldCk7CisgIGJyZWFrOworY2FzZSAiaHlwZXJsaW5rIjoKKyAgbmF2aWdhdGVCeUh5cGVy
bGluayh0YXJnZXQpOworICBicmVhazsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL29wZW4uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm
aWxlOiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vb3Blbi5odG1sCmRpZmYgLU4gZG9jc2hlbGwv
dGVzdC9uYXZpZ2F0aW9uL29wZW4uaHRtbAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6
MDAgLTAwMDAKKysrIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9vcGVuLmh0bWwJMTEgSmFuIDIw
MDggMDI6MzA6NDcgLTAwMDAKQEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxib2R5PgorPHNjcmlw
dD4KK3ZhciB0YXJnZXQgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7Citkb2N1
bWVudC53cml0ZSgidGFyZ2V0PSIgKyB0YXJnZXQpOword2luZG93Lm9wZW4oImRhdGE6dGV4dC9o
dG1sLDxodG1sPjxib2R5PlRoaXMgaXMgYSBwb3B1cDwvYm9keT48L2h0bWw+IiwgdGFyZ2V0KTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0
aW9uL3BhcmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3QvbmF2aWdh
dGlvbi9wYXJlbnQuaHRtbApkaWZmIC1OIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9wYXJlbnQu
aHRtbAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRvY3NoZWxs
L3Rlc3QvbmF2aWdhdGlvbi9wYXJlbnQuaHRtbAkxMSBKYW4gMjAwOCAwMjozMDo0NyAtMDAwMApA
QCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CitUaGlzIGRv
Y3VtZW50IGNvbnRhaW5zIGEgZnJhbWUuCis8ZGl2PjxpZnJhbWUgc3JjPSJibGFuay5odG1sIj48
L2lmcmFtZT48L2Rpdj4KKzxzY3JpcHQ+CitmcmFtZXNbMF0ubmFtZSA9IHdpbmRvdy5uYW1lICsg
Il9jaGlsZDAiOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IGRvY3NoZWxs
L3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2J1ZzEzODcxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog
ZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfYnVnMTM4NzEuaHRtbApkaWZmIC1OIGRvY3No
ZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2J1ZzEzODcxLmh0bWwKLS0tIC9kZXYvbnVsbAkxIEph
biAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9i
dWcxMzg3MS5odG1sCTExIEphbiAyMDA4IDAyOjMwOjQ3IC0wMDAwCkBAIC0wLDAgKzEsNDkgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQvTW9jaGlLaXQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L1NpbXBs
ZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZlbnRVdGlscy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL3Rlc3RzL1Np
bXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48L3NjcmlwdD4gICAgICAgIAorICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJhbWUgeyB3aWR0aDogOTAlOyBoZWlnaHQ6IDUwcHg7
IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7
CisgIG5hdmlnYXRlQnlMb2NhdGlvbih3aW5kb3cwLmZyYW1lc1swXSk7CisgIG5hdmlnYXRlQnlP
cGVuKCJ3aW5kb3cxX2NoaWxkMCIpOworICBuYXZpZ2F0ZUJ5Rm9ybSgid2luZG93Ml9jaGlsZDAi
KTsKKyAgbmF2aWdhdGVCeUh5cGVybGluaygid2luZG93M19jaGlsZDAiKTsKK30KKworeHBjV2Fp
dEZvckZpbmlzaGVkRnJhbWVzKGZ1bmN0aW9uKCkgeworICBpc0luYWNjZXNzaWJsZSh3aW5kb3cw
LmZyYW1lc1swXSwgIlNob3VsZCBub3QgYmUgYWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIGZy
YW1lIGJ5IHNldHRpbmcgbG9jYXRpb24uIik7CisgIGlzSW5hY2Nlc3NpYmxlKHdpbmRvdzEuZnJh
bWVzWzBdLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gZnJhbWUg
YnkgY2FsbGluZyB3aW5kb3cub3Blbi4iKTsKKyAgaXNJbmFjY2Vzc2libGUod2luZG93Mi5mcmFt
ZXNbMF0sICJTaG91bGQgbm90IGJlIGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiBmcmFtZSBi
eSBzdWJtaXR0aW5nIGZvcm0uIik7CisgIGlzSW5hY2Nlc3NpYmxlKHdpbmRvdzMuZnJhbWVzWzBd
LCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gZnJhbWUgYnkgdGFy
Z2V0ZWQgaHlwZXJsaW5rLiIpOworCisgIHdpbmRvdzAuY2xvc2UoKTsKKyAgd2luZG93MS5jbG9z
ZSgpOworICB3aW5kb3cyLmNsb3NlKCk7CisgIHdpbmRvdzMuY2xvc2UoKTsKKworICB4cGNDbGVh
bnVwV2luZG93cygpOworICBTaW1wbGVUZXN0LmZpbmlzaCgpOworfSwgNCk7CisKK3ZhciB3aW5k
b3cwID0gd2luZG93Lm9wZW4oImh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2Nz
aGVsbC90ZXN0L25hdmlnYXRpb24vcGFyZW50Lmh0bWwiLCAid2luZG93MCIpOwordmFyIHdpbmRv
dzEgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3No
ZWxsL3Rlc3QvbmF2aWdhdGlvbi9wYXJlbnQuaHRtbCIsICJ3aW5kb3cxIik7Cit2YXIgd2luZG93
MiA9IHdpbmRvdy5vcGVuKCJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL3BhcmVudC5odG1sIiwgIndpbmRvdzIiKTsKK3ZhciB3aW5kb3cz
ID0gd2luZG93Lm9wZW4oImh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVs
bC90ZXN0L25hdmlnYXRpb24vcGFyZW50Lmh0bWwiLCAid2luZG93MyIpOworPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2J1Z3ppbGxh
Lm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg3MSI+TW96aWxsYSBCdWcgMTM4NzE8L2E+
Cis8cHJlIGlkPSJ0ZXN0Ij4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK1NpbXBs
ZVRlc3Qud2FpdEZvckV4cGxpY2l0RmluaXNoKCk7Cis8L3NjcmlwdD4KKzwvcHJlPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfYnVnMjcwNDE0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3Rf
YnVnMjcwNDE0Lmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9idWcy
NzA0MTQuaHRtbAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2J1ZzI3MDQxNC5odG1sCTExIEphbiAyMDA4IDAy
OjMwOjQ3IC0wMDAwCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQv
TW9jaGlLaXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L1NpbXBsZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAg
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRl
c3QvRXZlbnRVdGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL3Rlc3RzL1NpbXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48
L3NjcmlwdD4gICAgICAgIAorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJh
bWUgeyB3aWR0aDogOTAlOyBoZWlnaHQ6IDUwcHg7IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4K
K3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIHdpbmRvdzAgPSB3aW5kb3cub3Blbigi
bmF2aWdhdGUuaHRtbCNvcGVuZXIuZnJhbWVzWzBdLGxvY2F0aW9uIiwgIndpbmRvdzAiKTsKKyAg
d2luZG93MSA9IHdpbmRvdy5vcGVuKCJuYXZpZ2F0ZS5odG1sI2NoaWxkMSxvcGVuIiwgIndpbmRv
dzEiKTsKKyAgd2luZG93MiA9IHdpbmRvdy5vcGVuKCJuYXZpZ2F0ZS5odG1sI2NoaWxkMixmb3Jt
IiwgIndpbmRvdzIiKTsKKyAgd2luZG93MyA9IHdpbmRvdy5vcGVuKCJuYXZpZ2F0ZS5odG1sI2No
aWxkMyxoeXBlcmxpbmsiLCAid2luZG93MyIpOworfQorCit4cGNXYWl0Rm9yRmluaXNoZWRGcmFt
ZXMoZnVuY3Rpb24oKSB7CisgIGlzTmF2aWdhdGVkKGZyYW1lc1swXSwgIlNob3VsZCBiZSBhYmxl
IHRvIG5hdmlnYXRlIG9uLWRvbWFpbiBvcGVuZXIncyBjaGlsZHJlbiBieSBzZXR0aW5nIGxvY2F0
aW9uLiIpOworICBpc05hdmlnYXRlZChmcmFtZXNbMV0sICJTaG91bGQgYmUgYWJsZSB0byBuYXZp
Z2F0ZSBvbi1kb21haW4gb3BlbmVyJ3MgY2hpbGRyZW4gYnkgY2FsbGluZyB3aW5kb3cub3Blbi4i
KTsKKyAgaXNOYXZpZ2F0ZWQoZnJhbWVzWzJdLCAiU2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUg
b24tZG9tYWluIG9wZW5lcidzIGNoaWxkcmVuIGJ5IHN1Ym1pdHRpbmcgZm9ybS4iKTsKKyAgaXNO
YXZpZ2F0ZWQoZnJhbWVzWzNdLCAiU2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUgb24tZG9tYWlu
IG9wZW5lcidzIGNoaWxkcmVuIGJ5IHRhcmdldGVkIGh5cGVybGluay4iKTsKKworICB3aW5kb3cw
LmNsb3NlKCk7CisgIHdpbmRvdzEuY2xvc2UoKTsKKyAgd2luZG93Mi5jbG9zZSgpOworICB3aW5k
b3czLmNsb3NlKCk7CisKKyAgeHBjQ2xlYW51cFdpbmRvd3MoKTsKKyAgU2ltcGxlVGVzdC5maW5p
c2goKTsKK30sIDQpOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGEgdGFyZ2V0PSJf
YmxhbmsiIGhyZWY9Imh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTI3MDQxNCI+TW96aWxsYSBCdWcgMjcwNDE0PC9hPgorPGRpdiBpZD0iZnJhbWVzIj4KKzxpZnJh
bWUgbmFtZT0iY2hpbGQwIiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9k
b2NzaGVsbC90ZXN0L25hdmlnYXRpb24vYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5h
bWU9ImNoaWxkMSIgc3JjPSJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL2JsYW5rLmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJj
aGlsZDIiIHNyYz0iaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rl
c3QvbmF2aWdhdGlvbi9ibGFuay5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQz
IiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25h
dmlnYXRpb24vYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwcmUgaWQ9InRlc3QiPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorU2ltcGxlVGVzdC53YWl0Rm9yRXhwbGlj
aXRGaW5pc2goKTsKKzwvc2NyaXB0PgorPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBk
b2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9idWcyNzgxNDMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD
UyBmaWxlOiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9idWcyNzgxNDMuaHRtbApkaWZm
IC1OIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2J1ZzI3ODE0My5odG1sCi0tLSAvZGV2
L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZG9jc2hlbGwvdGVzdC9uYXZpZ2F0
aW9uL3Rlc3RfYnVnMjc4MTQzLmh0bWwJMTEgSmFuIDIwMDggMDI6MzA6NDcgLTAwMDAKQEAgLTAs
MCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9Nb2NoaUtpdC9Nb2NoaUtpdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBs
ZVRlc3QvU2ltcGxlVGVzdC5qcyI+PC9zY3JpcHQ+ICAgICAgICAKKyAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSIvdGVzdHMvU2ltcGxlVGVzdC9FdmVudFV0aWxzLmpzIj48
L3NjcmlwdD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIvdGVzdHMvU2ltcGxlVGVzdC90ZXN0LmNzcyIgLz4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJOYXZpZ2F0aW9uVXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJsaW5rMCIpLmhyZWYgPSB0YXJnZXRfdXJsOworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
bGluazEiKS5ocmVmID0gdGFyZ2V0X3VybDsKKworICBzZW5kTW91c2VFdmVudCh7dHlwZToiY2xp
Y2sifSwgImxpbmswIik7CisgIHNlbmRNb3VzZUV2ZW50KHt0eXBlOiJjbGljayJ9LCAibGluazEi
KTsKK30KKworZnVuY3Rpb24gY291bnRBbmRDbG9zZShuYW1lLCBleHBlY3RlZF9jb3VudCkgewor
ICB2YXIgYXJyYXlfb2ZfZnJhbWVzID0geHBjR2V0RnJhbWVzQnlOYW1lKG5hbWUpOworICBpcyhh
cnJheV9vZl9mcmFtZXMubGVuZ3RoLCBleHBlY3RlZF9jb3VudCwgIlNob3VsZCBvbmx5IG9wZW4g
IiArIGV4cGVjdGVkX2NvdW50ICsgIiB3aW5kb3cgdXNpbmcgYSBmYW5jeSBoeXBlcmxpbmsuIik7
CisKKyAgZm9yICh2YXIgaT0wOyBpIDwgYXJyYXlfb2ZfZnJhbWVzLmxlbmd0aDsgKytpKQorICAg
IGFycmF5X29mX2ZyYW1lc1tpXS5jbG9zZSgpOworfQorCit4cGNXYWl0Rm9yRmluaXNoZWRGcmFt
ZXMoZnVuY3Rpb24oKSB7CisgIGNvdW50QW5kQ2xvc2UoIndpbmRvdzAiLCAxKTsKKyAgY291bnRB
bmRDbG9zZSgid2luZG93MSIsIDEpOworCisgIHhwY0NsZWFudXBXaW5kb3dzKCk7CisgIFNpbXBs
ZVRlc3QuZmluaXNoKCk7Cit9LCAyKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8YSB0
YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Mjc4OTE2Ij5Nb3ppbGxhIEJ1ZyAyNzg5MTY8L2E+Cis8ZGl2IGlkPSJsaW5rcyI+
Cis8YSBpZD0ibGluazAiIHRhcmdldD0id2luZG93MCIgb25jbGljaz0id2luZG93Lm9wZW4oJ2Js
YW5rLmh0bWwnLCAnd2luZG93MCcpOyI+VGhpcyBpcyBhIGZhbmN5IGh5cGVybGluazwvYT4KKzxh
IGlkPSJsaW5rMSIgdGFyZ2V0PSJ3aW5kb3cxIiBvbmNsaWNrPSJ3aW5kb3cub3BlbignaHR0cDov
L3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9ibGFu
ay5odG1sJywgJ3dpbmRvdzEnKTsiPlRoaXMgaXMgYSBmYW5jeSBoeXBlcmxpbms8L2E+Cis8L2Rp
dj4KKzxwcmUgaWQ9InRlc3QiPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorU2lt
cGxlVGVzdC53YWl0Rm9yRXhwbGljaXRGaW5pc2goKTsKKzwvc2NyaXB0PgorPC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9idWcyNzg5
MTYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVz
dF9idWcyNzg5MTYuaHRtbApkaWZmIC1OIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2J1
ZzI3ODkxNi5odG1sCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg
ZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfYnVnMjc4OTE2Lmh0bWwJMTEgSmFuIDIwMDgg
MDI6MzA6NDcgLTAwMDAKQEAgLTAsMCArMSw0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9Nb2NoaUtp
dC9Nb2NoaUtpdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvU2ltcGxlVGVzdC5qcyI+PC9zY3JpcHQ+ICAgICAg
ICAKKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvdGVzdHMvU2ltcGxl
VGVzdC9FdmVudFV0aWxzLmpzIj48L3NjcmlwdD4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQi
IHR5cGU9InRleHQvY3NzIiBocmVmPSIvdGVzdHMvU2ltcGxlVGVzdC90ZXN0LmNzcyIgLz4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJOYXZpZ2F0aW9uVXRpbHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaW5rMCIpLmhyZWYgPSB0YXJnZXRfdXJsOworCisgIHNl
bmRNb3VzZUV2ZW50KHt0eXBlOiJjbGljayJ9LCAibGluazAiKTsKK30KKworeHBjV2FpdEZvckZp
bmlzaGVkRnJhbWVzKGZ1bmN0aW9uKCkgeworICB2YXIgYXJyYXlfb2ZfZnJhbWVzID0geHBjR2V0
RnJhbWVzQnlOYW1lKCJ3aW5kb3cwIik7CisgIGlzKGFycmF5X29mX2ZyYW1lcy5sZW5ndGgsIDEs
ICJTaG91bGQgb25seSBvcGVuIG9uZSB3aW5kb3cgdXNpbmcgYSBmYW5jeSBoeXBlcmxpbmsuIik7
CisKKyAgZm9yICh2YXIgaT0wOyBpIDwgYXJyYXlfb2ZfZnJhbWVzLmxlbmd0aDsgKytpKQorICAg
IGFycmF5X29mX2ZyYW1lc1tpXS5jbG9zZSgpOworCisgIHhwY0NsZWFudXBXaW5kb3dzKCk7Cisg
IFNpbXBsZVRlc3QuZmluaXNoKCk7Cit9LCAxKTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNzg5MTYiPk1vemlsbGEgQnVnIDI3ODkxNjwvYT4KKzxkaXYgaWQ9
ImxpbmtzIj4KKzxhIGlkPSJsaW5rMCIgdGFyZ2V0PSJ3aW5kb3cwIiBvbmNsaWNrPSJ3aW5kb3cu
b3BlbignJywgJ3dpbmRvdzAnKTsiPlRoaXMgaXMgYSBmYW5jeSBoeXBlcmxpbms8L2E+Cis8L2Rp
dj4KKzxwcmUgaWQ9InRlc3QiPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorU2lt
cGxlVGVzdC53YWl0Rm9yRXhwbGljaXRGaW5pc2goKTsKKzwvc2NyaXB0PgorPC9wcmU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9jaGlsZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X2No
aWxkLmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9jaGlsZC5odG1s
Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZG9jc2hlbGwvdGVz
dC9uYXZpZ2F0aW9uL3Rlc3RfY2hpbGQuaHRtbAkxMSBKYW4gMjAwOCAwMjozMDo0NyAtMDAwMApA
QCAtMCwwICsxLDQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL01vY2hpS2l0L01vY2hpS2l0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvdGVzdHMv
U2ltcGxlVGVzdC9TaW1wbGVUZXN0LmpzIj48L3NjcmlwdD4gICAgICAgIAorICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L0V2ZW50VXRpbHMu
anMiPjwvc2NyaXB0PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii90ZXN0cy9TaW1wbGVUZXN0L3Rlc3QuY3NzIiAvPgorICAgIDxzY3JpcHQgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5hdmlnYXRpb25VdGlscy5qcyI+PC9zY3JpcHQ+ICAgICAg
ICAKKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgaWZyYW1lIHsgd2lkdGg6IDkw
JTsgaGVpZ2h0OiA1MHB4OyB9CisgICAgPC9zdHlsZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisgIG5hdmlnYXRlQnlMb2NhdGlvbihmcmFtZXNbMF0pOworICBuYXZp
Z2F0ZUJ5T3BlbigiY2hpbGQxIik7CisgIG5hdmlnYXRlQnlGb3JtKCJjaGlsZDIiKTsKKyAgbmF2
aWdhdGVCeUh5cGVybGluaygiY2hpbGQzIik7Cit9CisKK3hwY1dhaXRGb3JGaW5pc2hlZEZyYW1l
cyhmdW5jdGlvbigpIHsKKyAgaXNOYXZpZ2F0ZWQoZnJhbWVzWzBdLCAiU2hvdWxkIGJlIGFibGUg
dG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiBjaGlsZCBieSBzZXR0aW5nIGxvY2F0aW9uLiIpOworICBp
c05hdmlnYXRlZChmcmFtZXNbMV0sICJTaG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9t
YWluIGNoaWxkIGJ5IGNhbGxpbmcgd2luZG93Lm9wZW4uIik7CisgIGlzTmF2aWdhdGVkKGZyYW1l
c1syXSwgIlNob3VsZCBiZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gY2hpbGQgYnkgc3Vi
bWl0dGluZyBmb3JtLiIpOworICBpc05hdmlnYXRlZChmcmFtZXNbM10sICJTaG91bGQgYmUgYWJs
ZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIGNoaWxkIGJ5IHRhcmdldGVkIGh5cGVybGluay4iKTsK
KworICB4cGNDbGVhbnVwV2luZG93cygpOworICBTaW1wbGVUZXN0LmZpbmlzaCgpOworfSwgNCk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0
dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQwODA1MiI+TW96aWxs
YSBCdWcgNDA4MDUyPC9hPgorPGRpdiBpZD0iZnJhbWVzIj4KKzxpZnJhbWUgbmFtZT0iY2hpbGQw
IiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25h
dmlnYXRpb24vYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMSIgc3Jj
PSJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0
aW9uL2JsYW5rLmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDIiIHNyYz0iaHR0
cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9i
bGFuay5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQzIiBzcmM9Imh0dHA6Ly90
ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vYmxhbmsu
aHRtbCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwcmUgaWQ9InRlc3QiPgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPgorU2ltcGxlVGVzdC53YWl0Rm9yRXhwbGljaXRGaW5pc2goKTsKKzwv
c2NyaXB0PgorPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBkb2NzaGVsbC90ZXN0L25h
dmlnYXRpb24vdGVzdF9ncmFuZGNoaWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfZ3JhbmRjaGlsZC5odG1sCmRpZmYgLU4gZG9jc2hlbGwv
dGVzdC9uYXZpZ2F0aW9uL3Rlc3RfZ3JhbmRjaGlsZC5odG1sCi0tLSAvZGV2L251bGwJMSBKYW4g
MTk3MCAwMDowMDowMCAtMDAwMAorKysgZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfZ3Jh
bmRjaGlsZC5odG1sCTExIEphbiAyMDA4IDAyOjMwOjQ3IC0wMDAwCkBAIC0wLDAgKzEsNDUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQvTW9jaGlLaXQuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L1NpbXBs
ZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZlbnRVdGlscy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL3Rlc3RzL1Np
bXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48L3NjcmlwdD4gICAgICAgIAorICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJhbWUgeyB3aWR0aDogOTAlOyBoZWlnaHQ6IDIwMHB4
OyB9CisgICAgPC9zdHlsZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24gKCkg
eworICBuYXZpZ2F0ZUJ5TG9jYXRpb24oZnJhbWVzWzBdLmZyYW1lc1swXSk7CisgIG5hdmlnYXRl
QnlPcGVuKCJjaGlsZDFfY2hpbGQwIik7CisgIG5hdmlnYXRlQnlGb3JtKCJjaGlsZDJfY2hpbGQw
Iik7CisgIG5hdmlnYXRlQnlIeXBlcmxpbmsoImNoaWxkM19jaGlsZDAiKTsKK30KKworeHBjV2Fp
dEZvckZpbmlzaGVkRnJhbWVzKGZ1bmN0aW9uKCkgeworICBpc05hdmlnYXRlZChmcmFtZXNbMF0u
ZnJhbWVzWzBdLCAiU2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiBncmFuZGNo
aWxkIGJ5IHNldHRpbmcgbG9jYXRpb24uIik7CisgIGlzTmF2aWdhdGVkKGZyYW1lc1sxXS5mcmFt
ZXNbMF0sICJTaG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIGdyYW5kY2hpbGQg
YnkgY2FsbGluZyB3aW5kb3cub3Blbi4iKTsKKyAgaXNOYXZpZ2F0ZWQoZnJhbWVzWzJdLmZyYW1l
c1swXSwgIlNob3VsZCBiZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gZ3JhbmRjaGlsZCBi
eSBzdWJtaXR0aW5nIGZvcm0uIik7CisgIGlzTmF2aWdhdGVkKGZyYW1lc1szXS5mcmFtZXNbMF0s
ICJTaG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIGdyYW5kY2hpbGQgYnkgdGFy
Z2V0ZWQgaHlwZXJsaW5rLiIpOworCisgIHhwY0NsZWFudXBXaW5kb3dzKCk7CisgIFNpbXBsZVRl
c3QuZmluaXNoKCk7Cit9LCA0KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8YSB0YXJn
ZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDA4MDUyIj5Nb3ppbGxhIEJ1ZyA0MDgwNTI8L2E+Cis8ZGl2IGlkPSJmcmFtZXMiPgor
PGlmcmFtZSBuYW1lPSJjaGlsZDAiIHNyYz0iaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rl
c3RzL2RvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9wYXJlbnQuaHRtbCI+PC9pZnJhbWU+Cis8aWZy
YW1lIG5hbWU9ImNoaWxkMSIgc3JjPSJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMv
ZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3BhcmVudC5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUg
bmFtZT0iY2hpbGQyIiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2Nz
aGVsbC90ZXN0L25hdmlnYXRpb24vcGFyZW50Lmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1l
PSJjaGlsZDMiIHNyYz0iaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxs
L3Rlc3QvbmF2aWdhdGlvbi9wYXJlbnQuaHRtbCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxwcmUgaWQ9
InRlc3QiPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorU2ltcGxlVGVzdC53YWl0
Rm9yRXhwbGljaXRGaW5pc2goKTsKKzwvc2NyaXB0PgorPC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9ub3Qtb3BlbmVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpSQ1MgZmlsZTogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3Rfbm90LW9wZW5l
ci5odG1sCmRpZmYgLU4gZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3Rfbm90LW9wZW5lci5o
dG1sCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZG9jc2hlbGwv
dGVzdC9uYXZpZ2F0aW9uL3Rlc3Rfbm90LW9wZW5lci5odG1sCTExIEphbiAyMDA4IDAyOjMwOjQ3
IC0wMDAwCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQvTW9jaGlL
aXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Ii90ZXN0cy9TaW1wbGVUZXN0L1NpbXBsZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZl
bnRVdGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0
ZXh0L2NzcyIgaHJlZj0iL3Rlc3RzL1NpbXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48L3Njcmlw
dD4gICAgICAgIAorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJhbWUgeyB3
aWR0aDogOTAlOyBoZWlnaHQ6IDUwcHg7IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIC8vbmF2aWdhdGVCeUxvY2F0aW9uKHdpbmRvdzAp
OyAgLy8gRG9uJ3QgaGF2ZSBhIGhhbmRsZSB0byB0aGUgd2luZG93LgorICBuYXZpZ2F0ZUJ5T3Bl
bigid2luZG93MSIpOworICBuYXZpZ2F0ZUJ5Rm9ybSgid2luZG93MiIpOworICBuYXZpZ2F0ZUJ5
SHlwZXJsaW5rKCJ3aW5kb3czIik7Cit9CisKK3hwY1dhaXRGb3JGaW5pc2hlZEZyYW1lcyhmdW5j
dGlvbigpIHsKKyAgaXMoeHBjR2V0RnJhbWVzQnlOYW1lKCJ3aW5kb3cxIikubGVuZ3RoLCAyLCAi
U2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5hdmlnYXRlIHBvcHVwJ3MgcG9wdXAgYnkgY2FsbGluZyB3
aW5kb3cub3Blbi4iKTsKKyAgaXMoeHBjR2V0RnJhbWVzQnlOYW1lKCJ3aW5kb3cyIikubGVuZ3Ro
LCAyLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5hdmlnYXRlIHBvcHVwJ3MgcG9wdXAgYnkgc3Vi
bWl0dGluZyBmb3JtLiIpOworICBpcyh4cGNHZXRGcmFtZXNCeU5hbWUoIndpbmRvdzMiKS5sZW5n
dGgsIDIsICJTaG91bGQgbm90IGJlIGFibGUgdG8gbmF2aWdhdGUgcG9wdXAncyBwb3B1cCBieSB0
YXJnZXRlZCBoeXBlcmxpbmsuIik7CisKKyAgLy9vcGVuZXIwLmNsb3NlKCk7CisgIG9wZW5lcjEu
Y2xvc2UoKTsKKyAgb3BlbmVyMi5jbG9zZSgpOworICBvcGVuZXIzLmNsb3NlKCk7CisKKyAgeHBj
Q2xlYW51cFdpbmRvd3MoKTsKKyAgU2ltcGxlVGVzdC5maW5pc2goKTsKK30sIDMpOworCisvL29w
ZW5lcjAgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2Rv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9vcGVuLmh0bWwjd2luZG93MCIsICJfYmxhbmsiKTsKK29w
ZW5lcjEgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2Rv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9vcGVuLmh0bWwjd2luZG93MSIsICJfYmxhbmsiKTsKK29w
ZW5lcjIgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2Rv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9vcGVuLmh0bWwjd2luZG93MiIsICJfYmxhbmsiKTsKK29w
ZW5lcjMgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2Rv
Y3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9vcGVuLmh0bWwjd2luZG93MyIsICJfYmxhbmsiKTsKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6
Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA4MDUyIj5Nb3ppbGxhIEJ1
ZyA0MDgwNTI8L2E+Cis8cHJlIGlkPSJ0ZXN0Ij4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0Ij4KK1NpbXBsZVRlc3Qud2FpdEZvckV4cGxpY2l0RmluaXNoKCk7Cis8L3NjcmlwdD4KKzwv
cHJlPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rl
c3Rfb3BlbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0
aW9uL3Rlc3Rfb3BlbmVyLmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVz
dF9vcGVuZXIuaHRtbAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysr
IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X29wZW5lci5odG1sCTExIEphbiAyMDA4IDAy
OjMwOjQ3IC0wMDAwCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQv
TW9jaGlLaXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L1NpbXBsZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAg
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRl
c3QvRXZlbnRVdGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iL3Rlc3RzL1NpbXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48
L3NjcmlwdD4gICAgICAgIAorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJh
bWUgeyB3aWR0aDogOTAlOyBoZWlnaHQ6IDUwcHg7IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4K
K3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIG5hdmlnYXRlQnlMb2NhdGlvbih3aW5k
b3cwKTsKKyAgbmF2aWdhdGVCeU9wZW4oIndpbmRvdzEiKTsKKyAgbmF2aWdhdGVCeUZvcm0oIndp
bmRvdzIiKTsKKyAgbmF2aWdhdGVCeUh5cGVybGluaygid2luZG93MyIpOworfQorCit4cGNXYWl0
Rm9yRmluaXNoZWRGcmFtZXMoZnVuY3Rpb24oKSB7CisgIGlzTmF2aWdhdGVkKHdpbmRvdzAsICJT
aG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBwb3B1cCBieSBzZXR0aW5nIGxvY2F0aW9uLiIpOwor
ICBpc05hdmlnYXRlZCh3aW5kb3cxLCAiU2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUgcG9wdXAg
YnkgY2FsbGluZyB3aW5kb3cub3Blbi4iKTsKKyAgaXNOYXZpZ2F0ZWQod2luZG93MiwgIlNob3Vs
ZCBiZSBhYmxlIHRvIG5hdmlnYXRlIHBvcHVwIGJ5IHN1Ym1pdHRpbmcgZm9ybS4iKTsKKyAgaXNO
YXZpZ2F0ZWQod2luZG93MywgIlNob3VsZCBiZSBhYmxlIHRvIG5hdmlnYXRlIHBvcHVwIGJ5IHRh
cmdldGVkIGh5cGVybGluay4iKTsKKworICB3aW5kb3cwLmNsb3NlKCk7CisgIHdpbmRvdzEuY2xv
c2UoKTsKKyAgd2luZG93Mi5jbG9zZSgpOworICB3aW5kb3czLmNsb3NlKCk7CisKKyAgeHBjQ2xl
YW51cFdpbmRvd3MoKTsKKyAgU2ltcGxlVGVzdC5maW5pc2goKTsKK30sIDQpOworCit2YXIgd2lu
ZG93MCA9IHdpbmRvdy5vcGVuKCJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9j
c2hlbGwvdGVzdC9uYXZpZ2F0aW9uL2JsYW5rLmh0bWwiLCAid2luZG93MCIpOwordmFyIHdpbmRv
dzEgPSB3aW5kb3cub3BlbigiaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3No
ZWxsL3Rlc3QvbmF2aWdhdGlvbi9ibGFuay5odG1sIiwgIndpbmRvdzEiKTsKK3ZhciB3aW5kb3cy
ID0gd2luZG93Lm9wZW4oImh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVs
bC90ZXN0L25hdmlnYXRpb24vYmxhbmsuaHRtbCIsICJ3aW5kb3cyIik7Cit2YXIgd2luZG93MyA9
IHdpbmRvdy5vcGVuKCJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hlbGwv
dGVzdC9uYXZpZ2F0aW9uL2JsYW5rLmh0bWwiLCAid2luZG93MyIpOworPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD00MDgwNTIiPk1vemlsbGEgQnVnIDQwODA1MjwvYT4K
KzxwcmUgaWQ9InRlc3QiPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorU2ltcGxl
VGVzdC53YWl0Rm9yRXhwbGljaXRGaW5pc2goKTsKKzwvc2NyaXB0PgorPC9wcmU+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9yZXNlcnZlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KUkNTIGZpbGU6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X3Jl
c2VydmVkLmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vdGVzdF9yZXNlcnZl
ZC5odG1sCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3RfcmVzZXJ2ZWQuaHRtbAkxMSBKYW4gMjAwOCAwMjozMDo0
NyAtMDAwMApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL01vY2hpS2l0L01vY2hp
S2l0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIvdGVzdHMvU2ltcGxlVGVzdC9TaW1wbGVUZXN0LmpzIj48L3NjcmlwdD4gICAgICAgIAorICAg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXN0cy9TaW1wbGVUZXN0L0V2
ZW50VXRpbHMuanMiPjwvc2NyaXB0PgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0i
dGV4dC9jc3MiIGhyZWY9Ii90ZXN0cy9TaW1wbGVUZXN0L3Rlc3QuY3NzIiAvPgorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5hdmlnYXRpb25VdGlscy5qcyI+PC9zY3Jp
cHQ+ICAgICAgICAKKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgaWZyYW1lIHsg
d2lkdGg6IDkwJTsgaGVpZ2h0OiAyMDBweDsgfQorICAgIDwvc3R5bGU+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gdGVzdFRvcCgpIHsKKyAgd2luZG93MCA9IHdpbmRvdy5vcGVuKCJpZnJhbWUuaHRtbCNo
dHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9u
L25hdmlnYXRlLmh0bWwjdG9wLGxvY2F0aW9uIiwgIl9ibGFuayIpOworCisgIHhwY1dhaXRGb3JG
aW5pc2hlZEZyYW1lcyhmdW5jdGlvbigpIHsKKyAgICBpc0luYWNjZXNzaWJsZSh3aW5kb3cwLCAi
U2hvdWxkIGJlIGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiB0b3AgYnkgc2V0dGluZyBsb2Nh
dGlvbi4iKTsKKyAgICB3aW5kb3cwLmNsb3NlKCk7CisgICAgeHBjQ2xlYW51cFdpbmRvd3MoKTsK
KworICAgIHdpbmRvdzEgPSB3aW5kb3cub3BlbigiaWZyYW1lLmh0bWwjaHR0cDovL3Rlc3QxLmV4
YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9uYXZpZ2F0ZS5odG1s
I190b3Asb3BlbiIsICJfYmxhbmsiKTsKKyAgICAKKyAgICB4cGNXYWl0Rm9yRmluaXNoZWRGcmFt
ZXMoZnVuY3Rpb24oKSB7CisgICAgICBpc0luYWNjZXNzaWJsZSh3aW5kb3cxLCAiU2hvdWxkIGJl
IGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiB0b3AgYnkgY2FsbGluZyB3aW5kb3cub3Blbi4i
KTsKKyAgICAgIHdpbmRvdzEuY2xvc2UoKTsKKyAgICAgIHhwY0NsZWFudXBXaW5kb3dzKCk7CisK
KyAgICAgIHdpbmRvdzIgPSB3aW5kb3cub3BlbigiaWZyYW1lLmh0bWwjaHR0cDovL3Rlc3QxLmV4
YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi9uYXZpZ2F0ZS5odG1s
I190b3AsZm9ybSIsICJfYmxhbmsiKTsKKworICAgICAgeHBjV2FpdEZvckZpbmlzaGVkRnJhbWVz
KGZ1bmN0aW9uKCkgeworICAgICAgICBpc0luYWNjZXNzaWJsZSh3aW5kb3cyLCAiU2hvdWxkIGJl
IGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiB0b3AgYnkgc3VibWl0dGluZyBmb3JtLiIpOwor
ICAgICAgICB3aW5kb3cyLmNsb3NlKCk7CisgICAgICAgIHhwY0NsZWFudXBXaW5kb3dzKCk7CisK
KyAgICAgICAgd2luZG93MyA9IHdpbmRvdy5vcGVuKCJpZnJhbWUuaHRtbCNodHRwOi8vdGVzdDEu
ZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL25hdmlnYXRlLmh0
bWwjX3RvcCxoeXBlcmxpbmsiLCAiX2JsYW5rIik7CisKKyAgICAgICAgeHBjV2FpdEZvckZpbmlz
aGVkRnJhbWVzKGZ1bmN0aW9uKCkgeworICAgICAgICAgIGlzSW5hY2Nlc3NpYmxlKHdpbmRvdzMs
ICJTaG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIHRvcCBieSB0YXJnZXRlZCBo
eXBlcmxpbmsuIik7CisgICAgICAgICAgd2luZG93My5jbG9zZSgpOworICAgICAgICAgIHhwY0Ns
ZWFudXBXaW5kb3dzKCk7CisKKyAgICAgICAgICB0ZXN0UGFyZW50KCk7CisgICAgICAgIH0sIDEp
OworICAgICAgfSwgMSk7CisgICAgfSwgMSk7CisgIH0sIDEpOworfQorCitmdW5jdGlvbiB0ZXN0
UGFyZW50KCkgeworICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZnJhbWVzIikuaW5uZXJIVE1M
ID0gJzxpZnJhbWUgc3JjPSJpZnJhbWUuaHRtbCNodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAv
dGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL25hdmlnYXRlLmh0bWwjcGFyZW50LGxvY2F0
aW9uIj48L2lmcmFtZT4nOworCisgIHhwY1dhaXRGb3JGaW5pc2hlZEZyYW1lcyhmdW5jdGlvbigp
IHsKKyAgICBpc0FjY2Vzc2libGUoZnJhbWVzWzBdLCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5h
dmlnYXRlIG9mZi1kb21haW4gcGFyZW50IGJ5IHNldHRpbmcgbG9jYXRpb24uIik7CisgICAgeHBj
Q2xlYW51cFdpbmRvd3MoKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZXMi
KS5pbm5lckhUTUwgPSAnPGlmcmFtZSBzcmM9ImlmcmFtZS5odG1sI2h0dHA6Ly90ZXN0MS5leGFt
cGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vbmF2aWdhdGUuaHRtbCNf
cGFyZW50LG9wZW4iPjwvaWZyYW1lPic7CisKKyAgICB4cGNXYWl0Rm9yRmluaXNoZWRGcmFtZXMo
ZnVuY3Rpb24oKSB7CisgICAgICBpc0FjY2Vzc2libGUoZnJhbWVzWzBdLCAiU2hvdWxkIG5vdCBi
ZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gcGFyZW50IGJ5IGNhbGxpbmcgd2luZG93Lm9w
ZW4uIik7CisgICAgICB4cGNDbGVhbnVwV2luZG93cygpOworCisgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZnJhbWVzIikuaW5uZXJIVE1MID0gJzxpZnJhbWUgc3JjPSJpZnJhbWUuaHRt
bCNodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0
aW9uL25hdmlnYXRlLmh0bWwjX3BhcmVudCxmb3JtIj48L2lmcmFtZT4nOworCisgICAgICB4cGNX
YWl0Rm9yRmluaXNoZWRGcmFtZXMoZnVuY3Rpb24oKSB7CisgICAgICAgIGlzQWNjZXNzaWJsZShm
cmFtZXNbMF0sICJTaG91bGQgbm90IGJlIGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiBwYXJl
bnQgYnkgc3VibWl0dGluZyBmb3JtLiIpOworICAgICAgICB4cGNDbGVhbnVwV2luZG93cygpOwor
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZXMiKS5pbm5lckhUTUwgPSAn
PGlmcmFtZSBzcmM9ImlmcmFtZS5odG1sI2h0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0
cy9kb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vbmF2aWdhdGUuaHRtbCNfcGFyZW50LGh5cGVybGlu
ayI+PC9pZnJhbWU+JzsKKworICAgICAgICB4cGNXYWl0Rm9yRmluaXNoZWRGcmFtZXMoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgaXNBY2Nlc3NpYmxlKGZyYW1lc1swXSwgIlNob3VsZCBub3QgYmUg
YWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIHBhcmVudCBieSB0YXJnZXRlZCBoeXBlcmxpbmsu
Iik7CisgICAgICAgICAgeHBjQ2xlYW51cFdpbmRvd3MoKTsKKworICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmcmFtZXMiKS5pbm5lckhUTUwgPSAiIjsKKyAgICAgICAgICBTaW1w
bGVUZXN0LmZpbmlzaCgpOworICAgICAgICB9LCAxKTsKKyAgICAgIH0sIDEpOworICAgIH0sIDEp
OworICB9LCAxKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICB0ZXN0VG9w
KCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGEgdGFyZ2V0PSJfYmxhbmsiIGhy
ZWY9Imh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTQwODA1MiI+
TW96aWxsYSBCdWcgNDA4MDUyPC9hPgorPGRpdiBpZD0iZnJhbWVzIj4KKzwvZGl2PgorPHByZSBp
ZD0idGVzdCI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitTaW1wbGVUZXN0Lndh
aXRGb3JFeHBsaWNpdEZpbmlzaCgpOworPC9zY3JpcHQ+Cis8L3ByZT4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90ZXN0X3NpYmxpbmctbWF0Y2hpbmct
cGFyZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9u
L3Rlc3Rfc2libGluZy1tYXRjaGluZy1wYXJlbnQuaHRtbApkaWZmIC1OIGRvY3NoZWxsL3Rlc3Qv
bmF2aWdhdGlvbi90ZXN0X3NpYmxpbmctbWF0Y2hpbmctcGFyZW50Lmh0bWwKLS0tIC9kZXYvbnVs
bAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBkb2NzaGVsbC90ZXN0L25hdmlnYXRpb24v
dGVzdF9zaWJsaW5nLW1hdGNoaW5nLXBhcmVudC5odG1sCTExIEphbiAyMDA4IDAyOjMwOjUwIC0w
MDAwCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQvTW9jaGlLaXQu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90
ZXN0cy9TaW1wbGVUZXN0L1NpbXBsZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZlbnRV
dGlscy5qcyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0iL3Rlc3RzL1NpbXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48L3NjcmlwdD4g
ICAgICAgIAorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJhbWUgeyB3aWR0
aDogOTAlOyBoZWlnaHQ6IDUwcHg7IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbiAoKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmUn
KS5pbm5lckhUTUwgPQorICAgICAgJzxpZnJhbWUgc3JjPSJuYXZpZ2F0ZS5odG1sI3BhcmVudC5m
cmFtZXNbMF0sbG9jYXRpb24iPjwvaWZyYW1lPicgKworICAgICAgJzxpZnJhbWUgc3JjPSJuYXZp
Z2F0ZS5odG1sI2NoaWxkMSxvcGVuIj48L2lmcmFtZT4nICsKKyAgICAgICc8aWZyYW1lIHNyYz0i
bmF2aWdhdGUuaHRtbCNjaGlsZDIsZm9ybSI+PC9pZnJhbWU+JyArCisgICAgICAnPGlmcmFtZSBz
cmM9Im5hdmlnYXRlLmh0bWwjY2hpbGQzLGh5cGVybGluayI+PC9pZnJhbWU+JzsKK30KKworeHBj
V2FpdEZvckZpbmlzaGVkRnJhbWVzKGZ1bmN0aW9uKCkgeworICBpc05hdmlnYXRlZChmcmFtZXNb
MF0sICJTaG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBzaWJsaW5nIHdpdGggb24tZG9tYWluIHBh
cmVudCBieSBzZXR0aW5nIGxvY2F0aW9uLiIpOworICBpc05hdmlnYXRlZChmcmFtZXNbMV0sICJT
aG91bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBzaWJsaW5nIHdpdGggb24tZG9tYWluIHBhcmVudCBi
eSBjYWxsaW5nIHdpbmRvdy5vcGVuLiIpOworICBpc05hdmlnYXRlZChmcmFtZXNbMl0sICJTaG91
bGQgYmUgYWJsZSB0byBuYXZpZ2F0ZSBzaWJsaW5nIHdpdGggb24tZG9tYWluIHBhcmVudCBieSBz
dWJtaXR0aW5nIGZvcm0uIik7CisgIGlzTmF2aWdhdGVkKGZyYW1lc1szXSwgIlNob3VsZCBiZSBh
YmxlIHRvIG5hdmlnYXRlIHNpYmxpbmcgd2l0aCBvbi1kb21haW4gcGFyZW50IGJ5IHRhcmdldGVk
IGh5cGVybGluay4iKTsKKworICB4cGNDbGVhbnVwV2luZG93cygpOworICBTaW1wbGVUZXN0LmZp
bmlzaCgpOworfSwgNCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGEgdGFyZ2V0PSJf
YmxhbmsiIGhyZWY9Imh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lk
PTQwODA1MiI+TW96aWxsYSBCdWcgNDA4MDUyPC9hPgorPGRpdiBpZD0iZnJhbWVzIj4KKzxpZnJh
bWUgbmFtZT0iY2hpbGQwIiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9k
b2NzaGVsbC90ZXN0L25hdmlnYXRpb24vYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5h
bWU9ImNoaWxkMSIgc3JjPSJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAvdGVzdHMvZG9jc2hl
bGwvdGVzdC9uYXZpZ2F0aW9uL2JsYW5rLmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJj
aGlsZDIiIHNyYz0iaHR0cDovL3Rlc3QxLmV4YW1wbGUub3JnOjgwL3Rlc3RzL2RvY3NoZWxsL3Rl
c3QvbmF2aWdhdGlvbi9ibGFuay5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQz
IiBzcmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25h
dmlnYXRpb24vYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8L2Rpdj4KKzxkaXYgaWQ9ImFjdGl2ZSI+
PC9kaXY+Cis8cHJlIGlkPSJ0ZXN0Ij4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4K
K1NpbXBsZVRlc3Qud2FpdEZvckV4cGxpY2l0RmluaXNoKCk7Cis8L3NjcmlwdD4KKzwvcHJlPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL3Rlc3Rfc2li
bGluZy1vZmYtZG9tYWluLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogZG9jc2hlbGwvdGVzdC9u
YXZpZ2F0aW9uL3Rlc3Rfc2libGluZy1vZmYtZG9tYWluLmh0bWwKZGlmZiAtTiBkb2NzaGVsbC90
ZXN0L25hdmlnYXRpb24vdGVzdF9zaWJsaW5nLW9mZi1kb21haW4uaHRtbAotLS0gL2Rldi9udWxs
CTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIGRvY3NoZWxsL3Rlc3QvbmF2aWdhdGlvbi90
ZXN0X3NpYmxpbmctb2ZmLWRvbWFpbi5odG1sCTExIEphbiAyMDA4IDAyOjMwOjUwIC0wMDAwCkBA
IC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIvTW9jaGlLaXQvTW9jaGlLaXQuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXN0cy9T
aW1wbGVUZXN0L1NpbXBsZVRlc3QuanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iL3Rlc3RzL1NpbXBsZVRlc3QvRXZlbnRVdGlscy5q
cyI+PC9zY3JpcHQ+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIg
aHJlZj0iL3Rlc3RzL1NpbXBsZVRlc3QvdGVzdC5jc3MiIC8+CisgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iTmF2aWdhdGlvblV0aWxzLmpzIj48L3NjcmlwdD4gICAgICAg
IAorICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICBpZnJhbWUgeyB3aWR0aDogOTAl
OyBoZWlnaHQ6IDUwcHg7IH0KKyAgICA8L3N0eWxlPgorPHNjcmlwdD4KK3dpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbiAoKSB7CisgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3RpdmUnKS5pbm5l
ckhUTUwgPQorICAgICAgJzxpZnJhbWUgc3JjPSJodHRwOi8vdGVzdDEuZXhhbXBsZS5vcmc6ODAv
dGVzdHMvZG9jc2hlbGwvdGVzdC9uYXZpZ2F0aW9uL25hdmlnYXRlLmh0bWwjcGFyZW50LmZyYW1l
c1swXSxsb2NhdGlvbiI+PC9pZnJhbWU+JyArCisgICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly90
ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25hdmlnYXRpb24vbmF2aWdh
dGUuaHRtbCNjaGlsZDEsb3BlbiI+PC9pZnJhbWU+JyArCisgICAgICAnPGlmcmFtZSBzcmM9Imh0
dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25hdmlnYXRpb24v
bmF2aWdhdGUuaHRtbCNjaGlsZDIsZm9ybSI+PC9pZnJhbWU+JyArCisgICAgICAnPGlmcmFtZSBz
cmM9Imh0dHA6Ly90ZXN0MS5leGFtcGxlLm9yZzo4MC90ZXN0cy9kb2NzaGVsbC90ZXN0L25hdmln
YXRpb24vbmF2aWdhdGUuaHRtbCNjaGlsZDMsaHlwZXJsaW5rIj48L2lmcmFtZT4nOworfQorCit4
cGNXYWl0Rm9yRmluaXNoZWRGcmFtZXMoZnVuY3Rpb24oKSB7CisgIGlzQmxhbmsoZnJhbWVzWzBd
LCAiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIG5hdmlnYXRlIG9mZi1kb21haW4gc2libGluZyBieSBz
ZXR0aW5nIGxvY2F0aW9uLiIpOworICBpc0JsYW5rKGZyYW1lc1sxXSwgIlNob3VsZCBub3QgYmUg
YWJsZSB0byBuYXZpZ2F0ZSBvZmYtZG9tYWluIHNpYmxpbmcgYnkgY2FsbGluZyB3aW5kb3cub3Bl
bi4iKTsKKyAgaXNCbGFuayhmcmFtZXNbMl0sICJTaG91bGQgbm90IGJlIGFibGUgdG8gbmF2aWdh
dGUgb2ZmLWRvbWFpbiBzaWJsaW5nIGJ5IHN1Ym1pdHRpbmcgZm9ybS4iKTsKKyAgaXNCbGFuayhm
cmFtZXNbM10sICJTaG91bGQgbm90IGJlIGFibGUgdG8gbmF2aWdhdGUgb2ZmLWRvbWFpbiBzaWJs
aW5nIGJ5IHRhcmdldGVkIGh5cGVybGluay4iKTsKKworICB4cGNDbGVhbnVwV2luZG93cygpOwor
ICBTaW1wbGVUZXN0LmZpbmlzaCgpOworfSwgNCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTQwODA1MiI+TW96aWxsYSBCdWcgNDA4MDUyPC9hPgorPGRpdiBpZD0i
ZnJhbWVzIj4KKzxpZnJhbWUgbmFtZT0iY2hpbGQwIiBzcmM9ImJsYW5rLmh0bWwiPjwvaWZyYW1l
PgorPGlmcmFtZSBuYW1lPSJjaGlsZDEiIHNyYz0iYmxhbmsuaHRtbCI+PC9pZnJhbWU+Cis8aWZy
YW1lIG5hbWU9ImNoaWxkMiIgc3JjPSJibGFuay5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFt
ZT0iY2hpbGQzIiBzcmM9ImJsYW5rLmh0bWwiPjwvaWZyYW1lPgorPC9kaXY+Cis8ZGl2IGlkPSJh
Y3RpdmUiPjwvZGl2PgorPHByZSBpZD0idGVzdCI+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CitTaW1wbGVUZXN0LndhaXRGb3JFeHBsaWNpdEZpbmlzaCgpOworPC9zY3JpcHQ+Cis8
L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21507</attachid>
            <date>2008-06-05 04:36:14 -0700</date>
            <delta_ts>2010-06-10 15:40:40 -0700</delta_ts>
            <desc>More test coverage</desc>
            <filename>navigation-tests.patch</filename>
            <type>text/plain</type>
            <size>67653</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDM0Mzc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMDgtMDYtMDUgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2MzEKKwor
ICAgICAgICBJbXByb3ZlIGNvdmVyYWdlIG9mIG91ciBmcmFtZSBuYXZpZ2F0aW9uIHRlc3QgY2Fz
ZXMuICBUaGlzIHJldmVhbGVkIGEKKyAgICAgICAgYnVnIGluIHBsdWdpbiBuYXZpZ2F0aW9uICh3
ZSBhcmVuJ3Qgc2V0dGluZyB0aGUgb3BlbmVyIHByb3Blcmx5KSwgYnV0CisgICAgICAgIHRoYXQn
cyBwcm9iYWJseSBiZXR0ZXIgYWRkcmVzc2VkIGluIGEgc2VwYXJhdGUgcGF0Y2guCisKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9X
RUQtY2hpbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtY2hpbGQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1BTExPV0VELWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtZGVzY2Vu
ZGFudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtbm90LW9wZW5lci1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRp
b24tQUxMT1dFRC1ub3Qtb3BlbmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1vcGVuZXItY2hpbGQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtb3BlbmVyLWNoaWxkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24t
QUxMT1dFRC1wb3B1cC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1wb3B1cC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZp
Z2F0aW9uLUFMTE9XRUQtc2libGluZy1zYW1lLXBhcmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24t
QUxMT1dFRC1zaWJsaW5nLXNhbWUtcGFyZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNo
aWxkLWZvcm0tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1mb3JtLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLWh5cGVybGluay1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmln
YXRpb24tREVOSUVELXBvcHVwLWNoaWxkLWh5cGVybGluay5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1w
b3B1cC1jaGlsZC1sb2NhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNo
aWxkLWxvY2F0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLW9wZW4tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1vcGVuLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVO
SUVELXBvcHVwLWNoaWxkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVw
LWNoaWxkLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2li
bGluZy1oeXBlcmxpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWh5cGVy
bGluay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1ERU5JRUQtc2libGluZy1sb2NhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJs
aW5nLW9wZW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLW9wZW4uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1ERU5JRUQtc2libGluZy1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklF
RC1zaWJsaW5nLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1saW5rLXRvLW5hdmlnYXRl
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgtcGx1Z2luLXRvLW5hdmlnYXRlLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3Vy
Y2VzL2lmcmFtZS10aGF0LXBlcmZvcm1zLXBhcmVudC1uYXZpZ2F0aW9uLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2Vz
L2lmcmFtZS13aXRoLWlubmVyLWZyYW1lLW9uLWZvcmVpZ24tZG9tYWluLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2Vz
L2lmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvbGliLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFuZ2VkLWlm
cmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWhhcHBlbmVkLmh0bWw6IFJlbW92ZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL29w
ZW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy90YXJnZXQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQt
cGFyZW50LW5hdmlnYXRpb24tY2hhbmdlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQt
bmF2aWdhdGlvbi1jaGFuZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC10YXJnZXRlZC1zdWJmcmFtZS1uYXZp
Z2F0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUt
bmF2aWdhdGlvbi1jaGFuZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi94c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLmh0bWw6IFJlbW92ZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLURFTklFRC10YXJn
ZXRlZC1saW5rLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1ERU5JRUQtdGFyZ2V0ZWQtbGlu
ay1uYXZpZ2F0aW9uLmh0bWw6IFJlbW92ZWQuCisKIDIwMDgtMDYtMDUgIENhbWVyb24gWndhcmlj
aCAgPGN3endhcmljaEB1d2F0ZXJsb28uY2E+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVq
LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
bmF2aWdhdGlvbi1BTExPV0VELWNoaWxkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFM
TE9XRUQtY2hpbGQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWNoaWxk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorTmF2aWdhdGluZyBm
cmFtZXMuCitXaW5kb3cgY291bnQ6IDEKK0RvbmUuCisgICAgCisKKworLS0tLS0tLS0KK0ZyYW1l
OiAnY2hpbGQwJworLS0tLS0tLS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRvbmUuCisKKy0t
LS0tLS0tCitGcmFtZTogJ2NoaWxkMScKKy0tLS0tLS0tCisxMjcuMC4wLjEKKworTmF2aWdhdGlv
biBkb25lLgorCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDInCistLS0tLS0tLQorMTI3LjAuMC4x
CisKK05hdmlnYXRpb24gZG9uZS4KKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQzJworLS0tLS0t
LS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRvbmUuCisKKy0tLS0tLS0tCitGcmFtZTogJ2No
aWxkNCcKKy0tLS0tLS0tCisxMjcuMC4wLjEKKworTmF2aWdhdGlvbiBkb25lLgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1B
TExPV0VELWNoaWxkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWNoaWxkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQoNSk7CisKK25hdlV0
aWxzLm9ucmVhZHkgPSBmdW5jdGlvbiAoKSB7CisgIG5hdlV0aWxzLmxvZygnTmF2aWdhdGluZyBm
cmFtZXMuJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlMb2NhdGlvbihmcmFtZXNbMF0pOworICBu
YXZVdGlscy5uYXZpZ2F0ZUJ5T3BlbignY2hpbGQxJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlG
b3JtKCdjaGlsZDInKTsKKyAgbmF2VXRpbHMubmF2aWdhdGVCeUh5cGVybGluaygnY2hpbGQzJyk7
CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlQbHVnaW4oJ2NoaWxkNCcpOworfTsKKworbmF2VXRpbHMu
b25kb25lID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2dXaW5kb3dDb3VudCgpOworICBu
YXZVdGlscy5sb2coJ0RvbmUuJyk7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzxpZnJhbWUgbmFtZT0i
Y2hpbGQwIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDEi
IHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMiIgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9y
ZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQzIiBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0
bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDQiIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtZGVzY2VuZGFudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELWRlc2NlbmRhbnQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcwIEBACitOYXZpZ2F0aW5nIGZyYW1lcy4KK1dpbmRvdyBjb3Vu
dDogMQorRG9uZS4KKyAgICAKKworCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDAnCistLS0tLS0t
LQorbG9jYWxob3N0OjgwMDAKKworCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDBfY2hpbGQwJwor
LS0tLS0tLS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRvbmUuCisKKy0tLS0tLS0tCitGcmFt
ZTogJ2NoaWxkMScKKy0tLS0tLS0tCitsb2NhbGhvc3Q6ODAwMAorCisKKy0tLS0tLS0tCitGcmFt
ZTogJ2NoaWxkMV9jaGlsZDAnCistLS0tLS0tLQorMTI3LjAuMC4xCisKK05hdmlnYXRpb24gZG9u
ZS4KKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQyJworLS0tLS0tLS0KK2xvY2FsaG9zdDo4MDAw
CisKKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQyX2NoaWxkMCcKKy0tLS0tLS0tCisxMjcuMC4w
LjEKKworTmF2aWdhdGlvbiBkb25lLgorCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDMnCistLS0t
LS0tLQorbG9jYWxob3N0OjgwMDAKKworCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDNfY2hpbGQw
JworLS0tLS0tLS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRvbmUuCisKKy0tLS0tLS0tCitG
cmFtZTogJ2NoaWxkNCcKKy0tLS0tLS0tCitsb2NhbGhvc3Q6ODAwMAorCisKKy0tLS0tLS0tCitG
cmFtZTogJ2NoaWxkNF9jaGlsZDAnCistLS0tLS0tLQorMTI3LjAuMC4xCisKK05hdmlnYXRpb24g
ZG9uZS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL25hdmlnYXRpb24tQUxMT1dFRC1kZXNjZW5kYW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1B
TExPV0VELWRlc2NlbmRhbnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1kZXNjZW5k
YW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRp
bHMuc2V0X2ZyYW1lX2NvdW50KDUpOworCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkg
eworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpbmcgZnJhbWVzLicpOworICBuYXZVdGlscy5uYXZp
Z2F0ZUJ5TG9jYXRpb24oZnJhbWVzWzBdLmZyYW1lc1swXSk7CisgIG5hdlV0aWxzLm5hdmlnYXRl
QnlPcGVuKCdjaGlsZDFfY2hpbGQwJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlGb3JtKCdjaGls
ZDJfY2hpbGQwJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlIeXBlcmxpbmsoJ2NoaWxkM19jaGls
ZDAnKTsKKyAgbmF2VXRpbHMubmF2aWdhdGVCeVBsdWdpbignY2hpbGQ0X2NoaWxkMCcpOworfTsK
KworbmF2VXRpbHMub25kb25lID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2dXaW5kb3dD
b3VudCgpOworICBuYXZVdGlscy5sb2coJ0RvbmUuJyk7CisgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfTsK
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzxp
ZnJhbWUgbmFtZT0iY2hpbGQwIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS5odG1sI3JlYWR5Lmh0bWwiPjwvaWZyYW1l
PgorPGlmcmFtZSBuYW1lPSJjaGlsZDEiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLmh0bWwjcmVhZHkuaHRtbCI+PC9p
ZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMiIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUuaHRtbCNyZWFkeS5odG1s
Ij48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQzIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS5odG1sI3JlYWR5
Lmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDQiIHNyYz0iaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLmh0bWwj
cmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQt
bm90LW9wZW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELW5vdC1vcGVu
ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELW5vdC1vcGVuZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK05hdmlnYXRpbmcgZnJhbWVz
LgorV2luZG93IGNvdW50OiA5CitEb25lLgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtbm90LW9wZW5lci5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1ub3Qtb3BlbmVyLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZp
Z2F0aW9uLUFMTE9XRUQtbm90LW9wZW5lci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saWIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK25hdlV0aWxzLnNldF9mcmFtZV9jb3VudCg0KTsKKworbmF2VXRpbHMu
b25yZWFkeSA9IGZ1bmN0aW9uICgpIHsKKyAgbmF2VXRpbHMubG9nKCdOYXZpZ2F0aW5nIGZyYW1l
cy4nKTsKKworICAvLyBDYW4ndCByZWFjaCBpbnRvIHBvcHVwMCB0byBuYXZpZ2F0ZSBieSBsb2Nh
dGlvbi4KKyAgLy9uYXZVdGlscy5uYXZpZ2F0ZUJ5TG9jYXRpb24ocG9wdXAwKTsKKworICBuYXZV
dGlscy5uYXZpZ2F0ZUJ5T3Blbignd2luZG93MV9wb3B1cDAnKTsKKyAgbmF2VXRpbHMubmF2aWdh
dGVCeUZvcm0oJ3dpbmRvdzJfcG9wdXAwJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlIeXBlcmxp
bmsoJ3dpbmRvdzNfcG9wdXAwJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlQbHVnaW4oJ3dpbmRv
dzRfcG9wdXAwJyk7Cit9OworCituYXZVdGlscy5vbmRvbmUgPSBmdW5jdGlvbiAoKSB7CisgIG5h
dlV0aWxzLmxvZ1dpbmRvd0NvdW50KCk7CisgIG5hdlV0aWxzLmxvZygnRG9uZS4nKTsKKyAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9J2Nv
bnNvbGUnPjwvZGl2PgorPHNjcmlwdD4KKy8vIENhbid0IHBlcmZvcm0gbmF2aWdhdGVCeUxvY2F0
aW9uIHRlc3QuCisvLyB2YXIgcG9wdXAwID0gd2luZG93Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL29wZW4uaHRtbCNyZWFkeS5o
dG1sIiwgIndpbmRvdzAiKTsKK3ZhciBwb3B1cDEgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvb3Blbi5odG1sI3Jl
YWR5Lmh0bWwiLCAid2luZG93MSIpOwordmFyIHBvcHVwMiA9IHdpbmRvdy5vcGVuKCJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9vcGVuLmh0
bWwjcmVhZHkuaHRtbCIsICJ3aW5kb3cyIik7Cit2YXIgcG9wdXAzID0gd2luZG93Lm9wZW4oImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL29w
ZW4uaHRtbCNyZWFkeS5odG1sIiwgIndpbmRvdzMiKTsKK3ZhciBwb3B1cDQgPSB3aW5kb3cub3Bl
bigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJj
ZXMvb3Blbi5odG1sI3JlYWR5Lmh0bWwiLCAid2luZG93NCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtb3BlbmVyLWNoaWxkLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLUFMTE9XRUQtb3BlbmVyLWNoaWxkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25h
dmlnYXRpb24tQUxMT1dFRC1vcGVuZXItY2hpbGQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM5IEBACitOYXZpZ2F0aW5nIGZyYW1lcy4KK1dpbmRvdyBjb3VudDogNgorRG9u
ZS4KKyAgICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQwJworLS0tLS0tLS0KKzEyNy4wLjAu
MQorCitOYXZpZ2F0aW9uIGRvbmUuCisKKy0tLS0tLS0tCitGcmFtZTogJ2NoaWxkMScKKy0tLS0t
LS0tCisxMjcuMC4wLjEKKworTmF2aWdhdGlvbiBkb25lLgorCistLS0tLS0tLQorRnJhbWU6ICdj
aGlsZDInCistLS0tLS0tLQorMTI3LjAuMC4xCisKK05hdmlnYXRpb24gZG9uZS4KKworLS0tLS0t
LS0KK0ZyYW1lOiAnY2hpbGQzJworLS0tLS0tLS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRv
bmUuCisKKy0tLS0tLS0tCitGcmFtZTogJ2NoaWxkNCcKKy0tLS0tLS0tCisxMjcuMC4wLjEKKwor
TmF2aWdhdGlvbiBkb25lLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELW9wZW5lci1jaGlsZC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L25hdmlnYXRpb24tQUxMT1dFRC1vcGVuZXItY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24t
QUxMT1dFRC1vcGVuZXItY2hpbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQoMTApOworCituYXZVdGlscy5vbnJl
YWR5ID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpbmcgZnJhbWVzLicp
OworCisgIG5hdlV0aWxzLnNldF9mcmFtZV9jb3VudCg1KTsKKworICBuYXZVdGlscy5kb05hdmln
YXRlKHBvcHVwMCwgJ2xvY2F0aW9uJywgJ3dpbmRvdy5vcGVuZXIuZnJhbWVzWzBdJyk7CisgIG5h
dlV0aWxzLmRvTmF2aWdhdGUocG9wdXAxLCAnb3BlbicsICdjaGlsZDEnKTsKKyAgbmF2VXRpbHMu
ZG9OYXZpZ2F0ZShwb3B1cDIsICdmb3JtJywgJ2NoaWxkMicpOworICBuYXZVdGlscy5kb05hdmln
YXRlKHBvcHVwMywgJ2h5cGVybGluaycsICdjaGlsZDMnKTsKKyAgbmF2VXRpbHMuZG9OYXZpZ2F0
ZShwb3B1cDQsICdwbHVnaW4nLCAnY2hpbGQ0Jyk7Cit9OworCituYXZVdGlscy5vbmRvbmUgPSBm
dW5jdGlvbiAoKSB7CisgIG5hdlV0aWxzLmxvZ1dpbmRvd0NvdW50KCk7CisgIG5hdlV0aWxzLmxv
ZygnRG9uZS4nKTsKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBwb3B1cDAgPSB3
aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvcmVhZHkuaHRtbCIsICJ3aW5kb3cwIik7Cit2YXIgcG9wdXAxID0gd2luZG93
Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL3JlYWR5Lmh0bWwiLCAid2luZG93MSIpOwordmFyIHBvcHVwMiA9IHdpbmRvdy5vcGVu
KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNl
cy9yZWFkeS5odG1sIiwgIndpbmRvdzIiKTsKK3ZhciBwb3B1cDMgPSB3aW5kb3cub3BlbigiaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVh
ZHkuaHRtbCIsICJ3aW5kb3czIik7Cit2YXIgcG9wdXA0ID0gd2luZG93Lm9wZW4oImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0
bWwiLCAid2luZG93NCIpOworPC9zY3JpcHQ+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMCIgc3JjPSJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9y
ZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQxIiBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0
bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDIiIHNyYz0iaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9p
ZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMyIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4K
KzxpZnJhbWUgbmFtZT0iY2hpbGQ0IiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELXBvcHVwLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZp
Z2F0aW9uLUFMTE9XRUQtcG9wdXAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExP
V0VELXBvcHVwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorTmF2
aWdhdGluZyBmcmFtZXMuCitOYXZpZ2F0aW9uIGNvbXBsZXRlLgorV2luZG93IGNvdW50OiA2Citw
b3B1cDA6IHRydWUKK3BvcHVwMTogdHJ1ZQorcG9wdXAyOiB0cnVlCitwb3B1cDM6IHRydWUKK3Bv
cHVwNDogdHJ1ZQorRG9uZS4KKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1BTExPV0VELXBvcHVwLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1BTExPV0VELXBvcHVwLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtcG9w
dXAuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CituYXZVdGls
cy5zZXRfZnJhbWVfY291bnQoNSk7CisKK25hdlV0aWxzLm9ucmVhZHkgPSBmdW5jdGlvbiAoKSB7
CisgIG5hdlV0aWxzLmxvZygnTmF2aWdhdGluZyBmcmFtZXMuJyk7CisgIG5hdlV0aWxzLm5hdmln
YXRlQnlMb2NhdGlvbihwb3B1cDApOworICBuYXZVdGlscy5uYXZpZ2F0ZUJ5T3Blbignd2luZG93
MScpOworICBuYXZVdGlscy5uYXZpZ2F0ZUJ5Rm9ybSgnd2luZG93MicpOworICBuYXZVdGlscy5u
YXZpZ2F0ZUJ5SHlwZXJsaW5rKCd3aW5kb3czJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlQbHVn
aW4oJ3dpbmRvdzQnKTsKK307CisKK25hdlV0aWxzLm9uZG9uZSA9IGZ1bmN0aW9uICgpIHsKKyAg
bmF2VXRpbHMubG9nKCdOYXZpZ2F0aW9uIGNvbXBsZXRlLicpOworICBuYXZVdGlscy5sb2dXaW5k
b3dDb3VudCgpOworICBuYXZVdGlscy5sb2coJ3BvcHVwMDogJyArIG5hdlV0aWxzLmNhbkFjY2Vz
cyhwb3B1cDApKTsKKyAgbmF2VXRpbHMubG9nKCdwb3B1cDE6ICcgKyBuYXZVdGlscy5jYW5BY2Nl
c3MocG9wdXAxKSk7CisgIG5hdlV0aWxzLmxvZygncG9wdXAyOiAnICsgbmF2VXRpbHMuY2FuQWNj
ZXNzKHBvcHVwMikpOworICBuYXZVdGlscy5sb2coJ3BvcHVwMzogJyArIG5hdlV0aWxzLmNhbkFj
Y2Vzcyhwb3B1cDMpKTsKKyAgbmF2VXRpbHMubG9nKCdwb3B1cDQ6ICcgKyBuYXZVdGlscy5jYW5B
Y2Nlc3MocG9wdXA0KSk7CisKKyAgbmF2VXRpbHMubG9nKCdEb25lLicpOworICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0nY29uc29sZSc+
PC9kaXY+Cis8c2NyaXB0PgordmFyIHBvcHVwMCA9IHdpbmRvdy5vcGVuKCJodHRwOi8vbG9jYWxo
b3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIiwg
IndpbmRvdzAiKTsKK3ZhciBwb3B1cDEgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCIsICJ3aW5k
b3cxIik7Cit2YXIgcG9wdXAyID0gd2luZG93Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwiLCAid2luZG93MiIp
OwordmFyIHBvcHVwMyA9IHdpbmRvdy5vcGVuKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIiwgIndpbmRvdzMiKTsKK3Zh
ciBwb3B1cDQgPSB3aW5kb3cub3BlbigiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCIsICJ3aW5kb3c0Iik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tQUxMT1dFRC1zaWJsaW5nLXNhbWUtcGFyZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtc2libGluZy1zYW1lLXBhcmVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLUFMTE9XRUQtc2libGluZy1zYW1lLXBh
cmVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzUgQEAKK05hdmlnYXRp
bmcgZnJhbWVzLgorV2luZG93IGNvdW50OiAxCitEb25lLgorICAgICAgICAgIAorCistLS0tLS0t
LQorRnJhbWU6ICdjaGlsZDAnCistLS0tLS0tLQorMTI3LjAuMC4xCisKK05hdmlnYXRpb24gZG9u
ZS4KKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQxJworLS0tLS0tLS0KKzEyNy4wLjAuMQorCitO
YXZpZ2F0aW9uIGRvbmUuCisKKy0tLS0tLS0tCitGcmFtZTogJ2NoaWxkMicKKy0tLS0tLS0tCisx
MjcuMC4wLjEKKworTmF2aWdhdGlvbiBkb25lLgorCistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDMn
CistLS0tLS0tLQorMTI3LjAuMC4xCisKK05hdmlnYXRpb24gZG9uZS4KKworLS0tLS0tLS0KK0Zy
YW1lOiAnY2hpbGQ0JworLS0tLS0tLS0KKzEyNy4wLjAuMQorCitOYXZpZ2F0aW9uIGRvbmUuCisK
Ky0tLS0tLS0tCitGcmFtZTogJ2FjdGl2ZTAnCistLS0tLS0tLQorMTI3LjAuMC4xOjgwMDAKKwor
V2FpdGluZyBmb3IgbmF2aWdhdGlvbiBjb21tYW5kcy4KKworLS0tLS0tLS0KK0ZyYW1lOiAnYWN0
aXZlMScKKy0tLS0tLS0tCisxMjcuMC4wLjE6ODAwMAorCitXYWl0aW5nIGZvciBuYXZpZ2F0aW9u
IGNvbW1hbmRzLgorCistLS0tLS0tLQorRnJhbWU6ICdhY3RpdmUyJworLS0tLS0tLS0KKzEyNy4w
LjAuMTo4MDAwCisKK1dhaXRpbmcgZm9yIG5hdmlnYXRpb24gY29tbWFuZHMuCisKKworLS0tLS0t
LS0KK0ZyYW1lOiAnYWN0aXZlMycKKy0tLS0tLS0tCisxMjcuMC4wLjE6ODAwMAorCitXYWl0aW5n
IGZvciBuYXZpZ2F0aW9uIGNvbW1hbmRzLgorCistLS0tLS0tLQorRnJhbWU6ICdhY3RpdmU0Jwor
LS0tLS0tLS0KKzEyNy4wLjAuMTo4MDAwCisKK1dhaXRpbmcgZm9yIG5hdmlnYXRpb24gY29tbWFu
ZHMuIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vbmF2aWdhdGlvbi1BTExPV0VELXNpYmxpbmctc2FtZS1wYXJlbnQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZp
Z2F0aW9uLUFMTE9XRUQtc2libGluZy1zYW1lLXBhcmVudC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlv
bi1BTExPV0VELXNpYmxpbmctc2FtZS1wYXJlbnQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQoMTApOworCituYXZV
dGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpbmcg
ZnJhbWVzLicpOworCisgIG5hdlV0aWxzLnNldF9mcmFtZV9jb3VudCg1KTsKKworICBuYXZVdGls
cy5kb05hdmlnYXRlKGZyYW1lc1snYWN0aXZlMCddLCAnbG9jYXRpb24nLCAnd2luZG93LnRvcC5m
cmFtZXNbMF0nKTsKKyAgbmF2VXRpbHMuZG9OYXZpZ2F0ZShmcmFtZXNbJ2FjdGl2ZTEnXSwgJ29w
ZW4nLCAnY2hpbGQxJyk7CisgIG5hdlV0aWxzLmRvTmF2aWdhdGUoZnJhbWVzWydhY3RpdmUyJ10s
ICdmb3JtJywgJ2NoaWxkMicpOworICBuYXZVdGlscy5kb05hdmlnYXRlKGZyYW1lc1snYWN0aXZl
MyddLCAnaHlwZXJsaW5rJywgJ2NoaWxkMycpOworICBuYXZVdGlscy5kb05hdmlnYXRlKGZyYW1l
c1snYWN0aXZlNCddLCAncGx1Z2luJywgJ2NoaWxkNCcpOworfTsKKworbmF2VXRpbHMub25kb25l
ID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2dXaW5kb3dDb3VudCgpOworICBuYXZVdGls
cy5sb2coJ0RvbmUuJyk7CisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzxpZnJhbWUgbmFtZT0iY2hpbGQw
IiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL3JlYWR5Lmh0bWwiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDEiIHNyYz0i
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
cmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMiIgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5o
dG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iY2hpbGQzIiBzcmM9Imh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwiPjwv
aWZyYW1lPgorPGlmcmFtZSBuYW1lPSJjaGlsZDQiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+
CisKKzxpZnJhbWUgbmFtZT0iYWN0aXZlMCIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4KKzxp
ZnJhbWUgbmFtZT0iYWN0aXZlMSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUg
bmFtZT0iYWN0aXZlMiIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0i
YWN0aXZlMyIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0
aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iYWN0aXZl
NCIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9yZWFkeS5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24t
REVOSUVELXBvcHVwLWNoaWxkLWZvcm0tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVO
SUVELXBvcHVwLWNoaWxkLWZvcm0tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5J
RUQtcG9wdXAtY2hpbGQtZm9ybS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTIgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0
IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFuZ2UgZm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5
Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLWZvcm0uaHRtbC4K
KworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8g
aW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRt
bCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtZm9ybS5odG1sLgorCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nl
c3MgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQt
cG9wdXAtY2hpbGQtZm9ybS5odG1sLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3Qg
bWF0Y2guCisKK05hdmlnYXRpbmcgZnJhbWUuCitOYXZpZ2F0aW9uIGNvbXBsZXRlLgorV2luZG93
IGNvdW50OiAzCitwb3B1cDI6IGZhbHNlCitEb25lLgorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1j
aGlsZC1mb3JtLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtZm9ybS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtZm9ybS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9saWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK25hdlV0aWxzLnNldF9mcmFtZV9j
b3VudCgxKTsKKworbmF2VXRpbHMub25yZWFkeSA9IGZ1bmN0aW9uICgpIHsKKyAgbmF2VXRpbHMu
bG9nKCdOYXZpZ2F0aW5nIGZyYW1lLicpOworCisgIG5hdlV0aWxzLm5hdmlnYXRlQnlGb3JtKCd3
aW5kb3cyX2NoaWxkMCcpOworfTsKKworbmF2VXRpbHMub25kb25lID0gZnVuY3Rpb24gKCkgewor
ICBuYXZVdGlscy5sb2coJ05hdmlnYXRpb24gY29tcGxldGUuJyk7CisgIG5hdlV0aWxzLmxvZ1dp
bmRvd0NvdW50KCk7CisgIG5hdlV0aWxzLmxvZygncG9wdXAyOiAnICsgbmF2VXRpbHMuY2FuQWNj
ZXNzKHBvcHVwMi5mcmFtZXNbMF0pKTsKKyAgbmF2VXRpbHMubG9nKCdEb25lLicpOworICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0nY29u
c29sZSc+PC9kaXY+Cis8c2NyaXB0PgordmFyIHBvcHVwMiA9IHdpbmRvdy5vcGVuKCJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUu
aHRtbCNyZWFkeS5odG1sIiwgIndpbmRvdzIiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
bmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtaHlwZXJsaW5rLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1oeXBlcmxpbmstZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtaHlwZXJsaW5rLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6
IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUgYSBuYXZpZ2F0aW9uIGNoYW5n
ZSBmb3IgZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5J
RUQtcG9wdXAtY2hpbGQtaHlwZXJsaW5rLmh0bWwuCisKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFu
Z2UgZm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVO
SUVELXBvcHVwLWNoaWxkLWh5cGVybGluay5odG1sLgorCitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBhY2Nlc3MgZnJhbWUgd2l0aCBVUkwgaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVh
ZHkuaHRtbCBmcm9tIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtaHlwZXJsaW5r
Lmh0bWwuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC4KKworTmF2aWdh
dGluZyBmcmFtZS4KK05hdmlnYXRpb24gY29tcGxldGUuCitXaW5kb3cgY291bnQ6IDMKK3BvcHVw
MzogZmFsc2UKK0RvbmUuCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLWh5cGVybGluay5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLWh5cGVybGluay5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtaHlwZXJsaW5rLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2xpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRpbHMuc2V0X2ZyYW1lX2Nv
dW50KDEpOworCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5s
b2coJ05hdmlnYXRpbmcgZnJhbWUuJyk7CisgIG5hdlV0aWxzLm5hdmlnYXRlQnlIeXBlcmxpbmso
J3dpbmRvdzNfY2hpbGQwJyk7Cit9OworCituYXZVdGlscy5vbmRvbmUgPSBmdW5jdGlvbiAoKSB7
CisgIG5hdlV0aWxzLmxvZygnTmF2aWdhdGlvbiBjb21wbGV0ZS4nKTsKKyAgbmF2VXRpbHMubG9n
V2luZG93Q291bnQoKTsKKyAgbmF2VXRpbHMubG9nKCdwb3B1cDM6ICcgKyBuYXZVdGlscy5jYW5B
Y2Nlc3MocG9wdXAzLmZyYW1lc1swXSkpOworICBuYXZVdGlscy5sb2coJ0RvbmUuJyk7CisgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSdj
b25zb2xlJz48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgcG9wdXAzID0gd2luZG93Lm9wZW4oImh0dHA6
Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFt
ZS5odG1sI3JlYWR5Lmh0bWwiLCAid2luZG93MyIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1sb2NhdGlvbi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtbG9jYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtbG9jYXRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBV
bnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFuZ2Ug
Zm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVE
LXBvcHVwLWNoaWxkLWxvY2F0aW9uLmh0bWwuCisKK05hdmlnYXRpbmcgZnJhbWUuCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9u
LURFTklFRC1wb3B1cC1jaGlsZC1sb2NhdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVE
LXBvcHVwLWNoaWxkLWxvY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1
cC1jaGlsZC1sb2NhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9saWIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK25hdlV0aWxzLnNldF9mcmFtZV9jb3VudCgxKTsKKworbmF2VXRpbHMub25yZWFkeSA9
IGZ1bmN0aW9uICgpIHsKKyAgbmF2VXRpbHMubG9nKCdOYXZpZ2F0aW5nIGZyYW1lLicpOworICBu
YXZVdGlscy5uYXZpZ2F0ZUJ5TG9jYXRpb24ocG9wdXAwLmZyYW1lc1swXSk7CisKKyAgLy8gVGhl
cmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgZ29vZCB3YXkgdG8gdGVsbCB0aGF0IHRoZSBhc3luY2hy
b25vdXMKKyAgLy8gbmF2aWdhdGlvbiBoYXMgb2NjdXJyZWQgaW4gdGhpcyBjYXNlLiAgVGhlIGJl
c3Qgd2UgY2FuIGRvIGlzIHRvCisgIC8vIGhvcGUgaXQgd2lsbCBoYXBwZW4gaW4gdGhlIG5leHQg
NTBtcy4KKyAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKKyAgfSwgNTApOworfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlk
PSdjb25zb2xlJz48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgcG9wdXAwID0gd2luZG93Lm9wZW4oImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lm
cmFtZS5odG1sI3JlYWR5Lmh0bWwiLCAid2luZG93MCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1vcGVuLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1vcGVuLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLW9wZW4tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2
YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFuZ2UgZm9yIGZyYW1l
IHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
cmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNo
aWxkLW9wZW4uaHRtbC4KKworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2Ny
aXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFt
ZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L25hdmlnYXRpb24tREVOSUVELXBvcHVwLWNoaWxkLW9wZW4uaHRtbC4gRG9tYWlucywgcHJvdG9j
b2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLgorCitOYXZpZ2F0aW5nIGZyYW1lLgorTmF2aWdhdGlv
biBjb21wbGV0ZS4KK1dpbmRvdyBjb3VudDogMworcG9wdXAxOiBmYWxzZQorRG9uZS4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRp
b24tREVOSUVELXBvcHVwLWNoaWxkLW9wZW4uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1w
b3B1cC1jaGlsZC1vcGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGls
ZC1vcGVuLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2
VXRpbHMuc2V0X2ZyYW1lX2NvdW50KDEpOworCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24g
KCkgeworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpbmcgZnJhbWUuJyk7CisgIG5hdlV0aWxzLm5h
dmlnYXRlQnlPcGVuKCd3aW5kb3cxX2NoaWxkMCcpOworfTsKKworbmF2VXRpbHMub25kb25lID0g
ZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpb24gY29tcGxldGUuJyk7Cisg
IG5hdlV0aWxzLmxvZ1dpbmRvd0NvdW50KCk7CisgIG5hdlV0aWxzLmxvZygncG9wdXAxOiAnICsg
bmF2VXRpbHMuY2FuQWNjZXNzKHBvcHVwMS5mcmFtZXNbMF0pKTsKKyAgbmF2VXRpbHMubG9nKCdE
b25lLicpOworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Cis8c2NyaXB0PgordmFyIHBvcHVwMSA9IHdpbmRv
dy5vcGVuKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9pZnJhbWUuaHRtbCNyZWFkeS5odG1sIiwgIndpbmRvdzEiKTsKKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtcGx1Z2luLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1wb3B1cC1jaGlsZC1wbHVnaW4tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9m
cmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtcGx1Z2luLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24g
Y2hhbmdlIGZvciBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9u
LURFTklFRC1wb3B1cC1jaGlsZC1wbHVnaW4uaHRtbC4KKworTmF2aWdhdGluZyBmcmFtZS4KKwpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2
aWdhdGlvbi1ERU5JRUQtcG9wdXAtY2hpbGQtcGx1Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1E
RU5JRUQtcG9wdXAtY2hpbGQtcGx1Z2luLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1w
b3B1cC1jaGlsZC1wbHVnaW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQoMSk7CisKK25hdlV0aWxzLm9ucmVhZHkg
PSBmdW5jdGlvbiAoKSB7CisgIG5hdlV0aWxzLmxvZygnTmF2aWdhdGluZyBmcmFtZS4nKTsKKyAg
Ly8gVE9ETzogTG9va3MgbGlrZSBwbHVnaW5zIGFyZW4ndCBjb3JyZWN0bHkgc2V0dGluZyB3aW5k
b3cub3BlbmVyCisgIG5hdlV0aWxzLm5hdmlnYXRlQnlQbHVnaW4oJ3dpbmRvdzRfY2hpbGQwJyk7
CisKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIHZhciBpbnRlcnZh
bCA9IHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgIGlmIChsYXlvdXRUZXN0
Q29udHJvbGxlci53aW5kb3dDb3VudCgpID4gMikgeworICAgICAgICAvLyBUaGUgbmF2aWdhdGlv
biBoYXMgb2NjdXJlZC4gIFdlJ3JlIGRvbmUuCisgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFs
KGludGVydmFsKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgfQorICAgIH0sIDE1KTsKKyAgfQorfTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSdjb25zb2xlJz48L2Rpdj4KKzxzY3JpcHQ+Cit2YXIgcG9wdXA0ID0gd2luZG93
Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL2lmcmFtZS5odG1sI3JlYWR5Lmh0bWwiLCAid2luZG93NCIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0tZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctZm9ybS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWZvcm0tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIzIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFT
Y3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24gY2hhbmdlIGZvciBmcmFtZSB3
aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9yZWFkeS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbC4KKworQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlh
dGUgYSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCBmcm9t
IGZyYW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmln
YXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwuCisKK05hdmlnYXRpbmcgZnJhbWUuCitXaW5kb3cg
Y291bnQ6IDIKK0RvbmUuCisgCisKKy0tLS0tLS0tCitGcmFtZTogJ2NoaWxkMicKKy0tLS0tLS0t
CisxMjcuMC4wLjE6ODAwMAorCitXYWl0aW5nIGZvciBuYXZpZ2F0aW9uIGNvbW1hbmRzLgorCist
LS0tLS0tLQorRnJhbWU6ICdhY3RpdmUyJworLS0tLS0tLS0KK2xvY2FsaG9zdDo4MDAwCisKK1dh
aXRpbmcgZm9yIG5hdmlnYXRpb24gY29tbWFuZHMuCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmct
Zm9ybS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctZm9ybS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy1mb3JtLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpYi5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRpbHMuc2V0X2ZyYW1lX2NvdW50KDIpOworCitu
YXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkgeworICBuYXZVdGlscy5sb2coJ05hdmlnYXRp
bmcgZnJhbWUuJyk7CisgIG5hdlV0aWxzLnNldF9mcmFtZV9jb3VudCgxKTsKKyAgbmF2VXRpbHMu
ZG9OYXZpZ2F0ZShmcmFtZXNbJ2FjdGl2ZTInXSwgJ2Zvcm0nLCAnY2hpbGQyJyk7Cit9OworCitu
YXZVdGlscy5vbmRvbmUgPSBmdW5jdGlvbiAoKSB7CisgIG5hdlV0aWxzLmxvZ1dpbmRvd0NvdW50
KCk7CisgIG5hdlV0aWxzLmxvZygnRG9uZS4nKTsKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9OworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9J2NvbnNvbGUnPjwvZGl2PgorPGlmcmFt
ZSBuYW1lPSJjaGlsZDIiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9
ImFjdGl2ZTIiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZp
Z2F0aW9uLURFTklFRC1zaWJsaW5nLWh5cGVybGluay1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdh
dGlvbi1ERU5JRUQtc2libGluZy1oeXBlcmxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdh
dGlvbi1ERU5JRUQtc2libGluZy1oeXBlcmxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIyIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24gY2hhbmdlIGZvciBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291
cmNlcy9yZWFkeS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbC4KKworQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE6IFVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gaW5pdGlhdGUg
YSBuYXZpZ2F0aW9uIGNoYW5nZSBmb3IgZnJhbWUgd2l0aCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCBmcm9tIGZy
YW1lIHdpdGggVVJMIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwuCisKK05hdmlnYXRpbmcgZnJhbWUuCitXaW5kb3cgY291
bnQ6IDIKK0RvbmUuCisgCisKKy0tLS0tLS0tCitGcmFtZTogJ2NoaWxkMycKKy0tLS0tLS0tCisx
MjcuMC4wLjE6ODAwMAorCitXYWl0aW5nIGZvciBuYXZpZ2F0aW9uIGNvbW1hbmRzLgorCistLS0t
LS0tLQorRnJhbWU6ICdhY3RpdmUzJworLS0tLS0tLS0KK2xvY2FsaG9zdDo4MDAwCisKK1dhaXRp
bmcgZm9yIG5hdmlnYXRpb24gY29tbWFuZHMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWh5cGVy
bGluay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctaHlwZXJsaW5rLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWh5cGVybGluay5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9saWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK25hdlV0aWxzLnNldF9mcmFtZV9jb3Vu
dCgyKTsKKworbmF2VXRpbHMub25yZWFkeSA9IGZ1bmN0aW9uICgpIHsKKyAgbmF2VXRpbHMubG9n
KCdOYXZpZ2F0aW5nIGZyYW1lLicpOworICBuYXZVdGlscy5zZXRfZnJhbWVfY291bnQoMSk7Cisg
IG5hdlV0aWxzLmRvTmF2aWdhdGUoZnJhbWVzWydhY3RpdmUzJ10sICdoeXBlcmxpbmsnLCAnY2hp
bGQzJyk7Cit9OworCituYXZVdGlscy5vbmRvbmUgPSBmdW5jdGlvbiAoKSB7CisgIG5hdlV0aWxz
LmxvZ1dpbmRvd0NvdW50KCk7CisgIG5hdlV0aWxzLmxvZygnRG9uZS4nKTsKKyAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlE
b25lKCk7Cit9OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9J2NvbnNvbGUn
PjwvZGl2PgorPGlmcmFtZSBuYW1lPSJjaGlsZDMiIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+
Cis8aWZyYW1lIG5hbWU9ImFjdGl2ZTMiIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbCI+PC9pZnJhbWU+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxvY2F0aW9uLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxvY2F0aW9uLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctbG9jYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5z
YWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24gY2hhbmdlIGZv
ciBmcmFtZSB3aXRoIFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRt
bC4KKworTmF2aWdhdGluZyBmcmFtZS4KKyAKKworLS0tLS0tLS0KK0ZyYW1lOiAnY2hpbGQwJwor
LS0tLS0tLS0KKzEyNy4wLjAuMTo4MDAwCisKK1dhaXRpbmcgZm9yIG5hdmlnYXRpb24gY29tbWFu
ZHMuCisKKy0tLS0tLS0tCitGcmFtZTogJ2FjdGl2ZTAnCistLS0tLS0tLQorbG9jYWxob3N0Ojgw
MDAKKworV2FpdGluZyBmb3IgbmF2aWdhdGlvbiBjb21tYW5kcy4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNp
YmxpbmctbG9jYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxvY2F0
aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLWxvY2F0aW9uLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2xpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRpbHMuc2V0X2Zy
YW1lX2NvdW50KDIpOworCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkgeworICBuYXZV
dGlscy5sb2coJ05hdmlnYXRpbmcgZnJhbWUuJyk7CisgIG5hdlV0aWxzLmRvTmF2aWdhdGUoZnJh
bWVzWydhY3RpdmUwJ10sICdsb2NhdGlvbicsICd3aW5kb3cudG9wLmZyYW1lc1swXScpOworCisg
IC8vIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGdvb2Qgd2F5IHRvIHRlbGwgdGhhdCB0aGUg
YXN5bmNocm9ub3VzCisgIC8vIG5hdmlnYXRpb24gaGFzIG9jY3VycmVkIGluIHRoaXMgY2FzZS4g
IFRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0bworICAvLyBob3BlIGl0IHdpbGwgaGFwcGVuIGluIHRo
ZSBuZXh0IDUwbXMuCisgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgIH0sIDUwKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMCIgc3JjPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFk
eS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iYWN0aXZlMCIgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5odG1s
Ij48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctb3Bl
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy1vcGVuLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
ZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctb3Blbi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAx
OiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFu
Z2UgZm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9mcmFt
ZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFk
eS5odG1sLgorCitOYXZpZ2F0aW5nIGZyYW1lLgorV2luZG93IGNvdW50OiAyCitEb25lLgorIAor
CistLS0tLS0tLQorRnJhbWU6ICdjaGlsZDEnCistLS0tLS0tLQorMTI3LjAuMC4xOjgwMDAKKwor
V2FpdGluZyBmb3IgbmF2aWdhdGlvbiBjb21tYW5kcy4KKworLS0tLS0tLS0KK0ZyYW1lOiAnYWN0
aXZlMScKKy0tLS0tLS0tCitsb2NhbGhvc3Q6ODAwMAorCitXYWl0aW5nIGZvciBuYXZpZ2F0aW9u
IGNvbW1hbmRzLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQtc2libGluZy1vcGVuLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdh
dGlvbi1ERU5JRUQtc2libGluZy1vcGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1z
aWJsaW5nLW9wZW4uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGliLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQoMik7CisKK25hdlV0aWxzLm9ucmVhZHkgPSBmdW5j
dGlvbiAoKSB7CisgIG5hdlV0aWxzLmxvZygnTmF2aWdhdGluZyBmcmFtZS4nKTsKKyAgbmF2VXRp
bHMuc2V0X2ZyYW1lX2NvdW50KDEpOworICBuYXZVdGlscy5kb05hdmlnYXRlKGZyYW1lc1snYWN0
aXZlMSddLCAnb3BlbicsICdjaGlsZDEnKTsKK307CisKK25hdlV0aWxzLm9uZG9uZSA9IGZ1bmN0
aW9uICgpIHsKKyAgbmF2VXRpbHMubG9nV2luZG93Q291bnQoKTsKKyAgbmF2VXRpbHMubG9nKCdE
b25lLicpOworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Cis8aWZyYW1lIG5hbWU9ImNoaWxkMSIgc3JjPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9y
ZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iYWN0aXZlMSIgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5o
dG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmct
cGx1Z2luLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXBsdWdp
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9uYXZpZ2F0aW9uLURFTklFRC1zaWJsaW5nLXBsdWdpbi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRvIGluaXRpYXRlIGEgbmF2aWdh
dGlvbiBjaGFuZ2UgZm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3JlYWR5Lmh0bWwgZnJvbSBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291
cmNlcy9yZWFkeS5odG1sLgorCitOYXZpZ2F0aW5nIGZyYW1lLgorIAorCistLS0tLS0tLQorRnJh
bWU6ICdjaGlsZDQnCistLS0tLS0tLQorMTI3LjAuMC4xOjgwMDAKKworV2FpdGluZyBmb3IgbmF2
aWdhdGlvbiBjb21tYW5kcy4KKworLS0tLS0tLS0KK0ZyYW1lOiAnYWN0aXZlNCcKKy0tLS0tLS0t
Citsb2NhbGhvc3Q6ODAwMAorCitXYWl0aW5nIGZvciBuYXZpZ2F0aW9uIGNvbW1hbmRzLiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmln
YXRpb24tREVOSUVELXNpYmxpbmctcGx1Z2luLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbmF2aWdhdGlvbi1ERU5JRUQt
c2libGluZy1wbHVnaW4uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL25hdmlnYXRpb24tREVOSUVELXNpYmxpbmctcGx1
Z2luLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2xpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRp
bHMuc2V0X2ZyYW1lX2NvdW50KDIpOworCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24gKCkg
eworICBuYXZVdGlscy5sb2coJ05hdmlnYXRpbmcgZnJhbWUuJyk7CisgIC8vIFRPRE86IExvb2tz
IGxpa2UgcGx1Z2lucyBhcmVuJ3QgY29ycmVjdGx5IHNldHRpbmcgd2luZG93Lm9wZW5lcgorICBu
YXZVdGlscy5kb05hdmlnYXRlKGZyYW1lc1snYWN0aXZlNCddLCAncGx1Z2luJywgJ2NoaWxkNCcp
OworCisgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICB2YXIgaW50ZXJ2
YWwgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICBpZiAobGF5b3V0VGVz
dENvbnRyb2xsZXIud2luZG93Q291bnQoKSA+IDEpIHsKKyAgICAgICAgLy8gVGhlIG5hdmlnYXRp
b24gaGFzIG9jY3VyZWQuICBXZSdyZSBkb25lLgorICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZh
bChpbnRlcnZhbCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
KyAgICAgIH0KKyAgICB9LCAxNSk7CisgIH0KK307Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGRpdiBpZD0nY29uc29sZSc+PC9kaXY+Cis8aWZyYW1lIG5hbWU9ImNoaWxkNCIgc3JjPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9y
ZWFkeS5odG1sIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iYWN0aXZlNCIgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9yZWFkeS5o
dG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1BTExPV0VELXBhcmVudC1uYXZpZ2F0
aW9uLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtcGFyZW50LW5hdmlnYXRp
b24tY2hhbmdlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzQzNzIpCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2
aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzAsMCBA
QAotbG9jYWxob3N0Ci0KLVBBU1NFRDogTmF2aWdhdGlvbiBzdWNjZWVkZWQuCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1w
YXJlbnQtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2
aWdhdGlvbi1jaGFuZ2UuaHRtbAkocmV2aXNpb24gMzQzNzIpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC1wYXJlbnQtbmF2aWdh
dGlvbi1jaGFuZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyMyArMCwwIEBACi08aHRtbD4K
LTxoZWFkPgotICAgIDxzdHlsZT4KLSAgICAgICAgaWZyYW1lIHsgd2lkdGg6IDQwMHB4OyBoZWln
aHQ6IDIwMHB4O30KLSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoNCcpWzBd
LmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHkgb25sb2FkPSJsb2FkZWQoKTsiPgotICAgIDxwPlRoaXMgdGVzdHMgdGhh
dCBkb2N1bWVudHMgY2FuIG5hdmlnYXRlIHRoZSBsb2NhdGlvbiBvZiBhbnkgb2YgaXQncyBwYXJl
bnQtZnJhbWVzIHJlZ2FyZGxlc3Mgb2YgZG9tYWluLjwvcD4KLSAgICA8aDQ+RE9NQUlOPC9oND4K
LSAgICA8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2
aWdhdGlvbi9yZXNvdXJjZXMvaWZyYW1lLXRoYXQtcGVyZm9ybXMtcGFyZW50LW5hdmlnYXRpb24u
aHRtbCI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxMT1dFRC10YXJnZXRlZC1zdWJm
cmFtZS1uYXZpZ2F0aW9uLWNoYW5nZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLUFMTE9XRUQtdGFy
Z2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFuZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAz
NDM3MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L3hzcy1BTExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxOSArMCwwIEBACi1UaGlzIHRlc3RzIHRoYXQgZG9j
dW1lbnRzIGNhbiBuYXZpZ2F0ZSB0aGUgbG9jYXRpb24gb2YgYW55IG9mIGl0J3Mgc3ViLWZyYW1l
cyByZWdhcmRsZXNzIG9mIGRvbWFpbi4KLQotMTI3LjAuMC4xCi0KLSAgUGVyZm9ybSBUZXN0Ci0K
LS0tLS0tLS0tCi1GcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JwotLS0t
LS0tLS0KLWxvY2FsaG9zdAotCi0KLQotLS0tLS0tLS0KLUZyYW1lOiAndGFyZ2V0RnJhbWUnCi0t
LS0tLS0tLQotbG9jYWxob3N0Ci0KLVBBU1NFRDogTmF2aWdhdGlvbiBzdWNjZWVkZWQuCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtQUxM
T1dFRC10YXJnZXRlZC1zdWJmcmFtZS1uYXZpZ2F0aW9uLWNoYW5nZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1B
TExPV0VELXRhcmdldGVkLXN1YmZyYW1lLW5hdmlnYXRpb24tY2hhbmdlLmh0bWwJKHJldmlzaW9u
IDM0MzcyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRp
b24veHNzLUFMTE9XRUQtdGFyZ2V0ZWQtc3ViZnJhbWUtbmF2aWdhdGlvbi1jaGFuZ2UuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAgIDxzdHls
ZT4KLSAgICAgICAgaWZyYW1lIHsgd2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDIwMHB4O30KLSAgICA8
L3N0eWxlPgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKLSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OwotICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9j
dW1lbnQuZG9tYWluOwotCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gd2FpdEZvckZsYWcoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCh3YWl0Rm9yRmxhZywgMSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5nbG9iYWxGbGFnID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdEZvckZsYWcsIDEpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcGVyZm9ybVRlc3QoKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB2YXIgc3ViRnJhbWUgPSB3aW5kb3cuZnJhbWVzWzBdOwotICAgICAgICAgICAg
c3ViRnJhbWUuZnJhbWVzWzBdLmxvY2F0aW9uID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25hdmlnYXRpb24tY2hhbmdlZC1pZnJhbWUu
aHRtbCI7Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0i
bG9hZGVkKCk7Ij4KLSAgICA8cD5UaGlzIHRlc3RzIHRoYXQgZG9jdW1lbnRzIGNhbiBuYXZpZ2F0
ZSB0aGUgbG9jYXRpb24gb2YgYW55IG9mIGl0J3Mgc3ViLWZyYW1lcyByZWdhcmRsZXNzIG9mIGRv
bWFpbi48L3A+Ci0gICAgPGg0PkRPTUFJTjwvaDQ+Ci0gICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2lmcmFtZS13
aXRoLWlubmVyLWZyYW1lLW9uLWZvcmVpZ24tZG9tYWluLmh0bWwiPjwvaWZyYW1lPgotICAgIDxi
dXR0b24gb25jbGljaz0icGVyZm9ybVRlc3QoKSI+UGVyZm9ybSBUZXN0PC9idXR0b24+Ci08L2Jv
ZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1l
TmF2aWdhdGlvbi94c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi94c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMzQz
NzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94
c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwxOSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3Jp
cHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24gY2hhbmdlIGZvciBmcmFtZSB3aXRo
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1l
LWlmcmFtZS5odG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1wbHVnaW4tdG8tbmF2
aWdhdGUuaHRtbC4KLQotIAotCi0tLS0tLS0tLQotRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPicKLS0tLS0tLS0tCi0KLUZyYW1lLXdpdGgtcGx1Z2luLXRvLW5hdmlnYXRl
Ci0KLWxvY2FsaG9zdAotCi1UZXN0IFBBU1NFRAotCi0KLS0tLS0tLS0tCi1GcmFtZTogJ3RvTmF2
aWdhdGUnCi0tLS0tLS0tLQotSW5uZXIgaWZyYW1lLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLURFTklFRC1wbHVnaW4tbmF2aWdhdGlv
bi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3hzcy1ERU5JRUQtcGx1Z2luLW5hdmlnYXRpb24uaHRtbAkocmV2aXNpb24g
MzQzNzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi94c3MtREVOSUVELXBsdWdpbi1uYXZpZ2F0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjIgKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2Nyb3NzLWZyYW1lLWFjY2Vzcy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdD4KLSAgICAgICAg
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgICAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRDbG9zZVJlbWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHByZSBpZD0nY29uc29sZSc+PC9wcmU+Ci08aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1wbHVnaW4t
dG8tbmF2aWdhdGUuaHRtbCI+PC9pZnJhbWU+Ci08aWZyYW1lIG5hbWU9InRvTmF2aWdhdGUiIHNy
Yz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1p
ZnJhbWUuaHRtbCI+PC9pZnJhbWU+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi94c3MtREVOSUVELXRhcmdldGVk
LWxpbmstbmF2aWdhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24veHNzLURFTklFRC10YXJnZXRlZC1s
aW5rLW5hdmlnYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzNDM3MikKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1ERU5JRUQtdGFyZ2V0
ZWQtbGluay1uYXZpZ2F0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwyMCAr
MCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1w
dCB0byBpbml0aWF0ZSBhIG5hdmlnYXRpb24gY2hhbmdlIGZvciBmcmFtZSB3aXRoIFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLWZyYW1lLWlmcmFtZS5o
dG1sIGZyb20gZnJhbWUgd2l0aCBVUkwgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2Zy
YW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1saW5rLXRvLW5hdmlnYXRlLmh0bWwu
Ci0KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxOiBVbnNhZmUgSmF2YVNjcmlwdCBhdHRlbXB0IHRv
IGluaXRpYXRlIGEgbmF2aWdhdGlvbiBjaGFuZ2UgZm9yIGZyYW1lIHdpdGggVVJMIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwg
ZnJvbSBmcmFtZSB3aXRoIFVSTCBodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy9mcmFtZS13aXRoLWxpbmstdG8tbmF2aWdhdGUuaHRtbC4KLQot
IAotCi0tLS0tLS0tLQotRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicK
LS0tLS0tLS0tCi1GcmFtZS13aXRoLWxpbmstdG8tbmF2aWdhdGUKLQotbG9jYWxob3N0Ci0KLVRl
c3QgUEFTU0VECi1DbGljayBtZQotCi0tLS0tLS0tLQotRnJhbWU6ICd0b05hdmlnYXRlJwotLS0t
LS0tLS0KLUlubmVyIGlmcmFtZS4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3hzcy1ERU5JRUQtdGFyZ2V0ZWQtbGluay1uYXZpZ2F0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5h
dmlnYXRpb24veHNzLURFTklFRC10YXJnZXRlZC1saW5rLW5hdmlnYXRpb24uaHRtbAkocmV2aXNp
b24gMzQzNzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi94c3MtREVOSUVELXRhcmdldGVkLWxpbmstbmF2aWdhdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDIyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9jcm9zcy1mcmFtZS1hY2Nlc3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+
Ci0gICAgICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldENhbk9wZW5XaW5kb3dzKCk7Ci0gICAgICAgICAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0Q2xvc2VSZW1haW5pbmdXaW5kb3dzV2hlbkNvbXBsZXRl
KHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgotPGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdp
dGgtbGluay10by1uYXZpZ2F0ZS5odG1sIj48L2lmcmFtZT4KLTxpZnJhbWUgbmFtZT0idG9OYXZp
Z2F0ZSIgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3Nz
LWZyYW1lLWlmcmFtZS5odG1sIj48L2lmcmFtZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9m
cmFtZS13aXRoLWxpbmstdG8tbmF2aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0
aC1saW5rLXRvLW5hdmlnYXRlLmh0bWwJKHJldmlzaW9uIDM0MzcyKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2ZyYW1lLXdpdGgt
bGluay10by1uYXZpZ2F0ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU5ICswLDAgQEAKLTxo
dG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9jcm9zcy1mcmFt
ZS1hY2Nlc3MuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQ+Ci0gICAgICAgIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCdoNCcpWzBdLmlubmVySFRNTCA9IGRvY3VtZW50LmRvbWFpbjsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KHBvbGxGb3JUZXN0LCAxKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbG9nKCJDbGljayB0aGUgbGluayB0byBydW4gdGhlIHRlc3QuIik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwb2xsRm9yVGVzdCA9IGZ1bmN0aW9uKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFsYXlvdXRUZXN0Q29udHJvbGxlci5nbG9iYWxG
bGFnKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChwb2xsRm9yVGVzdCwgMSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcnVuVGVzdCgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgcnVuVGVzdCA9IGZ1bmN0aW9uKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVF
dmVudCgnTW91c2VFdmVudCcpOwotICAgICAgICAgICAgZXZlbnQuaW5pdEV2ZW50KCAnY2xpY2sn
LCB0cnVlLCB0cnVlICk7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYW5j
aG9yTGluaycpLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotCi0gICAgICAgICAgICBzdGFydCA9IG5l
dyBEYXRlKCk7Ci0gICAgICAgICAgICBteUludGVydmFsID0gc2V0SW50ZXJ2YWwoY2hlY2tJZkRv
bmUsIDEpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tJZkRvbmUgPSBmdW5jdGlvbigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBudW1PcGVuV2luZG93cyA9IGxheW91dFRlc3RDb250
cm9sbGVyLndpbmRvd0NvdW50KCk7Ci0gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsK
LSAgICAgICAgICAgIGlmIChudW1PcGVuV2luZG93cyA9PSAyKSB7Ci0gICAgICAgICAgICAgICAg
bG9nKCJUZXN0IFBBU1NFRCIpOwotICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlJbnRl
cnZhbCk7Ci0gICAgICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OyAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIGlmIChub3cgLSBzdGFydCA+IDEwMDAw
KSB7Ci0gICAgICAgICAgICAgICAgbG9nKCdURVNUIEZBSUxFRDogV2luZG93IGNvdW50ICcgKyBu
dW1PcGVuV2luZG93cyk7Ci0gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteUludGVydmFs
KTsKLSAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
ICAgIDxoMz5GcmFtZS13aXRoLWxpbmstdG8tbmF2aWdhdGU8L2gzPgotICAgIDxoND5ET01BSU48
L2g0PgotICAgIDxwcmUgaWQ9J2NvbnNvbGUnPjwvcHJlPgotICAgIDxhIGlkPSJhbmNob3JMaW5r
IiBocmVmPSJuYXZpZ2F0aW9uLWhhcHBlbmVkLmh0bWwiIHRhcmdldD0idG9OYXZpZ2F0ZSI+Q2xp
Y2sgbWU8L2E+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1wbHVnaW4tdG8t
bmF2aWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1wbHVnaW4tdG8tbmF2aWdh
dGUuaHRtbAkocmV2aXNpb24gMzQzNzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvZnJhbWUtd2l0aC1wbHVnaW4tdG8tbmF2aWdh
dGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw1NyArMCwwIEBACi08aHRtbD4KLTxoZWFkPgot
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY3Jvc3MtZnJhbWUtYWNjZXNzLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0PgotICAgICAgICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
aDQnKVswXS5pbm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChw
b2xsRm9yVGVzdCwgMSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxv
ZygiQ2xpY2sgdGhlIGxpbmsgdG8gcnVuIHRoZSB0ZXN0LiIpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgcG9sbEZvclRlc3QgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbGF5b3V0VGVzdENvbnRyb2xsZXIuZ2xvYmFsRmxhZykgewotICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQocG9sbEZvclRlc3QsIDEpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJ1blRlc3QoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHJ1blRlc3QgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgcGxnLmdldFVSTCgibmF2aWdhdGlvbi1oYXBwZW5lZC5odG1sIiwgInRv
TmF2aWdhdGUiKTsKLQotICAgICAgICAgICAgc3RhcnQgPSBuZXcgRGF0ZSgpOwotICAgICAgICAg
ICAgbXlJbnRlcnZhbCA9IHNldEludGVydmFsKGNoZWNrSWZEb25lLCA1MDApOwotICAgICAgICB9
Ci0KLSAgICAgICAgY2hlY2tJZkRvbmUgPSBmdW5jdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHZhciBudW1PcGVuV2luZG93cyA9IGxheW91dFRlc3RDb250cm9sbGVyLndpbmRvd0NvdW50
KCk7Ci0gICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsKLSAgICAgICAgICAgIGlmIChu
dW1PcGVuV2luZG93cyA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJUZXN0IFBBU1NFRCIp
OwotICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlJbnRlcnZhbCk7Ci0gICAgICAgICAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgICAgICAgIAotICAg
ICAgICAgICAgfSBlbHNlIGlmIChub3cgLSBzdGFydCA+IDEwMDAwKSB7Ci0gICAgICAgICAgICAg
ICAgbG9nKCdURVNUIEZBSUxFRDogV2luZG93IGNvdW50ICcgKyBudW1PcGVuV2luZG93cyk7Ci0g
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteUludGVydmFsKTsKLSAgICAgICAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxlbWJlZCBuYW1lPSJw
bGciIHR5cGU9ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiPjwvZW1iZWQ+Ci0g
ICAgPGgzPkZyYW1lLXdpdGgtcGx1Z2luLXRvLW5hdmlnYXRlPC9oMz4KLSAgICA8aDQ+RE9NQUlO
PC9oND4KLSAgICA8cHJlIGlkPSdjb25zb2xlJz48L3ByZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291
cmNlcy9pZnJhbWUtdGhhdC1wZXJmb3Jtcy1wYXJlbnQtbmF2aWdhdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jl
c291cmNlcy9pZnJhbWUtdGhhdC1wZXJmb3Jtcy1wYXJlbnQtbmF2aWdhdGlvbi5odG1sCShyZXZp
c2lvbiAzNDM3MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZp
Z2F0aW9uL3Jlc291cmNlcy9pZnJhbWUtdGhhdC1wZXJmb3Jtcy1wYXJlbnQtbmF2aWdhdGlvbi5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyICswLDAgQEAKLTxodG1sPgotPGhlYWQ+Ci0gICAg
PHNjcmlwdD4KLSAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2g0JylbMF0uaW5uZXJIVE1MID0gZG9j
dW1lbnQuZG9tYWluOwotICAgICAgICAgICAgLy8gQWxsb3cgdGhlIHVzZXIgdG8gY2xpY2sgdGhl
IGJ1dHRvbiBkdXJpbmcgbWFudWVsIHJ1bnMuCi0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIHBlcmZvcm1UZXN0KCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBwZXJmb3JtVGVzdCgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHBhcmVudC5sb2NhdGlvbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvZnJh
bWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQtaWZyYW1lLmh0bWwiOwot
ICAgICAgICB9Ci0gICAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9ImxvYWRlZCgp
OyI+Ci0gICAgPGg0PkRPTUFJTjwvaDQ+Ci0gICAgPGJ1dHRvbiBvbmNsaWNrPSJwZXJmb3JtVGVz
dCgpOyI+UGVyZm9ybSBUZXN0PC9idXR0b24+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvaWZy
YW1lLXdpdGgtaW5uZXItZnJhbWUtb24tZm9yZWlnbi1kb21haW4uaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJj
ZXMvaWZyYW1lLXdpdGgtaW5uZXItZnJhbWUtb24tZm9yZWlnbi1kb21haW4uaHRtbAkocmV2aXNp
b24gMzQzNzIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdh
dGlvbi9yZXNvdXJjZXMvaWZyYW1lLXdpdGgtaW5uZXItZnJhbWUtb24tZm9yZWlnbi1kb21haW4u
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotICAg
IDxzY3JpcHQ+Ci0gICAgICAgIGZ1bmN0aW9uIGxvYWRlZCgpIAotICAgICAgICB7Ci0gICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5pbm5lckhUTUwgPSBk
b2N1bWVudC5kb21haW47Ci0gICAgICAgIH0KLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
IG9ubG9hZD0ibG9hZGVkKCk7Ij4KLSAgICA8aDQ+RE9NQUlOPC9oND4KLSAgICA8aWZyYW1lIG5h
bWU9InRhcmdldEZyYW1lIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNv
dXJjZXMvY3Jvc3MtZnJhbWUtaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgotPC9ib2R5PgotPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24v
cmVzb3VyY2VzL2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9pZnJhbWUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9u
L3Jlc291cmNlcy9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPGh0
bWw+Cis8Ym9keT4KKzxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhvc3Qp
Ozwvc2NyaXB0Pjxicj4KKzxzY3JpcHQ+Cit2YXIgc3JjID0gd2luZG93LmxvY2F0aW9uLmhhc2gu
c3Vic3RyaW5nKDEpOworZG9jdW1lbnQud3JpdGUoJzxpZnJhbWUgbmFtZT0iJyArIHdpbmRvdy5u
YW1lICsgJ19jaGlsZDAiIHNyYz0iJyArIHNyYyArICciPjwvaWZyYW1lPicpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9saWIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL2xpYi5q
cwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVO
YXZpZ2F0aW9uL3Jlc291cmNlcy9saWIuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBA
CisvLyBDcmVhdGUgYW4gb2JqZWN0IHRvIGhvbGQgdGhlIG5hdlV0aWxzIEFQSS4KK3ZhciBuYXZV
dGlscyA9IHt9OworCisvLyBBIHBvaW50ZXIgdG8gYSBET00gbm9kZSBhdCB3aGljaCB3ZSBkaXJl
Y3QgbG9nIG1lc3NhZ2VzLgorbmF2VXRpbHMuY29uc29sZV8gPSBudWxsOworCisvLyBUaGUgbnVt
YmVyIG9mIGZyYW1lcyB1c2VkIGluIHRoaXMgdGVzdC4KK25hdlV0aWxzLmZyYW1lX2NvdW50XyA9
IDA7CituYXZVdGlscy5zZXRfZnJhbWVfY291bnQgPSBmdW5jdGlvbihuKSB7IG5hdlV0aWxzLmZy
YW1lX2NvdW50XyA9IG47IH07CisKKy8vIFRoZSBudW1iZXIgb2YgcmVhZHkgbWVzc2FnZXMgd2Un
dmUgc2Vlbi4KK25hdlV0aWxzLnJlYWR5X2NvdW50XyA9IDA7CisKKy8vIFRoZSBudW1iZXIgb2Yg
ZG9uZSBtZXNzYWdlcyB3ZSd2ZSBzZWVuLgorbmF2VXRpbHMuZG9uZV9jb3VudF8gPSAwOworCisv
LyBUaGUgVVJMIHRvIHdoaWNoIHdlIG5hdmlnYXRlIGZyYW1lcy4KK25hdlV0aWxzLnRhcmdldF91
cmxfID0KKyAgICAnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlv
bi9yZXNvdXJjZXMvdGFyZ2V0Lmh0bWwnOworbmF2VXRpbHMuc2V0X3RhcmdldF91cmwgPSBmdW5j
dGlvbih1cmwpIHsgbmF2VXRpbHMudGFyZ2V0X3VybF8gPSB1cmw7IH07CisKKy8vIExvZyBhIG1l
c3NhZ2UgdG8gdGhlIGNvbnNvbGUuCituYXZVdGlscy5sb2cgPSBmdW5jdGlvbihtc2cpIHsKKyAg
aWYgKCFuYXZVdGlscy5jb25zb2xlXykKKyAgICBuYXZVdGlscy5jb25zb2xlXyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisKKyAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICBkaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobXNnKSk7CisgIG5hdlV0aWxzLmNvbnNvbGVfLmFwcGVuZENoaWxkKGRpdik7Cit9OworCitu
YXZVdGlscy5sb2dXaW5kb3dDb3VudCA9IGZ1bmN0aW9uKCkgeworICBpZiAoIXdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIG5hdlV0aWxzLmxvZygnbGF5b3V0VGVzdENvbnRyb2xs
ZXIgdW5hdmFpbGFibGUuJyk7CisgICAgcmV0dXJuOworICB9CisKKyAgbmF2VXRpbHMubG9nKCdX
aW5kb3cgY291bnQ6ICcgKyBsYXlvdXRUZXN0Q29udHJvbGxlci53aW5kb3dDb3VudCgpKTsKK307
CisKK25hdlV0aWxzLmdldENvbnRyb2xsZXIgPSBmdW5jdGlvbigpIHsKKyAgdmFyIGNvbnRyb2xs
ZXIgPSB3aW5kb3cudG9wOworICB3aGlsZSAoY29udHJvbGxlci5vcGVuZXIpCisgICAgY29udHJv
bGxlciA9IGNvbnRyb2xsZXIub3BlbmVyLnRvcDsKKworICByZXR1cm4gY29udHJvbGxlcjsKK307
CisKK25hdlV0aWxzLnNlbmQgPSBmdW5jdGlvbihtc2cpIHsKKyAgbmF2VXRpbHMuZ2V0Q29udHJv
bGxlcigpLnBvc3RNZXNzYWdlKG1zZywgJyonKTsKK307CisKK25hdlV0aWxzLmRvTmF2aWdhdGUg
PSBmdW5jdGlvbih3bmQsIG1lY2hhbmlzbSwgdGFyZ2V0KSB7CisgIHduZC5wb3N0TWVzc2FnZSgn
eyJzdGF0dXMiOiAibmF2aWdhdGUiLCAibWVjaGFuaXNtIjogIicgKyBtZWNoYW5pc20gKyAnIiwg
InRhcmdldCI6ICInICsgdGFyZ2V0ICsgJyJ9JywgJyonKTsKK30KKworbmF2VXRpbHMuY2FuQWNj
ZXNzID0gZnVuY3Rpb24od25kKSB7CisgIHRyeSB7CisgICAgdmFyIGh0bWwgPSB3bmQuZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTDsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBjYXRj
aChleCkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gTmF2aWdhdGlvbiBj
b21tYW5kcy4KKworbmF2VXRpbHMubmF2aWdhdGVCeUxvY2F0aW9uID0gZnVuY3Rpb24od25kKSB7
CisgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHduZC5sb2NhdGlvbiA9IG5h
dlV0aWxzLnRhcmdldF91cmxfOworICB9LCAwKTsKK307CisKK25hdlV0aWxzLm5hdmlnYXRlQnlP
cGVuID0gZnVuY3Rpb24obmFtZSkgeworICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICB3aW5kb3cub3BlbihuYXZVdGlscy50YXJnZXRfdXJsXywgbmFtZSk7CisgIH0sIDApOwor
fTsKKworbmF2VXRpbHMubmF2aWdhdGVCeUZvcm0gPSBmdW5jdGlvbihuYW1lKSB7CisgIHdpbmRv
dy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIC8vIENyZWF0ZSB0aGUgZm9ybS4KKyAgICB2
YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKKyAgICBmb3JtLmFjdGlv
biA9IG5hdlV0aWxzLnRhcmdldF91cmxfOworICAgIGZvcm0ubWV0aG9kID0gJ1BPU1QnOworICAg
IGZvcm0udGFyZ2V0ID0gbmFtZTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0p
OworCisgICAgLy8gU3VibWl0IHRoZSBmb3JtLgorICAgIGZvcm0uc3VibWl0KCk7CisgIH0sIDAp
OworfTsKKworbmF2VXRpbHMubmF2aWdhdGVCeUh5cGVybGluayA9IGZ1bmN0aW9uKG5hbWUpIHsK
KyAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgLy8gQ3JlYXRlIHRoZSBsaW5r
LgorICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworICAgIGxpbmsu
aHJlZiA9IG5hdlV0aWxzLnRhcmdldF91cmxfOworICAgIGxpbmsudGFyZ2V0ID0gbmFtZTsKKyAg
ICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOworCisgICAgLy8gU3VibWl0IHRoZSBs
aW5rLgorICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOwor
ICAgIGV2dC5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7CisgICAgbGluay5kaXNwYXRj
aEV2ZW50KGV2dCk7CisgIH0sIDApOworfTsKKworbmF2VXRpbHMubmF2aWdhdGVCeVBsdWdpbiA9
IGZ1bmN0aW9uKG5hbWUpIHsKKyAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgIG5hdlV0aWxzLnNlbmQo
J3sic3RhdHVzIjogImxvZyIsICJtZXNzYWdlIjogIldhcm5pbmc6IFRlc3QgcGx1Z2luIG5vdCBh
dmFpbGFibGUhIn0nKTsKKyAgICAgIG5hdlV0aWxzLm5hdmlnYXRlQnlPcGVuKG5hbWUpOworICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBDcmVhdGUgdGhlIHBsdWdpbi4KKyAgICB2YXIgcGxn
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZW1iZWQnKTsKKyAgICBwbGcudHlwZSA9ICdhcHBs
aWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlJworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGxnKTsKKworICAgIC8vIFVzZSB0aGUgcGx1Z2luLgorICAgIHBsZy5nZXRVUkwobmF2
VXRpbHMudGFyZ2V0X3VybF8sIG5hbWUpOworICB9LCAwKTsKK307CisKKy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIENhbGxiYWNr
cworCisvLyBDYWxsZWQgd2hlbiBhbGwgdGhlIGZyYW1lcyBoYXZlIHJlcG9ydGVkIHRoYXQgdGhl
eSBhcmUgcmVhZHkuCituYXZVdGlscy5vbnJlYWR5ID0gZnVuY3Rpb24oKSB7IH07CisKKy8vIENh
bGxlZCB3aGVuIGFsbCB0aGUgZnJhbWVzIGhhdmUgcmVwb3J0ZWQgdGhhdCB0aGV5IGFyZSBkb25l
LgorbmF2VXRpbHMub25kb25lID0gZnVuY3Rpb24oKSB7IH07CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZXYpIHsKKyAgdmFyIG1zZyA9IGV2YWwoJygnICsg
ZXYuZGF0YSArICcpJyk7CisKKyAgc3dpdGNoKG1zZy5zdGF0dXMpIHsKKyAgY2FzZSAncmVhZHkn
OgorICAgICsrbmF2VXRpbHMucmVhZHlfY291bnRfOworICAgIGlmIChuYXZVdGlscy5yZWFkeV9j
b3VudF8gPj0gbmF2VXRpbHMuZnJhbWVfY291bnRfKQorICAgICAgd2luZG93LnNldFRpbWVvdXQo
bmF2VXRpbHMub25yZWFkeSwgMCk7CisgICAgYnJlYWs7CisKKyAgY2FzZSAnZG9uZSc6CisgICAg
KytuYXZVdGlscy5kb25lX2NvdW50XzsKKyAgICBpZiAobmF2VXRpbHMuZG9uZV9jb3VudF8gPj0g
bmF2VXRpbHMuZnJhbWVfY291bnRfKQorICAgICAgd2luZG93LnNldFRpbWVvdXQobmF2VXRpbHMu
b25kb25lLCAwKTsKKyAgICBicmVhazsKKworICBjYXNlICdsb2cnOgorICAgIG5hdlV0aWxzLmxv
Zyhtc2cubWVzc2FnZSk7CisgICAgYnJlYWs7CisKKyAgY2FzZSAnbmF2aWdhdGUnOgorICAgIHN3
aXRjaChtc2cubWVjaGFuaXNtKSB7CisgICAgY2FzZSAnbG9jYXRpb24nOgorICAgICAgbmF2VXRp
bHMubmF2aWdhdGVCeUxvY2F0aW9uKGV2YWwobXNnLnRhcmdldCkpOworICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAnb3Blbic6CisgICAgICBuYXZVdGlscy5uYXZpZ2F0ZUJ5T3Blbihtc2cudGFyZ2V0
KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ2Zvcm0nOgorICAgICAgbmF2VXRpbHMubmF2aWdh
dGVCeUZvcm0obXNnLnRhcmdldCk7CisgICAgICBicmVhazsKKyAgICBjYXNlICdwbHVnaW4nOgor
ICAgICAgbmF2VXRpbHMubmF2aWdhdGVCeVBsdWdpbihtc2cudGFyZ2V0KTsKKyAgICAgIGJyZWFr
OworICAgIGNhc2UgJ2h5cGVybGluayc6CisgICAgICBuYXZVdGlscy5uYXZpZ2F0ZUJ5SHlwZXJs
aW5rKG1zZy50YXJnZXQpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGJyZWFrOworICB9Cit9
LCBmYWxzZSk7CisKKy8vIEluaXRpYWxpemUgdGhlIGxheW91dFRlc3RDb250cm9sbGVyCitpZiAo
d2luZG93LnNlbGYgPT09IHdpbmRvdy50b3ApIHsKKyAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDYW5PcGVuV2luZG93cygpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRDbG9zZVJl
bWFpbmluZ1dpbmRvd3NXaGVuQ29tcGxldGUodHJ1ZSk7CisgIH0KK30KKwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25hdmln
YXRpb24tY2hhbmdlZC1pZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1jaGFu
Z2VkLWlmcmFtZS5odG1sCShyZXZpc2lvbiAzNDM3MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWNoYW5nZWQt
aWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTYgKzAsMCBAQAotPGh0bWw+Ci08aGVh
ZD4KLSAgICA8c2NyaXB0PgotICAgICAgICBmdW5jdGlvbiBmaXJlU2VudGluZWwoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDQnKVswXS5p
bm5lckhUTUwgPSBkb2N1bWVudC5kb21haW47Ci0gICAgICAgICAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQotICAgICAgICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25s
b2FkPSJmaXJlU2VudGluZWwoKTsiPgotICAgIDxoND5ET01BSU48L2g0PgotICAgIDxwPlBBU1NF
RDogTmF2aWdhdGlvbiBzdWNjZWVkZWQuPC9wPgotPC9ib2R5PgotPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL25h
dmlnYXRpb24taGFwcGVuZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvbmF2aWdhdGlvbi1oYXBwZW5l
ZC5odG1sCShyZXZpc2lvbiAzNDM3MikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWhhcHBlbmVkLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMCwwIEBACi08aHRtbD4KLTxib2R5PgotICAgIE5hdmlnYXRl
ZCBwYWdlCi08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvb3Blbi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNl
cy9vcGVuLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvb3Blbi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwIEBACis8aHRtbD4KKzxib2R5PgorPHNjcmlwdD5kb2N1bWVudC53cml0ZSh3aW5k
b3cubG9jYXRpb24uaG9zdCk7PC9zY3JpcHQ+PGJyPgorPHNjcmlwdD4KK3ZhciBzcmMgPSB3aW5k
b3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7Cit3aW5kb3cub3BlbihzcmMsIHdpbmRvdy5u
YW1lICsgJ19wb3B1cDAnKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMv
cmVhZHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2ZyYW1lTmF2aWdhdGlvbi9yZXNvdXJjZXMvcmVhZHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvZnJhbWVOYXZpZ2F0aW9uL3Jlc291cmNlcy9y
ZWFkeS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9ImxpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRpbHMuc2VuZCgn
eyJzdGF0dXMiOiAicmVhZHkifScpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoND48
c2NyaXB0PmRvY3VtZW50LndyaXRlKHdpbmRvdy5sb2NhdGlvbi5ob3N0KTwvc2NyaXB0PjwvaDQ+
CitXYWl0aW5nIGZvciBuYXZpZ2F0aW9uIGNvbW1hbmRzLgorPC9ib2R5PgorPC9odG1sPgorCklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2ZyYW1lTmF2aWdhdGlvbi9yZXNv
dXJjZXMvdGFyZ2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVzb3VyY2VzL3RhcmdldC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vcmVz
b3VyY2VzL3RhcmdldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9ImxpYi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbmF2VXRp
bHMuc2VuZCgneyJzdGF0dXMiOiAiZG9uZSJ9Jyk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPGg0PjxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKTwv
c2NyaXB0PjwvaDQ+CitOYXZpZ2F0aW9uIGRvbmUuCis8L2JvZHk+Cis8L2h0bWw+CisK
</data>
<flag name="review"
          id="9413"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>