<?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>12082</bug_id>
          
          <creation_ts>2007-01-02 14:00:48 -0800</creation_ts>
          <short_desc>REGRESSION (r18333): Crash in RenderFrameSet::layOutAxis()</short_desc>
          <delta_ts>2007-01-03 21:36:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>420+</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, PlatformOnly, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jesse Costello-Good">jesse</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>37617</commentid>
    <comment_count>0</comment_count>
    <who name="Jesse Costello-Good">jesse</who>
    <bug_when>2007-01-02 14:00:48 -0800</bug_when>
    <thetext>Starting with WebKit-SVN-r18333.dmg, JsUnit&apos;s testRunner.html (v 2.1) page causes WebKit to crash.

1. Download JsUnit: http://downloads.sourceforge.net/jsunit/jsunit2_1.zip?modtime=1091836800&amp;big_mirror=0
2. Open testRunner.html
3. Observe crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37619</commentid>
    <comment_count>1</comment_count>
      <attachid>12174</attachid>
    <who name="Jesse Costello-Good">jesse</who>
    <bug_when>2007-01-02 14:03:04 -0800</bug_when>
    <thetext>Created attachment 12174
zipped crash log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37620</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-01-02 15:09:19 -0800</bug_when>
    <thetext>I can&apos;t reproduce this with the r18333 nightly or my locally built copy of r18517 - perhaps this is an Intel-only bug? (I&apos;m on a G4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37615</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 15:28:57 -0800</bug_when>
    <thetext>Thanks for the bug report, Jesse!  A couple of items:

1. Could you attach the testRunner.html file to this bug (if it&apos;s not too big and there&apos;s no license restriction against doing that)?  That would speed up the bug resolution process.

2. When attaching a crash log, please note that you only need to include the &quot;last&quot; crash log in Safari.crash.log.  Crash logs are separated by &quot;**********&quot;, so just make a copy of the file and delete everything above the last &quot;**********&quot; line.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37616</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 15:31:53 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; I can&apos;t reproduce this with the r18333 nightly or my locally built copy of
&gt; r18517 - perhaps this is an Intel-only bug? (I&apos;m on a G4)

The last stack trace indicates a division-by-zero error, which (as I recall) is &quot;more fatal&quot; on x86 than it is on PPC, so that jibes with your findings Matt!  Here&apos;s the top of the stack trace:

Exception:  EXC_ARITHMETIC (0x0003)
Codes:      EXC_I386_DIV (divide by zero)

Thread 0 Crashed:
0   com.apple.WebCore              	0x01263488 WebCore::RenderFrameSet::layOutAxis(WebCore::RenderFrameSet::GridAxis&amp;, WebCore::Length const*, int) + 1028
1   com.apple.WebCore              	0x0126385a WebCore::RenderFrameSet::layout() + 156
2   com.apple.WebCore              	0x0114973f WebCore::RenderBlock::layoutBlockChildren(bool) + 701
3   com.apple.WebCore              	0x01149f25 WebCore::RenderBlock::layoutBlock(bool) + 1141
4   com.apple.WebCore              	0x0113f912 WebCore::RenderBlock::layout() + 28
5   com.apple.WebCore              	0x0114973f WebCore::RenderBlock::layoutBlockChildren(bool) + 701
6   com.apple.WebCore              	0x01149f25 WebCore::RenderBlock::layoutBlock(bool) + 1141
7   com.apple.WebCore              	0x0113f912 WebCore::RenderBlock::layout() + 28
8   com.apple.WebCore              	0x01153ac8 WebCore::RenderView::layout() + 60
9   com.apple.WebCore              	0x010d6915 WebCore::FrameView::layout(bool) + 327
10  com.apple.WebCore              	0x012627c9 WebCore::RenderPart::updateWidgetPosition() + 533
11  com.apple.WebCore              	0x0115429a WebCore::RenderView::updateWidgetPositions() + 94
12  com.apple.WebCore              	0x010d6d4d WebCore::FrameView::layout(bool) + 1407
13  com.apple.WebCore              	0x010d8645 WebCore::Document::updateLayout() + 81
14  com.apple.WebCore              	0x010cf4fe WebCore::Frame::setIsActive(bool) + 558
15  com.apple.WebKit               	0x00332f94 -[WebHTMLView resignFirstResponder] + 156
16  com.apple.AppKit               	0x932b9406 -[NSWindow makeFirstResponder:] + 107
17  com.apple.Safari               	0x00013d4d 0x1000 + 77133
18  com.apple.Safari               	0x0002e346 0x1000 + 185158
19  libobjc.A.dylib                	0x90a57c56 objc_msgSendv + 54
[...]
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37531</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 20:51:32 -0800</bug_when>
    <thetext>Confirmed.  This crashes on Intel 10.4.8 (8N1037), but not on PowerPC 10.4.8 (8L127).

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37532</commentid>
    <comment_count>6</comment_count>
      <attachid>12177</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-02 20:55:36 -0800</bug_when>
    <thetext>Created attachment 12177
jsunit-testRunner.webarchive (crashes Intel)

Test case saved as webarchive on PowerPC Mac.  Will crash Intel Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37232</commentid>
    <comment_count>7</comment_count>
      <attachid>12196</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-03 12:51:11 -0800</bug_when>
    <thetext>Created attachment 12196
Reduction (will crash)

RenderFrameSet::layOutAxis() gets called with negative availableLength since the very little width that there is gets eaten up by borders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37238</commentid>
    <comment_count>8</comment_count>
      <attachid>12199</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-03 13:41:22 -0800</bug_when>
    <thetext>Created attachment 12199
Patch

Before r18333, RenderFrameSet had logic to change a negative available width to zero before laying out the grid. The end result in that case was just a vector of zeros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37240</commentid>
    <comment_count>9</comment_count>
      <attachid>12199</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-01-03 13:58:02 -0800</bug_when>
    <thetext>Comment on attachment 12199
Patch

Mitz is going to submit a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37242</commentid>
    <comment_count>10</comment_count>
      <attachid>12201</attachid>
    <who name="">mitz</who>
    <bug_when>2007-01-03 13:59:20 -0800</bug_when>
    <thetext>Created attachment 12201
Treat negative availableLength as zero

This just restores the old behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37243</commentid>
    <comment_count>11</comment_count>
      <attachid>12201</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-03 14:00:16 -0800</bug_when>
    <thetext>Comment on attachment 12201
Treat negative availableLength as zero

r=me (my bad, thanks for the fix)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37217</commentid>
    <comment_count>12</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-01-03 21:36:34 -0800</bug_when>
    <thetext>Committed revision 18571.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12174</attachid>
            <date>2007-01-02 14:03:04 -0800</date>
            <delta_ts>2007-01-02 14:03:04 -0800</delta_ts>
            <desc>zipped crash log</desc>
            <filename>Safari.crash.log.zip</filename>
            <type>application/zip</type>
            <size>54068</size>
            <attacher name="Jesse Costello-Good">jesse</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12177</attachid>
            <date>2007-01-02 20:55:36 -0800</date>
            <delta_ts>2007-01-02 20:55:36 -0800</delta_ts>
            <desc>jsunit-testRunner.webarchive (crashes Intel)</desc>
            <filename>jsunit-testRunner.webarchive</filename>
            <type>application/x-webarchive</type>
            <size>78387</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">YnBsaXN0MDDTAQIDBB4mXxAPV2ViU3VicmVzb3VyY2VzXxAPV2ViTWFpblJlc291cmNlXxATV2Vi
U3ViZnJhbWVBcmNoaXZlc6UFDhIWGtQGBwgJCgsMDV8QE1dlYlJlc291cmNlUmVzcG9uc2VfEA9X
ZWJSZXNvdXJjZURhdGFeV2ViUmVzb3VyY2VVUkxfEBNXZWJSZXNvdXJjZU1JTUVUeXBlTxEB9GJw
bGlzdDAw1AECAwQFBgcKWSRhcmNoaXZlclgkdmVyc2lvblQkdG9wWCRvYmplY3RzXxAPTlNLZXll
ZEFyY2hpdmVyEgABhqDRCAlfEBNXZWJSZXNvdXJjZVJlc3BvbnNlgAGnCwwbISIpKlUkbnVsbNcN
Dg8QERITFBUWFxgZGlIkMlIkM1IkNFIkMFYkY2xhc3NSJDVSJDGABYAAER+mEAeABiN/7///////
/4AC0xwdERUfIFdOUy5iYXNlW05TLnJlbGF0aXZlgACAA4AEXxBCZmlsZTovLy9Vc2Vycy9kZGtp
bHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC94YkRlYnVnLmpz0iMkJSZYJGNs
YXNzZXNaJGNsYXNzbmFtZaMmJyhVTlNVUkxWJU5TVVJMWE5TT2JqZWN0XxAYYXBwbGljYXRpb24v
eC1qYXZhc2NyaXB00iMkKyyiLChdTlNVUkxSZXNwb25zZQAIABEAGwAkACkAMgBEAEkATABiAGQA
bAByAIEAhACHAIoAjQCUAJcAmgCcAJ4AoQCjAKUArgCwALcAvwDLAM0AzwDRARYBGwEkAS8BMwE5
AUABSQFkAWkBbAAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAAF6TxEfpi8vIHhiRGVidWcu
anMgcmV2aXNpb246IDAuMDAzIDIwMDItMDItMjYNCg0KLyogKioqKiogQkVHSU4gTElDRU5TRSBC
TE9DSyAqKioqKg0KICogTGljZW5zZWQgdW5kZXIgVmVyc2lvbjogTVBMIDEuMS9HUEwgMi4wL0xH
UEwgMi4xDQogKiBGdWxsIFRlcm1zIGF0IC94YlByb2plY3RzLXNyY2UvbGljZW5zZS9tcGwtdHJp
LWxpY2Vuc2UudHh0DQogKg0KICogU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywNCiAqIFdJVEhPVVQgV0FSUkFO
VFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5z
ZQ0KICogZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1p
dGF0aW9ucyB1bmRlciB0aGUNCiAqIExpY2Vuc2UuDQogKg0KICogVGhlIE9yaWdpbmFsIENvZGUg
aXMgTmV0c2NhcGUgY29kZS4NCiAqDQogKiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgb2YgdGhlIE9y
aWdpbmFsIENvZGUgaXMNCiAqIE5ldHNjYXBlIENvcnBvcmF0aW9uLg0KICogUG9ydGlvbnMgY3Jl
YXRlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYXJlIENvcHlyaWdodCAoQykgMjAwMQ0KICog
dGhlIEluaXRpYWwgRGV2ZWxvcGVyLiBBbGwgUmlnaHRzIFJlc2VydmVkLg0KICoNCiAqIENvbnRy
aWJ1dG9yKHMpOiBCb2IgQ2xhcnkgPGJjbGFyeUBuZXRzY2FwZS5jb20+DQogKg0KICogKioqKiog
RU5EIExJQ0VOU0UgQkxPQ0sgKioqKiogKi8NCg0KLyoNCkNoYW5nZUxvZzoNCg0KMjAwMi0wMi0y
NTogYmNsYXJ5IC0gbW9kaWZpZWQgeGJEZWJ1Z1RyYWNlT2plY3QgdG8gbWFrZSBzdXJlIA0KICAg
ICAgICAgICAgdGhhdCBvcmlnaW5hbCB2ZXJzaW9ucyBvZiB3cmFwcGVkIGZ1bmN0aW9ucyB3ZXJl
IG5vdA0KICAgICAgICAgICAgcmV3cmFwcGVkLiBUaGlzIGhhZCBjYXVzZWQgYW4gaW5maW5pdGUg
bG9vcCBpbiBJRS4NCg0KMjAwMi0wMi0wNzogYmNsYXJ5IC0gbW9kaWZpZWQgeGJEZWJ1Zy5wcm90
b3R5cGUuY2xvc2UgdG8gbm90IG51bGwNCiAgICAgICAgICAgIHRoZSBkZWJ1ZyB3aW5kb3cgcmVm
ZXJlbmNlLiBUaGlzIGNhbiBjYXVzZSBwcm9ibGVtcyB3aXRoDQoJICAgICAgICAgIEludGVybmV0
IEV4cGxvcmVyIGlmIHRoZSBwYWdlIGlzIHJlZnJlc2hlZC4gVGhlc2UgaXNzdWVzIHdpbGwNCgkg
ICAgICAgICAgYmUgYWRkcmVzc2VkIGF0IGEgbGF0ZXIgZGF0ZS4NCiovDQoNCmZ1bmN0aW9uIHhi
RGVidWcoKQ0Kew0KICB0aGlzLm9uID0gZmFsc2U7DQogIHRoaXMuc3RhY2sgPSBuZXcgQXJyYXko
KTsNCiAgdGhpcy5kZWJ1Z3dpbmRvdyA9IG51bGw7DQogIHRoaXMuZXhlY3Byb2ZpbGUgPSBuZXcg
T2JqZWN0KCk7DQp9DQoNCnhiRGVidWcucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoKQ0Kew0K
ICB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoXSA9IHRoaXMub247DQogIHRoaXMub24gPSB0
cnVlOw0KfQ0KDQp4YkRlYnVnLnByb3RvdHlwZS5wb3AgPSBmdW5jdGlvbiAoKQ0Kew0KICB0aGlz
Lm9uID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdOw0KICAtLXRoaXMuc3RhY2su
bGVuZ3RoOw0KfQ0KDQp4YkRlYnVnLnByb3RvdHlwZS5vcGVuID0gIGZ1bmN0aW9uICgpDQp7DQog
IGlmICh0aGlzLmRlYnVnd2luZG93ICYmICF0aGlzLmRlYnVnd2luZG93LmNsb3NlZCkNCiAgICB0
aGlzLmNsb3NlKCk7DQogICAgDQogIHRoaXMuZGVidWd3aW5kb3cgPSB3aW5kb3cub3BlbignYWJv
dXQ6YmxhbmsnLCAnREVCVUdXSU5ET1cnLCAnaGVpZ2h0PTQwMCx3aWR0aD02MDAscmVzaXphYmxl
PXllcyxzY3JvbGxiYXJzPXllcycpOw0KDQogIHRoaXMuZGVidWd3aW5kb3cudGl0bGUgPSAneGJE
ZWJ1ZyBXaW5kb3cnOw0KICB0aGlzLmRlYnVnd2luZG93LmRvY3VtZW50LndyaXRlKCc8aHRtbD48
aGVhZD48dGl0bGU+eGJEZWJ1ZyBXaW5kb3c8L3RpdGxlPjwvaGVhZD48Ym9keT48aDM+SmF2YXNj
cmlwdCBEZWJ1ZyBXaW5kb3c8L2gzPjwvYm9keT48L2h0bWw+Jyk7DQogIHRoaXMuZGVidWd3aW5k
b3cuZm9jdXMoKTsNCn0NCg0KeGJEZWJ1Zy5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKQ0K
ew0KICBpZiAoIXRoaXMuZGVidWd3aW5kb3cpDQogICAgcmV0dXJuOw0KICAgIA0KICBpZiAoIXRo
aXMuZGVidWd3aW5kb3cuY2xvc2VkKQ0KICAgIHRoaXMuZGVidWd3aW5kb3cuY2xvc2UoKTsNCg0K
ICAvLyBiYyAyMDAyLTAyLTA3LCBvdGhlciB3aW5kb3dzIG1heSBzdGlsbCBob2xkIGEgcmVmZXJl
bmNlIHRvIHRoaXM6IHRoaXMuZGVidWd3aW5kb3cgPSBudWxsOw0KfQ0KDQp4YkRlYnVnLnByb3Rv
dHlwZS5kdW1wID0gZnVuY3Rpb24gKG1zZykNCnsNCiAgaWYgKCF0aGlzLm9uKQ0KICAgIHJldHVy
bjsNCiAgICANCiAgaWYgKCF0aGlzLmRlYnVnd2luZG93IHx8IHRoaXMuZGVidWd3aW5kb3cuY2xv
c2VkKQ0KICAgIHRoaXMub3BlbigpOw0KICAgIA0KICB0aGlzLmRlYnVnd2luZG93LmRvY3VtZW50
LndyaXRlKG1zZyArICc8YnI+Jyk7DQogIA0KICByZXR1cm47DQp9DQoNCnZhciB4YkRFQlVHID0g
bmV3IHhiRGVidWcoKTsNCg0Kd2luZG93Lm9udW5sb2FkID0gZnVuY3Rpb24gKCkgeyB4YkRFQlVH
LmNsb3NlKCk7IH0NCg0KZnVuY3Rpb24geGJEZWJ1Z0dldEZ1bmN0aW9uTmFtZShmdW5jcmVmKQ0K
ew0KDQogIGlmICghZnVuY3JlZikNCiAgew0KICAgIHJldHVybiAnJzsNCiAgfQ0KDQogIGlmIChm
dW5jcmVmLm5hbWUpDQogICAgcmV0dXJuIGZ1bmNyZWYubmFtZTsNCg0KICB2YXIgbmFtZSA9IGZ1
bmNyZWYgKyAnJzsNCiAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKG5hbWUuaW5kZXhPZignICcpICsg
MSwgbmFtZS5pbmRleE9mKCcoJykpOw0KICBmdW5jcmVmLm5hbWUgPSBuYW1lOw0KDQogIGlmICgh
bmFtZSkgYWxlcnQoJ25hbWUgbm90IGRlZmluZWQnKTsNCiAgcmV0dXJuIG5hbWU7DQp9DQoNCg0K
Ly8gZW11bGF0ZSBmdW5jdGlvbnJlZi5hcHBseSBmb3IgSUUgbWFjIGFuZCBJRSB3aW4gPCA1LjUN
CmZ1bmN0aW9uIHhiRGVidWdBcHBseUZ1bmN0aW9uKGZ1bmNuYW1lLCBmdW5jcmVmLCB0aGlzcmVm
LCBhcmd1bWVudHNyZWYpDQp7DQogIHZhciBydjsNCg0KICBpZiAoIWZ1bmNyZWYpDQogIHsNCiAg
ICBhbGVydCgneGJEZWJ1Z0FwcGx5RnVuY3Rpb246IGZ1bmNyZWYgaXMgbnVsbCcpOw0KICB9DQoN
CiAgaWYgKHR5cGVvZihmdW5jcmVmLmFwcGx5KSAhPSAndW5kZWZpbmVkJykNCiAgICAgIHJldHVy
biBmdW5jcmVmLmFwcGx5KHRoaXNyZWYsIGFyZ3VtZW50c3JlZik7DQoNCiAgdmFyIGFwcGx5ZXhw
ciA9ICd0aGlzcmVmLnhiRGVidWdfb3JpZ18nICsgZnVuY25hbWUgKyAnKCc7DQogIHZhciBpOw0K
DQogIGZvciAoaSA9IDA7IGkgPCBhcmd1bWVudHNyZWYubGVuZ3RoOyBpKyspDQogIHsNCiAgICBh
cHBseWV4cHIgKz0gJ2FyZ3VtZW50c3JlZlsnICsgaSArICddLCc7DQogIH0NCg0KICBpZiAoYXJn
dW1lbnRzcmVmLmxlbmd0aCA+IDApDQogIHsNCiAgICBhcHBseWV4cHIgPSBhcHBseWV4cHIuc3Vi
c3RyaW5nKDAsIGFwcGx5ZXhwci5sZW5ndGggLSAxKTsNCiAgfQ0KDQogIGFwcGx5ZXhwciArPSAn
KSc7DQoNCiAgcmV0dXJuIGV2YWwoYXBwbHlleHByKTsNCn0NCg0KZnVuY3Rpb24geGJEZWJ1Z0Ny
ZWF0ZUZ1bmN0aW9uV3JhcHBlcihzY29wZW5hbWUsIGZ1bmNuYW1lLCBwcmVjYWxsLCBwb3N0Y2Fs
bCkNCnsNCiAgdmFyIHdyYXBwZWRmdW5jOw0KICB2YXIgc2NvcGVvYmplY3QgPSBldmFsKHNjb3Bl
bmFtZSk7DQogIHZhciBmdW5jcmVmID0gc2NvcGVvYmplY3RbZnVuY25hbWVdOw0KDQogIHNjb3Bl
b2JqZWN0Wyd4YkRlYnVnX29yaWdfJyArIGZ1bmNuYW1lXSA9IGZ1bmNyZWY7DQoNCiAgd3JhcHBl
ZGZ1bmMgPSBmdW5jdGlvbiAoKSANCiAgew0KICAgIHZhciBydjsNCg0KICAgIHByZWNhbGwoc2Nv
cGVuYW1lLCBmdW5jbmFtZSwgYXJndW1lbnRzKTsNCiAgICBydiA9IHhiRGVidWdBcHBseUZ1bmN0
aW9uKGZ1bmNuYW1lLCBmdW5jcmVmLCBzY29wZW9iamVjdCwgYXJndW1lbnRzKTsNCiAgICBwb3N0
Y2FsbChzY29wZW5hbWUsIGZ1bmNuYW1lLCBhcmd1bWVudHMsIHJ2KTsNCiAgICByZXR1cm4gcnY7
DQogIH07DQoNCiAgaWYgKHR5cGVvZihmdW5jcmVmLmNvbnN0cnVjdG9yKSAhPSAndW5kZWZpbmVk
JykNCiAgICB3cmFwcGVkZnVuYy5jb25zdHJ1Y3RvciA9IGZ1bmNyZWYuY29uc3R1Y3RvcjsNCg0K
ICBpZiAodHlwZW9mKGZ1bmNyZWYucHJvdG90eXBlKSAhPSAndW5kZWZpbmVkJykNCiAgICB3cmFw
cGVkZnVuYy5wcm90b3R5cGUgPSBmdW5jcmVmLnByb3RvdHlwZTsNCg0KICBzY29wZW9iamVjdFtm
dW5jbmFtZV0gPSB3cmFwcGVkZnVuYzsNCn0NCg0KZnVuY3Rpb24geGJEZWJ1Z0NyZWF0ZU1ldGhv
ZFdyYXBwZXIoY29udGV4dG5hbWUsIGNsYXNzbmFtZSwgbWV0aG9kbmFtZSwgcHJlY2FsbCwgcG9z
dGNhbGwpDQp7DQogIHZhciBjb250ZXh0ID0gZXZhbChjb250ZXh0bmFtZSk7DQogIHZhciBtZXRo
b2RyZWYgPSBjb250ZXh0W2NsYXNzbmFtZV0ucHJvdG90eXBlW21ldGhvZG5hbWVdOw0KDQogIGNv
bnRleHRbY2xhc3NuYW1lXS5wcm90b3R5cGVbJ3hiRGVidWdfb3JpZ18nICsgbWV0aG9kbmFtZV0g
PSBtZXRob2RyZWY7DQoNCiAgdmFyIHdyYXBwZWRtZXRob2QgPSBmdW5jdGlvbiAoKSANCiAgew0K
ICAgIHZhciBydjsNCiAgICAvLyBldmFsICd0aGlzJyBhdCBtZXRob2QgcnVuIHRpbWUgdG8gcGlj
ayB1cCByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCdzIGluc3RhbmNlDQogICAgdmFyIHRoaXNyZWYg
PSBldmFsKCd0aGlzJyk7DQogICAgLy8gZXZhbCAnYXJndW1lbnRzJyBhdCBtZXRob2QgcnVuIHRp
bWUgdG8gcGljayB1cCBtZXRob2QncyBhcmd1bWVudHMNCiAgICB2YXIgYXJnc3JlZiA9IGFyZ3Vt
ZW50czsNCg0KICAgIHByZWNhbGwoY29udGV4dG5hbWUgKyAnLicgKyBjbGFzc25hbWUsIG1ldGhv
ZG5hbWUsIGFyZ3NyZWYpOw0KICAgIHJ2ID0geGJEZWJ1Z0FwcGx5RnVuY3Rpb24obWV0aG9kbmFt
ZSwgbWV0aG9kcmVmLCB0aGlzcmVmLCBhcmdzcmVmKTsNCiAgICBwb3N0Y2FsbChjb250ZXh0bmFt
ZSArICcuJyArIGNsYXNzbmFtZSwgbWV0aG9kbmFtZSwgYXJnc3JlZiwgcnYpOw0KICAgIHJldHVy
biBydjsNCiAgfTsNCg0KICByZXR1cm4gd3JhcHBlZG1ldGhvZDsNCn0NCg0KZnVuY3Rpb24geGJE
ZWJ1Z1BlcnNpc3RUb1N0cmluZyhvYmopDQp7DQogIHZhciBzID0gJyc7DQogIHZhciBwOw0KDQog
IGlmIChvYmogPT0gbnVsbCkNCiAgICAgcmV0dXJuICdudWxsJzsNCg0KICBzd2l0Y2godHlwZW9m
KG9iaikpDQogIHsNCiAgICBjYXNlICdudW1iZXInOg0KICAgICAgIHJldHVybiBvYmo7DQogICAg
Y2FzZSAnc3RyaW5nJzoNCiAgICAgICByZXR1cm4gJyInICsgb2JqICsgJyInOw0KICAgIGNhc2Ug
J3VuZGVmaW5lZCc6DQogICAgICAgcmV0dXJuICd1bmRlZmluZWQnOw0KICAgIGNhc2UgJ2Jvb2xl
YW4nOg0KICAgICAgIHJldHVybiBvYmogKyAnJzsNCiAgfQ0KDQogIGlmIChvYmouY29uc3RydWN0
b3IpDQogICAgcmV0dXJuICdbJyArIHhiRGVidWdHZXRGdW5jdGlvbk5hbWUob2JqLmNvbnN0cnVj
dG9yKSArICddJzsNCg0KICByZXR1cm4gbnVsbDsNCn0NCg0KZnVuY3Rpb24geGJEZWJ1Z1RyYWNl
QmVmb3JlKHNjb3BlbmFtZSwgZnVuY25hbWUsIGZ1bmNhcmd1bWVudHMpIA0Kew0KICB2YXIgaTsN
CiAgdmFyIHMgPSAnJzsNCiAgdmFyIGV4ZWNwcm9maWxlID0geGJERUJVRy5leGVjcHJvZmlsZVtz
Y29wZW5hbWUgKyAnLicgKyBmdW5jbmFtZV07DQogIGlmICghZXhlY3Byb2ZpbGUpDQogICAgZXhl
Y3Byb2ZpbGUgPSB4YkRFQlVHLmV4ZWNwcm9maWxlW3Njb3BlbmFtZSArICcuJyArIGZ1bmNuYW1l
XSA9IHsgc3RhcnRlZDogMCwgdGltZTogMCwgY291bnQ6IDAgfTsNCg0KICBmb3IgKGkgPSAwOyBp
IDwgZnVuY2FyZ3VtZW50cy5sZW5ndGg7IGkrKykNCiAgew0KICAgIHMgKz0geGJEZWJ1Z1BlcnNp
c3RUb1N0cmluZyhmdW5jYXJndW1lbnRzW2ldKTsNCiAgICBpZiAoaSA8IGZ1bmNhcmd1bWVudHMu
bGVuZ3RoIC0gMSkNCiAgICAgIHMgKz0gJywgJzsNCiAgfQ0KDQogIHhiREVCVUcuZHVtcCgnZW50
ZXIgJyArIHNjb3BlbmFtZSArICcuJyArIGZ1bmNuYW1lICsgJygnICsgcyArICcpJyk7DQogIGV4
ZWNwcm9maWxlLnN0YXJ0ZWQgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpOw0KfQ0KDQpmdW5jdGlv
biB4YkRlYnVnVHJhY2VBZnRlcihzY29wZW5hbWUsIGZ1bmNuYW1lLCBmdW5jYXJndW1lbnRzLCBy
dikgDQp7DQogIHZhciBpOw0KICB2YXIgcyA9ICcnOw0KICB2YXIgZXhlY3Byb2ZpbGUgPSB4YkRF
QlVHLmV4ZWNwcm9maWxlW3Njb3BlbmFtZSArICcuJyArIGZ1bmNuYW1lXTsNCiAgaWYgKCFleGVj
cHJvZmlsZSkNCiAgICB4YkRFQlVHLmR1bXAoJ3hiRGVidWdUcmFjZUFmdGVyOiBleGVjcHJvZmls
ZSBub3QgY3JlYXRlZCBmb3IgJyArIHNjb3BlbmFtZSArICcuJyArIGZ1bmNuYW1lKTsNCiAgZWxz
ZSBpZiAoZXhlY3Byb2ZpbGUuc3RhcnRlZCA9PSAwKQ0KICAgIHhiREVCVUcuZHVtcCgneGJEZWJ1
Z1RyYWNlQWZ0ZXI6IGV4ZWNwcm9maWxlLnN0YXJ0ZWQgPT0gMCBmb3IgJyArIHNjb3BlbmFtZSAr
ICcuJyArIGZ1bmNuYW1lKTsNCiAgZWxzZSANCiAgew0KICAgIGV4ZWNwcm9maWxlLnRpbWUgKz0g
KG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIGV4ZWNwcm9maWxlLnN0YXJ0ZWQ7DQogICAgZXhlY3By
b2ZpbGUuY291bnQrKzsNCiAgICBleGVjcHJvZmlsZS5zdGFydGVkID0gMDsNCiAgfQ0KDQogIGZv
ciAoaSA9IDA7IGkgPCBmdW5jYXJndW1lbnRzLmxlbmd0aDsgaSsrKQ0KICB7DQogICAgcyArPSB4
YkRlYnVnUGVyc2lzdFRvU3RyaW5nKGZ1bmNhcmd1bWVudHNbaV0pOw0KICAgIGlmIChpIDwgZnVu
Y2FyZ3VtZW50cy5sZW5ndGggLSAxKQ0KICAgICAgcyArPSAnLCAnOw0KICB9DQoNCiAgeGJERUJV
Ry5kdW1wKCdleGl0ICAnICsgc2NvcGVuYW1lICsgJy4nICsgZnVuY25hbWUgKyAnKCcgKyBzICsg
Jyk9PScgKyB4YkRlYnVnUGVyc2lzdFRvU3RyaW5nKHJ2KSk7DQp9DQoNCmZ1bmN0aW9uIHhiRGVi
dWdUcmFjZUZ1bmN0aW9uKHNjb3BlbmFtZSwgZnVuY25hbWUpDQp7DQogIHhiRGVidWdDcmVhdGVG
dW5jdGlvbldyYXBwZXIoc2NvcGVuYW1lLCBmdW5jbmFtZSwgeGJEZWJ1Z1RyYWNlQmVmb3JlLCB4
YkRlYnVnVHJhY2VBZnRlcik7DQp9DQoNCmZ1bmN0aW9uIHhiRGVidWdUcmFjZU9iamVjdChjb250
ZXh0bmFtZSwgY2xhc3NuYW1lKQ0Kew0KICB2YXIgY2xhc3NyZWYgPSBldmFsKGNvbnRleHRuYW1l
ICsgJy4nICsgY2xhc3NuYW1lKTsNCiAgdmFyIHA7DQogIHZhciBzcDsNCg0KICBpZiAoIWNsYXNz
cmVmIHx8ICFjbGFzc3JlZi5wcm90b3R5cGUpDQogICAgIHJldHVybjsNCg0KICBmb3IgKHAgaW4g
Y2xhc3NyZWYucHJvdG90eXBlKQ0KICB7DQogICAgc3AgPSBwICsgJyc7DQogICAgaWYgKHR5cGVv
ZihjbGFzc3JlZi5wcm90b3R5cGVbc3BdKSA9PSAnZnVuY3Rpb24nICYmIChzcCkuaW5kZXhPZign
eGJEZWJ1Z19vcmlnJykgPT0gLTEpDQogICAgew0KICAgICAgY2xhc3NyZWYucHJvdG90eXBlW3Nw
XSA9IHhiRGVidWdDcmVhdGVNZXRob2RXcmFwcGVyKGNvbnRleHRuYW1lLCBjbGFzc25hbWUsIHNw
LCB4YkRlYnVnVHJhY2VCZWZvcmUsIHhiRGVidWdUcmFjZUFmdGVyKTsNCiAgICB9DQogIH0NCn0N
Cg0KZnVuY3Rpb24geGJEZWJ1Z0R1bXBQcm9maWxlKCkNCnsNCiAgdmFyIHA7DQogIHZhciBleGVj
cHJvZmlsZTsNCiAgdmFyIGF2ZzsNCg0KICBmb3IgKHAgaW4geGJERUJVRy5leGVjcHJvZmlsZSkN
CiAgew0KICAgIGV4ZWNwcm9maWxlID0geGJERUJVRy5leGVjcHJvZmlsZVtwXTsNCiAgICBhdmcg
PSBNYXRoLnJvdW5kICggMTAwICogZXhlY3Byb2ZpbGUudGltZS9leGVjcHJvZmlsZS5jb3VudCkg
LzEwMDsNCiAgICB4YkRFQlVHLmR1bXAoJ0V4ZWN1dGlvbiBwcm9maWxlICcgKyBwICsgJyBjYWxs
ZWQgJyArIGV4ZWNwcm9maWxlLmNvdW50ICsgJyB0aW1lcy4gVG90YWwgdGltZT0nICsgZXhlY3By
b2ZpbGUudGltZSArICdtcy4gQXZnIFRpbWU9JyArIGF2ZyArICdtcy4nKTsNCiAgfQ0KfQ0KXxBC
ZmlsZTovLy9Vc2Vycy9kZGtpbHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC94
YkRlYnVnLmpzXxAYYXBwbGljYXRpb24veC1qYXZhc2NyaXB01AYHCAkPEBENTxEB92JwbGlzdDAw
1AECAwQFBgcKWSRhcmNoaXZlclgkdmVyc2lvblQkdG9wWCRvYmplY3RzXxAPTlNLZXllZEFyY2hp
dmVyEgABhqDRCAlfEBNXZWJSZXNvdXJjZVJlc3BvbnNlgAGnCwwbISIpKlUkbnVsbNcNDg8QERIT
FBUWFxgZGlIkMlIkM1IkNFIkMFYkY2xhc3NSJDVSJDGABYAAES9mEAeABiN/7////////4AC0xwd
ERUfIFdOUy5iYXNlW05TLnJlbGF0aXZlgACAA4AEXxBFZmlsZTovLy9Vc2Vycy9kZGtpbHplci9Q
cm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9qc1VuaXRDb3JlLmpz0iMkJSZYJGNsYXNz
ZXNaJGNsYXNzbmFtZaMmJyhVTlNVUkxWJU5TVVJMWE5TT2JqZWN0XxAYYXBwbGljYXRpb24veC1q
YXZhc2NyaXB00iMkKyyiLChdTlNVUkxSZXNwb25zZQAIABEAGwAkACkAMgBEAEkATABiAGQAbABy
AIEAhACHAIoAjQCUAJcAmgCcAJ4AoQCjAKUArgCwALcAvwDLAM0AzwDRARkBHgEnATIBNgE8AUMB
TAFnAWwBbwAAAAAAAAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAAF9TxEvZi8qIEBhdXRob3IgRWR3
YXJkIEhpZWF0dCwgZWR3YXJkQGpzdW5pdC5uZXQgKi8NCg0KdmFyIEpTVU5JVF9VTkRFRklORURf
VkFMVUU7DQp2YXIgSlNVTklUX1ZFUlNJT049IjIuMSI7DQp2YXIgaXNUZXN0UGFnZUxvYWRlZCA9
IGZhbHNlOw0KDQovL2hhY2sgZm9yIE5TNjIgYnVnDQpmdW5jdGlvbiBqc1VuaXRGaXhUb3AoKSB7
DQogIHZhciB0ZW1wVG9wID0gdG9wOw0KICBpZiAoIXRlbXBUb3ApIHsNCiAgICB0ZW1wVG9wID0g
d2luZG93Ow0KICAgIHdoaWxlICh0ZW1wVG9wLnBhcmVudCkgew0KICAgICAgdGVtcFRvcCA9IHRl
bXBUb3AucGFyZW50Ow0KICAgICAgaWYgKHRlbXBUb3AudG9wICYmIHRlbXBUb3AudG9wLmpzVW5p
dFRlc3RTdWl0ZSkgew0KICAgICAgICB0ZW1wVG9wID0gdGVtcFRvcC50b3A7DQogICAgICAgIGJy
ZWFrOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICB0cnkgew0KICAgIHdpbmRvdy50b3AgPSB0ZW1w
VG9wOw0KICB9IGNhdGNoIChlKSB7fQ0KfQ0KDQpqc1VuaXRGaXhUb3AoKTsNCg0KZnVuY3Rpb24g
X2Rpc3BsYXlTdHJpbmdGb3JWYWx1ZShhVmFyKSB7DQogIGlmIChhVmFyID09PSBudWxsKSANCiAg
ICByZXR1cm4gJ251bGwnOw0KICAgIA0KICBpZiAoYVZhciA9PT0gdG9wLkpTVU5JVF9VTkRFRklO
RURfVkFMVUUpIA0KICAgIHJldHVybiAndW5kZWZpbmVkJzsNCiAgICANCiAgcmV0dXJuIGFWYXI7
DQp9DQoNCmZ1bmN0aW9uIGZhaWwoZmFpbHVyZU1lc3NhZ2UpIHsNCiAgdGhyb3cgbmV3IEpzVW5p
dEV4Y2VwdGlvbihudWxsLCBmYWlsdXJlTWVzc2FnZSk7DQp9DQoNCmZ1bmN0aW9uIGVycm9yKGVy
cm9yTWVzc2FnZSkgew0KICB2YXIgZXJyb3JPYmplY3QgICAgICAgICA9IG5ldyBPYmplY3QoKTsN
CiAgZXJyb3JPYmplY3QuZGVzY3JpcHRpb24gPSBlcnJvck1lc3NhZ2U7DQogIGVycm9yT2JqZWN0
LnN0YWNrVHJhY2UgID0gZ2V0U3RhY2tUcmFjZSgpOw0KICB0aHJvdyBlcnJvck9iamVjdDsNCn0N
Cg0KZnVuY3Rpb24gYXJndW1lbnRzSW5jbHVkZUNvbW1lbnRzKGV4cGVjdGVkTnVtYmVyT2ZOb25D
b21tZW50QXJncywgYXJncykgew0KICByZXR1cm4gYXJncy5sZW5ndGggPT0gZXhwZWN0ZWROdW1i
ZXJPZk5vbkNvbW1lbnRBcmdzICsgMTsNCn0NCg0KZnVuY3Rpb24gY29tbWVudEFyZyhleHBlY3Rl
ZE51bWJlck9mTm9uQ29tbWVudEFyZ3MsIGFyZ3MpIHsNCiAgaWYgKGFyZ3VtZW50c0luY2x1ZGVD
b21tZW50cyhleHBlY3RlZE51bWJlck9mTm9uQ29tbWVudEFyZ3MsIGFyZ3MpKQ0KICAgIHJldHVy
biBhcmdzWzBdOw0KDQogIHJldHVybiBudWxsOw0KfQ0KDQpmdW5jdGlvbiBub25Db21tZW50QXJn
KGRlc2lyZWROb25Db21tZW50QXJnSW5kZXgsIGV4cGVjdGVkTnVtYmVyT2ZOb25Db21tZW50QXJn
cywgYXJncykgew0KICByZXR1cm4gYXJndW1lbnRzSW5jbHVkZUNvbW1lbnRzKGV4cGVjdGVkTnVt
YmVyT2ZOb25Db21tZW50QXJncywgYXJncykgPw0KICAgIGFyZ3NbZGVzaXJlZE5vbkNvbW1lbnRB
cmdJbmRleF0gOg0KICAgIGFyZ3NbZGVzaXJlZE5vbkNvbW1lbnRBcmdJbmRleCAtIDFdOw0KfQ0K
DQpmdW5jdGlvbiBfdmFsaWRhdGVBcmd1bWVudHMoZXhwZWN0ZWROdW1iZXJPZk5vbkNvbW1lbnRB
cmdzLCBhcmdzKSB7DQogIGlmICghKCBhcmdzLmxlbmd0aCA9PSBleHBlY3RlZE51bWJlck9mTm9u
Q29tbWVudEFyZ3MgfHwNCiAgICAgICAgKGFyZ3MubGVuZ3RoID09IGV4cGVjdGVkTnVtYmVyT2ZO
b25Db21tZW50QXJncyArIDEgJiYgdHlwZW9mKGFyZ3NbMF0pID09ICdzdHJpbmcnKSApKQ0KICAg
IGVycm9yKCdJbmNvcnJlY3QgYXJndW1lbnRzIHBhc3NlZCB0byBhc3NlcnQgZnVuY3Rpb24nKTsN
Cn0NCg0KZnVuY3Rpb24gX2Fzc2VydChjb21tZW50LCBib29sZWFuVmFsdWUsIGZhaWx1cmVNZXNz
YWdlKSB7DQogIGlmICghYm9vbGVhblZhbHVlKQ0KICAgIHRocm93IG5ldyBKc1VuaXRFeGNlcHRp
b24oY29tbWVudCwgZmFpbHVyZU1lc3NhZ2UpOw0KfQ0KDQpmdW5jdGlvbiBhc3NlcnQoKSB7DQog
IF92YWxpZGF0ZUFyZ3VtZW50cygxLCBhcmd1bWVudHMpOw0KICB2YXIgYm9vbGVhblZhbHVlPW5v
bkNvbW1lbnRBcmcoMSwgMSwgYXJndW1lbnRzKTsNCg0KICBpZiAodHlwZW9mKGJvb2xlYW5WYWx1
ZSkgIT0gJ2Jvb2xlYW4nKQ0KICAgIGVycm9yKCdCYWQgYXJndW1lbnQgdG8gYXNzZXJ0KGJvb2xl
YW4pJyk7DQoNCiAgX2Fzc2VydChjb21tZW50QXJnKDEsIGFyZ3VtZW50cyksIGJvb2xlYW5WYWx1
ZSA9PT0gdHJ1ZSwgJ0NhbGwgdG8gYXNzZXJ0KGJvb2xlYW4pIHdpdGggZmFsc2UnKTsNCn0NCg0K
ZnVuY3Rpb24gYXNzZXJ0VHJ1ZSgpIHsNCiAgX3ZhbGlkYXRlQXJndW1lbnRzKDEsIGFyZ3VtZW50
cyk7DQogIHZhciBib29sZWFuVmFsdWU9bm9uQ29tbWVudEFyZygxLCAxLCBhcmd1bWVudHMpOw0K
DQogIGlmICh0eXBlb2YoYm9vbGVhblZhbHVlKSAhPSAnYm9vbGVhbicpDQogICAgZXJyb3IoJ0Jh
ZCBhcmd1bWVudCB0byBhc3NlcnRUcnVlKGJvb2xlYW4pJyk7DQoNCiAgX2Fzc2VydChjb21tZW50
QXJnKDEsIGFyZ3VtZW50cyksIGJvb2xlYW5WYWx1ZSA9PT0gdHJ1ZSwgJ0NhbGwgdG8gYXNzZXJ0
VHJ1ZShib29sZWFuKSB3aXRoIGZhbHNlJyk7DQp9DQoNCmZ1bmN0aW9uIGFzc2VydEZhbHNlKCkg
ew0KICBfdmFsaWRhdGVBcmd1bWVudHMoMSwgYXJndW1lbnRzKTsNCiAgdmFyIGJvb2xlYW5WYWx1
ZT1ub25Db21tZW50QXJnKDEsIDEsIGFyZ3VtZW50cyk7DQoNCiAgaWYgKHR5cGVvZihib29sZWFu
VmFsdWUpICE9ICdib29sZWFuJykNCiAgICBlcnJvcignQmFkIGFyZ3VtZW50IHRvIGFzc2VydEZh
bHNlKGJvb2xlYW4pJyk7DQoNCiAgX2Fzc2VydChjb21tZW50QXJnKDEsIGFyZ3VtZW50cyksIGJv
b2xlYW5WYWx1ZSA9PT0gZmFsc2UsICdDYWxsIHRvIGFzc2VydEZhbHNlKGJvb2xlYW4pIHdpdGgg
dHJ1ZScpOw0KfQ0KDQpmdW5jdGlvbiBhc3NlcnRFcXVhbHMoKSB7DQogIF92YWxpZGF0ZUFyZ3Vt
ZW50cygyLCBhcmd1bWVudHMpOw0KICB2YXIgdmFyMT1ub25Db21tZW50QXJnKDEsIDIsIGFyZ3Vt
ZW50cyk7DQogIHZhciB2YXIyPW5vbkNvbW1lbnRBcmcoMiwgMiwgYXJndW1lbnRzKTsNCiAgX2Fz
c2VydChjb21tZW50QXJnKDIsIGFyZ3VtZW50cyksIHZhcjEgPT09IHZhcjIsICdFeHBlY3RlZCAn
ICsgdmFyMSArICcgKCcgKyB0eXBlb2YodmFyMSkgKyAnKSBidXQgd2FzICcgKyBfZGlzcGxheVN0
cmluZ0ZvclZhbHVlKHZhcjIpICsgJyAoJyArIHR5cGVvZih2YXIyKSArICcpJyk7DQp9DQoNCmZ1
bmN0aW9uIGFzc2VydE5vdEVxdWFscygpIHsNCiAgX3ZhbGlkYXRlQXJndW1lbnRzKDIsIGFyZ3Vt
ZW50cyk7DQogIHZhciB2YXIxPW5vbkNvbW1lbnRBcmcoMSwgMiwgYXJndW1lbnRzKTsNCiAgdmFy
IHZhcjI9bm9uQ29tbWVudEFyZygyLCAyLCBhcmd1bWVudHMpOw0KICBfYXNzZXJ0KGNvbW1lbnRB
cmcoMiwgYXJndW1lbnRzKSwgdmFyMSAhPT0gdmFyMiwgJ0V4cGVjdGVkIG5vdCB0byBiZSAnICsg
X2Rpc3BsYXlTdHJpbmdGb3JWYWx1ZSh2YXIyKSk7DQp9DQoNCmZ1bmN0aW9uIGFzc2VydE51bGwo
KSB7DQogIF92YWxpZGF0ZUFyZ3VtZW50cygxLCBhcmd1bWVudHMpOw0KICB2YXIgYVZhcj1ub25D
b21tZW50QXJnKDEsIDEsIGFyZ3VtZW50cyk7DQogIF9hc3NlcnQoY29tbWVudEFyZygxLCBhcmd1
bWVudHMpLCBhVmFyID09PSBudWxsLCAnRXhwZWN0ZWQgbnVsbCBidXQgd2FzICcgKyBfZGlzcGxh
eVN0cmluZ0ZvclZhbHVlKGFWYXIpKTsNCn0NCg0KZnVuY3Rpb24gYXNzZXJ0Tm90TnVsbCgpIHsN
CiAgX3ZhbGlkYXRlQXJndW1lbnRzKDEsIGFyZ3VtZW50cyk7DQogIHZhciBhVmFyPW5vbkNvbW1l
bnRBcmcoMSwgMSwgYXJndW1lbnRzKTsNCiAgX2Fzc2VydChjb21tZW50QXJnKDEsIGFyZ3VtZW50
cyksIGFWYXIgIT09IG51bGwsICdFeHBlY3RlZCBub3QgdG8gYmUgbnVsbCcpOw0KfQ0KDQpmdW5j
dGlvbiBhc3NlcnRVbmRlZmluZWQoKSB7DQogIF92YWxpZGF0ZUFyZ3VtZW50cygxLCBhcmd1bWVu
dHMpOw0KICB2YXIgYVZhcj1ub25Db21tZW50QXJnKDEsIDEsIGFyZ3VtZW50cyk7DQogIF9hc3Nl
cnQoY29tbWVudEFyZygxLCBhcmd1bWVudHMpLCBhVmFyID09PSB0b3AuSlNVTklUX1VOREVGSU5F
RF9WQUxVRSwgJ0V4cGVjdGVkIHVuZGVmaW5lZCBidXQgd2FzICcgKyBfZGlzcGxheVN0cmluZ0Zv
clZhbHVlKGFWYXIpKTsNCn0NCg0KZnVuY3Rpb24gYXNzZXJ0Tm90VW5kZWZpbmVkKCkgew0KICBf
dmFsaWRhdGVBcmd1bWVudHMoMSwgYXJndW1lbnRzKTsNCiAgdmFyIGFWYXI9bm9uQ29tbWVudEFy
ZygxLCAxLCBhcmd1bWVudHMpOw0KICBfYXNzZXJ0KGNvbW1lbnRBcmcoMSwgYXJndW1lbnRzKSwg
YVZhciAhPT0gdG9wLkpTVU5JVF9VTkRFRklORURfVkFMVUUsICdFeHBlY3RlZCBub3QgdG8gYmUg
dW5kZWZpbmVkJyk7DQp9DQoNCmZ1bmN0aW9uIGFzc2VydE5hTigpIHsNCiAgX3ZhbGlkYXRlQXJn
dW1lbnRzKDEsIGFyZ3VtZW50cyk7DQogIHZhciBhVmFyPW5vbkNvbW1lbnRBcmcoMSwgMSwgYXJn
dW1lbnRzKTsNCiAgX2Fzc2VydChjb21tZW50QXJnKDEsIGFyZ3VtZW50cyksIGlzTmFOKGFWYXIp
LCAnRXhwZWN0ZWQgTmFOJyk7DQp9DQoNCmZ1bmN0aW9uIGFzc2VydE5vdE5hTigpIHsNCiAgX3Zh
bGlkYXRlQXJndW1lbnRzKDEsIGFyZ3VtZW50cyk7DQogIHZhciBhVmFyPW5vbkNvbW1lbnRBcmco
MSwgMSwgYXJndW1lbnRzKTsNCiAgX2Fzc2VydChjb21tZW50QXJnKDEsIGFyZ3VtZW50cyksICFp
c05hTihhVmFyKSwgJ0V4cGVjdGVkIG5vdCBOYU4nKTsNCn0NCg0KZnVuY3Rpb24gaXNMb2FkZWQo
KSB7DQogIHJldHVybiBpc1Rlc3RQYWdlTG9hZGVkOw0KfQ0KDQpmdW5jdGlvbiBzZXRVcCgpIHsN
Cn0NCg0KZnVuY3Rpb24gdGVhckRvd24oKSB7DQp9DQoNCmZ1bmN0aW9uIGdldEZ1bmN0aW9uTmFt
ZShhRnVuY3Rpb24pIHsNCiAgdmFyIG5hbWUgPSBhRnVuY3Rpb24udG9TdHJpbmcoKS5tYXRjaCgv
ZnVuY3Rpb24gKFx3KikvKVsxXTsNCg0KICBpZiAoKG5hbWUgPT0gbnVsbCkgfHwgKG5hbWUubGVu
Z3RoID09IDApKQ0KICAgIG5hbWUgPSAnYW5vbnltb3VzJzsNCg0KICByZXR1cm4gbmFtZTsNCn0N
Cg0KZnVuY3Rpb24gZ2V0U3RhY2tUcmFjZSgpIHsNCiAgdmFyIHJlc3VsdCA9ICcnOw0KDQogIGlm
ICh0eXBlb2YoYXJndW1lbnRzLmNhbGxlcikgIT0gJ3VuZGVmaW5lZCcpIHsgLy8gSUUsIG5vdCBF
Q01BDQogICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50cy5jYWxsZXI7IGEgIT0gbnVsbDsgYSA9IGEu
Y2FsbGVyKSB7DQogICAgICByZXN1bHQgKz0gJz4gJyArIGdldEZ1bmN0aW9uTmFtZShhLmNhbGxl
ZSkgKyAnXG4nOw0KICAgICAgaWYgKGEuY2FsbGVyID09IGEpIHsNCiAgICAgICAgcmVzdWx0ICs9
ICcqJzsNCiAgICAgICAgYnJlYWs7DQogICAgICB9DQogICAgfQ0KICB9DQogIGVsc2UgeyAvLyBN
b3ppbGxhLCBub3QgRUNNQQ0KICAgIC8vIGZha2UgYW4gZXhjZXB0aW9uIHNvIHdlIGNhbiBnZXQg
TW96aWxsYSdzIGVycm9yIHN0YWNrDQogICAgdmFyIHRlc3RFeGNwOw0KICAgIHRyeQ0KICAgIHsN
CiAgICAgIGZvby5iYXI7DQogICAgfQ0KICAgIGNhdGNoKHRlc3RFeGNwKQ0KICAgIHsNCiAgICAg
IHZhciBzdGFjayA9IHBhcnNlRXJyb3JTdGFjayh0ZXN0RXhjcCk7DQogICAgICBmb3IgKHZhciBp
ID0gMTsgaSA8IHN0YWNrLmxlbmd0aDsgaSsrKQ0KICAgICAgew0KICAgICAgICByZXN1bHQgKz0g
Jz4gJyArIHN0YWNrW2ldICsgJ1xuJzsNCiAgICAgIH0NCiAgICB9DQogIH0NCg0KICByZXR1cm4g
cmVzdWx0Ow0KfQ0KDQpmdW5jdGlvbiBwYXJzZUVycm9yU3RhY2soZXhjcCkNCnsNCiAgdmFyIHN0
YWNrID0gW107DQogIHZhciBuYW1lOw0KICANCiAgaWYgKCFleGNwIHx8ICFleGNwLnN0YWNrKQ0K
ICB7DQogICAgcmV0dXJuIHN0YWNrOw0KICB9DQogIA0KICB2YXIgc3RhY2tsaXN0ID0gZXhjcC5z
dGFjay5zcGxpdCgnXG4nKTsNCg0KICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YWNrbGlzdC5sZW5n
dGggLSAxOyBpKyspDQogIHsNCiAgICB2YXIgZnJhbWVkYXRhID0gc3RhY2tsaXN0W2ldOw0KDQog
ICAgbmFtZSA9IGZyYW1lZGF0YS5tYXRjaCgvXihcdyopLylbMV07DQogICAgaWYgKCFuYW1lKSB7
DQogICAgICBuYW1lID0gJ2Fub255bW91cyc7DQogICAgfQ0KDQogICAgc3RhY2tbc3RhY2subGVu
Z3RoXSA9IG5hbWU7DQogIH0NCiAgLy8gcmVtb3ZlIHRvcCBsZXZlbCBhbm9ueW1vdXMgZnVuY3Rp
b25zIHRvIG1hdGNoIElFDQoNCiAgd2hpbGUgKHN0YWNrLmxlbmd0aCAmJiBzdGFja1tzdGFjay5s
ZW5ndGggLSAxXSA9PSAnYW5vbnltb3VzJykNCiAgew0KICAgIHN0YWNrLmxlbmd0aCA9IHN0YWNr
Lmxlbmd0aCAtIDE7DQogIH0NCiAgcmV0dXJuIHN0YWNrOw0KfQ0KDQpmdW5jdGlvbiBKc1VuaXRF
eGNlcHRpb24oY29tbWVudCwgbWVzc2FnZSkgew0KICB0aGlzLmlzSnNVbml0RXhjZXB0aW9uID0g
dHJ1ZTsNCiAgdGhpcy5jb21tZW50ICAgICAgICAgICA9IGNvbW1lbnQ7DQogIHRoaXMuanNVbml0
TWVzc2FnZSAgICAgPSBtZXNzYWdlOw0KICB0aGlzLnN0YWNrVHJhY2UgICAgICAgID0gZ2V0U3Rh
Y2tUcmFjZSgpOw0KfQ0KDQpmdW5jdGlvbiB3YXJuKCkgew0KICBpZiAodG9wLnRyYWNlciAhPSBu
dWxsKSANCiAgICB0b3AudHJhY2VyLndhcm4oYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pOw0K
fQ0KDQpmdW5jdGlvbiBpbmZvcm0oKSB7DQogIGlmICh0b3AudHJhY2VyICE9IG51bGwpIA0KICAg
IHRvcC50cmFjZXIuaW5mb3JtKGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKTsNCn0NCg0KZnVu
Y3Rpb24gaW5mbygpIHsNCiAgaW5mb3JtKGFyZ3VtZW50c1swXSwgYXJndW1lbnRzWzFdKTsNCn0N
Cg0KZnVuY3Rpb24gZGVidWcoKSB7DQogIGlmICh0b3AudHJhY2VyICE9IG51bGwpIA0KICAgIHRv
cC50cmFjZXIuZGVidWcoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0pOw0KfQ0KDQpmdW5jdGlv
biBzZXRqc1VuaXRUcmFjZXIoYWpzVW5pdFRyYWNlcikgew0KICB0b3AudHJhY2VyPWFqc1VuaXRU
cmFjZXI7DQp9DQoNCmZ1bmN0aW9uIHRyaW0oc3RyKSB7DQogIGlmIChzdHIgPT0gbnVsbCkgDQog
ICAgcmV0dXJuIG51bGw7DQoNCiAgdmFyIHN0YXJ0aW5nSW5kZXggPSAwOw0KICB2YXIgZW5kaW5n
SW5kZXggICA9IHN0ci5sZW5ndGgtMTsNCiAgDQogIHdoaWxlIChzdHIuc3Vic3RyaW5nKHN0YXJ0
aW5nSW5kZXgsIHN0YXJ0aW5nSW5kZXgrMSkgPT0gJyAnKQ0KICAgIHN0YXJ0aW5nSW5kZXgrKzsN
Cg0KICB3aGlsZSAoc3RyLnN1YnN0cmluZyhlbmRpbmdJbmRleCwgZW5kaW5nSW5kZXgrMSkgPT0g
JyAnKQ0KICAgIGVuZGluZ0luZGV4LS07DQoNCiAgaWYgKGVuZGluZ0luZGV4IDwgc3RhcnRpbmdJ
bmRleCkgDQogICAgcmV0dXJuICcnOw0KDQogIHJldHVybiBzdHIuc3Vic3RyaW5nKHN0YXJ0aW5n
SW5kZXgsIGVuZGluZ0luZGV4KzEpOw0KfQ0KDQpmdW5jdGlvbiBpc0JsYW5rKHN0cikgew0KICBy
ZXR1cm4gdHJpbShzdHIpID09ICcnOw0KfQ0KDQovLyB0aGUgZnVuY3Rpb25zIHB1c2goYW5BcnJh
eSwgYW5PYmplY3QpIGFuZCBwb3AoYW5BcnJheSkgDQovLyBleGlzdCBiZWNhdXNlIHRoZSBKYXZh
U2NyaXB0IEFycmF5LnB1c2goYW5PYmplY3QpIGFuZCBBcnJheS5wb3AoKSANCi8vIGZ1bmN0aW9u
cyBhcmUgbm90IGF2YWlsYWJsZSBpbiBJRSA1LjANCg0KZnVuY3Rpb24gcHVzaChhbkFycmF5LCBh
bk9iamVjdCkgew0KICBhbkFycmF5W2FuQXJyYXkubGVuZ3RoXT1hbk9iamVjdDsNCn0NCmZ1bmN0
aW9uIHBvcChhbkFycmF5KSB7DQogIGlmIChhbkFycmF5Lmxlbmd0aD49MSkgew0KICAgIGRlbGV0
ZSBhbkFycmF5W2FuQXJyYXkubGVuZ3RoIC0gMV07DQogICAgYW5BcnJheS5sZW5ndGgtLTsNCiAg
fQ0KfQ0KDQovLyBzYWZlLCBzdHJpY3QgYWNjZXNzIHRvIGpzVW5pdFBhcm1IYXNoDQpmdW5jdGlv
biBqc1VuaXRHZXRQYXJtKG5hbWUpDQp7DQogIGlmICh0eXBlb2YodG9wLmpzVW5pdFBhcm1IYXNo
W25hbWVdKSAhPSAndW5kZWZpbmVkJykNCiAgew0KICAgIHJldHVybiB0b3AuanNVbml0UGFybUhh
c2hbbmFtZV07DQogIH0NCiAgcmV0dXJuIG51bGw7DQp9DQoNCmlmICh0b3AgJiYgdHlwZW9mKHRv
cC54YkRFQlVHKSAhPSAndW5kZWZpbmVkJyAmJiB0b3AueGJERUJVRy5vbiAmJiB0b3AudGVzdE1h
bmFnZXIpDQp7DQogIHRvcC54YkRlYnVnVHJhY2VPYmplY3QoJ3RvcC50ZXN0TWFuYWdlci5jb250
YWluZXJUZXN0RnJhbWUnLCAnSlNVbml0RXhjZXB0aW9uJyk7DQogIC8vIGFzc2VydHMNCiAgdG9w
LnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1l
JywgJ19kaXNwbGF5U3RyaW5nRm9yVmFsdWUnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9u
KCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ2Vycm9yJyk7DQogIHRvcC54
YkRlYnVnVHJhY2VGdW5jdGlvbigndG9wLnRlc3RNYW5hZ2VyLmNvbnRhaW5lclRlc3RGcmFtZScs
ICdhcmd1bWVudHNJbmNsdWRlQ29tbWVudHMnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9u
KCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ2NvbW1lbnRBcmcnKTsNCiAg
dG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZy
YW1lJywgJ25vbkNvbW1lbnRBcmcnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3Au
dGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ192YWxpZGF0ZUFyZ3VtZW50cycpOw0K
ICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0
RnJhbWUnLCAnX2Fzc2VydCcpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0
TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAnYXNzZXJ0Jyk7DQogIHRvcC54YkRlYnVnVHJh
Y2VGdW5jdGlvbigndG9wLnRlc3RNYW5hZ2VyLmNvbnRhaW5lclRlc3RGcmFtZScsICdhc3NlcnRU
cnVlJyk7DQogIHRvcC54YkRlYnVnVHJhY2VGdW5jdGlvbigndG9wLnRlc3RNYW5hZ2VyLmNvbnRh
aW5lclRlc3RGcmFtZScsICdhc3NlcnRFcXVhbHMnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0
aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ2Fzc2VydE5vdEVxdWFs
cycpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5jb250YWlu
ZXJUZXN0RnJhbWUnLCAnYXNzZXJ0TnVsbCcpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24o
J3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAnYXNzZXJ0Tm90TnVsbCcpOw0K
ICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0
RnJhbWUnLCAnYXNzZXJ0VW5kZWZpbmVkJyk7DQogIHRvcC54YkRlYnVnVHJhY2VGdW5jdGlvbign
dG9wLnRlc3RNYW5hZ2VyLmNvbnRhaW5lclRlc3RGcmFtZScsICdhc3NlcnROb3RVbmRlZmluZWQn
KTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVy
VGVzdEZyYW1lJywgJ2Fzc2VydE5hTicpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3Rv
cC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAnYXNzZXJ0Tm90TmFOJyk7DQogIHRv
cC54YkRlYnVnVHJhY2VGdW5jdGlvbigndG9wLnRlc3RNYW5hZ2VyLmNvbnRhaW5lclRlc3RGcmFt
ZScsICdpc0xvYWRlZCcpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFu
YWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAnc2V0VXAnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1
bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ3RlYXJEb3duJyk7
DQogIHRvcC54YkRlYnVnVHJhY2VGdW5jdGlvbigndG9wLnRlc3RNYW5hZ2VyLmNvbnRhaW5lclRl
c3RGcmFtZScsICdnZXRGdW5jdGlvbk5hbWUnKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9u
KCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ2dldFN0YWNrVHJhY2UnKTsN
CiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVz
dEZyYW1lJywgJ3dhcm4nKTsNCiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1h
bmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ2luZm9ybScpOw0KICB0b3AueGJEZWJ1Z1RyYWNl
RnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAnZGVidWcnKTsN
CiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVz
dEZyYW1lJywgJ3NldGpzVW5pdFRyYWNlcicpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24o
J3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAndHJpbScpOw0KICB0b3AueGJE
ZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUnLCAn
aXNCbGFuaycpOw0KICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oJ3RvcC50ZXN0TWFuYWdlci5j
b250YWluZXJUZXN0RnJhbWUnLCAnbmV3T25Mb2FkRXZlbnQnKTsNCiAgdG9wLnhiRGVidWdUcmFj
ZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lJywgJ3B1c2gnKTsN
CiAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKCd0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVz
dEZyYW1lJywgJ3BvcCcpOw0KfQ0KDQpmdW5jdGlvbiBuZXdPbkxvYWRFdmVudCgpIHsNCiAgaXNU
ZXN0UGFnZUxvYWRlZCA9IHRydWU7DQp9DQoNCmZ1bmN0aW9uIGpzVW5pdFNldE9uTG9hZCh3aW5k
b3dSZWYsIG9ubG9hZEhhbmRsZXIpDQp7DQogIHZhciBpc0tvbnF1ZXJvciA9IG5hdmlnYXRvci51
c2VyQWdlbnQuaW5kZXhPZignS29ucXVlcm9yLycpICE9IC0xIHx8DQogICAgICAgICAgICAgICAg
ICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignU2FmYXJpLycpICAgICE9IC0xOw0KDQog
IGlmICh0eXBlb2Yod2luZG93UmVmLmF0dGFjaEV2ZW50KSAhPSAndW5kZWZpbmVkJykgew0KICAg
IC8vIEludGVybmV0IEV4cGxvcmVyLCBPcGVyYQ0KICAgIHdpbmRvd1JlZi5hdHRhY2hFdmVudCgi
b25sb2FkIiwgb25sb2FkSGFuZGxlcik7DQogIH0gZWxzZSBpZiAodHlwZW9mKHdpbmRvd1JlZi5h
ZGRFdmVudExpc3RlbmVyKSAhPSAndW5kZWZpbmVkJyAmJiAhaXNLb25xdWVyb3Ipew0KICAgIC8v
IE1vemlsbGEsIEtvbnF1ZXJvcg0KICAgIC8vIGV4Y2x1ZGUgS29ucXVlcm9yIGR1ZSB0byBsb2Fk
IGlzc3Vlcw0KICAgIHdpbmRvd1JlZi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgb25sb2FkSGFu
ZGxlciwgZmFsc2UpOw0KICB9IGVsc2UgaWYgKHR5cGVvZih3aW5kb3dSZWYuZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcikgIT0gJ3VuZGVmaW5lZCcgJiYgIWlzS29ucXVlcm9yKSB7DQogICAgLy8g
RE9NIDIgRXZlbnRzDQogICAgLy8gZXhjbHVkZSBNb3ppbGxhLCBLb25xdWVyb3IgZHVlIHRvIGxv
YWQgaXNzdWVzDQogICAgd2luZG93UmVmLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQi
LCBvbmxvYWRIYW5kbGVyLCBmYWxzZSk7DQogIH0gZWxzZSBpZiAodHlwZW9mKHdpbmRvd1JlZi5v
bmxvYWQpICE9ICd1bmRlZmluZWQnICYmIHdpbmRvd1JlZi5vbmxvYWQpIHsNCiAgICB3aW5kb3dS
ZWYuanN1bml0X29yaWdpbmFsX29ubG9hZCA9IHdpbmRvd1JlZi5vbmxvYWQ7DQogICAgd2luZG93
UmVmLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeyB3aW5kb3dSZWYuanN1bml0X29yaWdpbmFsX29ubG9h
ZCgpOyBvbmxvYWRIYW5kbGVyKCk7IH07DQogIH0gZWxzZSB7DQogICAgLy8gYnJvd3NlcnMgdGhh
dCBkbyBub3Qgc3VwcG9ydCB3aW5kb3dSZWYuYXR0YWNoRXZlbnQgb3IgDQogICAgLy8gd2luZG93
UmVmLmFkZEV2ZW50TGlzdGVuZXIgd2lsbCBvdmVycmlkZSBhIHBhZ2UncyBvd24gb25sb2FkIGV2
ZW50DQogICAgd2luZG93UmVmLm9ubG9hZD1vbmxvYWRIYW5kbGVyOyANCiAgfQ0KfQ0KDQpqc1Vu
aXRTZXRPbkxvYWQod2luZG93LCBuZXdPbkxvYWRFdmVudCk7XxBFZmlsZTovLy9Vc2Vycy9kZGtp
bHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9qc1VuaXRDb3JlLmpz1AYHCAkT
FBUNTxEB/mJwbGlzdDAw1AECAwQFBgcKWSRhcmNoaXZlclgkdmVyc2lvblQkdG9wWCRvYmplY3Rz
XxAPTlNLZXllZEFyY2hpdmVyEgABhqDRCAlfEBNXZWJSZXNvdXJjZVJlc3BvbnNlgAGnCwwbISIp
KlUkbnVsbNcNDg8QERITFBUWFxgZGlIkMlIkM1IkNFIkMFYkY2xhc3NSJDVSJDGABYAAEVHYEAeA
BiN/7////////4AC0xwdERUfIFdOUy5iYXNlW05TLnJlbGF0aXZlgACAA4AEXxBMZmlsZTovLy9V
c2Vycy9kZGtpbHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9qc1VuaXRUZXN0
TWFuYWdlci5qc9IjJCUmWCRjbGFzc2VzWiRjbGFzc25hbWWjJicoVU5TVVJMViVOU1VSTFhOU09i
amVjdF8QGGFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdNIjJCssoiwoXU5TVVJMUmVzcG9uc2UACAAR
ABsAJAApADIARABJAEwAYgBkAGwAcgCBAIQAhwCKAI0AlACXAJoAnACeAKEAowClAK4AsAC3AL8A
ywDNAM8A0QEgASUBLgE5AT0BQwFKAVMBbgFzAXYAAAAAAAACAQAAAAAAAAAtAAAAAAAAAAAAAAAA
AAABhE8RUdgvKiBAYXV0aG9yIEVkd2FyZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0ICovDQoN
CmZ1bmN0aW9uIGpzVW5pdFRlc3RNYW5hZ2VyKCkNCnsNCiAgdGhpcy5fd2luZG93Rm9yQWxsUHJv
YmxlbU1lc3NhZ2VzID0gbnVsbDsNCg0KDQogIHRoaXMuY29udGFpbmVyICAgICAgICAgICAgPSB0
b3AuZnJhbWVzLnRlc3RDb250YWluZXINCiAgdGhpcy5kb2N1bWVudExvYWRlciAgICAgICA9IHRv
cC5mcmFtZXMuZG9jdW1lbnRMb2FkZXI7DQogIHRoaXMubWFpbkZyYW1lICAgICAgICAgICAgPSB0
b3AuZnJhbWVzLm1haW5GcmFtZTsNCg0KICB0aGlzLmNvbnRhaW5lckNvbnRyb2xsZXIgPSB0aGlz
LmNvbnRhaW5lci5mcmFtZXMudGVzdENvbnRhaW5lckNvbnRyb2xsZXI7DQogIHRoaXMuY29udGFp
bmVyVGVzdEZyYW1lICA9IHRoaXMuY29udGFpbmVyLmZyYW1lcy50ZXN0RnJhbWU7DQoNCiAgdmFy
IG1haW5EYXRhICAgICAgICAgICAgID0gdGhpcy5tYWluRnJhbWUuZnJhbWVzLm1haW5EYXRhOw0K
DQogIC8vIGZvcm0gZWxlbWVudHMgb24gbWFpbkRhdGEgZnJhbWUNCiAgdGhpcy50ZXN0RmlsZU5h
bWUgICAgICAgID0gbWFpbkRhdGEuZG9jdW1lbnQudGVzdFJ1bm5lckZvcm0udGVzdEZpbGVOYW1l
Ow0KICB0aGlzLnJ1bkJ1dHRvbiAgICAgICAgICAgPSBtYWluRGF0YS5kb2N1bWVudC50ZXN0UnVu
bmVyRm9ybS5ydW5CdXR0b247DQogIHRoaXMudHJhY2VMZXZlbCAgICAgICAgICA9IG1haW5EYXRh
LmRvY3VtZW50LnRlc3RSdW5uZXJGb3JtLnRyYWNlTGV2ZWw7DQogIHRoaXMuY2xvc2VUcmFjZVdp
bmRvd09uTmV3UnVuID0gbWFpbkRhdGEuZG9jdW1lbnQudGVzdFJ1bm5lckZvcm0uY2xvc2VUcmFj
ZVdpbmRvd09uTmV3UnVuOw0KICB0aGlzLnRpbWVvdXQgICAgICAgICAgICAgPSBtYWluRGF0YS5k
b2N1bWVudC50ZXN0UnVubmVyRm9ybS50aW1lb3V0Ow0KICB0aGlzLnNldFVwUGFnZVRpbWVvdXQg
ICAgICA9IG1haW5EYXRhLmRvY3VtZW50LnRlc3RSdW5uZXJGb3JtLnNldFVwUGFnZVRpbWVvdXQ7
DQoNCiAgLy8gaW1hZ2Ugb3V0cHV0DQogIHRoaXMucHJvZ3Jlc3NCYXIgICAgICAgICA9IHRoaXMu
bWFpbkZyYW1lLmZyYW1lcy5tYWluUHJvZ3Jlc3MuZG9jdW1lbnQucHJvZ3Jlc3M7DQoNCiAgdGhp
cy5wcm9ibGVtc0xpc3RGaWVsZCAgICAgICAgICAgPSB0aGlzLm1haW5GcmFtZS5mcmFtZXMubWFp
bkVycm9ycy5kb2N1bWVudC50ZXN0UnVubmVyRm9ybS5wcm9ibGVtc0xpc3Q7DQogIHRoaXMudGVz
dENhc2VSZXN1bHRzRmllbGQgICAgICAgID0gdGhpcy5tYWluRnJhbWUuZnJhbWVzLm1haW5SZXN1
bHRzLmRvY3VtZW50LnJlc3VsdHNGb3JtLnRlc3RDYXNlczsgIA0KICB0aGlzLnJlc3VsdHNUaW1l
RmllbGQJCQkgICA9IHRoaXMubWFpbkZyYW1lLmZyYW1lcy5tYWluUmVzdWx0cy5kb2N1bWVudC5y
ZXN1bHRzRm9ybS50aW1lOyAgDQoNCiAgLy8gJ2xheWVyJyBvdXRwdXQgZnJhbWVzDQogIHRoaXMu
dWlGcmFtZXMgICAgICAgICAgICAgICAgICAgID0gbmV3IE9iamVjdCgpOw0KICB0aGlzLnVpRnJh
bWVzLm1haW5TdGF0dXMgICAgICAgICA9IHRoaXMubWFpbkZyYW1lLmZyYW1lcy5tYWluU3RhdHVz
Ow0KDQogIHZhciBtYWluQ291bnRzICAgICAgICAgICAgICAgICAgID0gdGhpcy5tYWluRnJhbWUu
ZnJhbWVzLm1haW5Db3VudHM7DQoNCiAgdGhpcy51aUZyYW1lcy5tYWluQ291bnRzRXJyb3JzICAg
PSBtYWluQ291bnRzLmZyYW1lcy5tYWluQ291bnRzRXJyb3JzOw0KICB0aGlzLnVpRnJhbWVzLm1h
aW5Db3VudHNGYWlsdXJlcyA9IG1haW5Db3VudHMuZnJhbWVzLm1haW5Db3VudHNGYWlsdXJlczsN
CiAgdGhpcy51aUZyYW1lcy5tYWluQ291bnRzUnVucyAgICAgPSBtYWluQ291bnRzLmZyYW1lcy5t
YWluQ291bnRzUnVuczsNCiAgdGhpcy5fYmFzZVVSTCA9ICIiOw0KDQogIHRoaXMuc2V0dXAoKTsN
Cn0NCg0KLy8gc2Vjb25kcyB0byB3YWl0IGZvciBlYWNoIHRlc3QgcGFnZSB0byBsb2FkDQpqc1Vu
aXRUZXN0TWFuYWdlci5URVNUUEFHRV9XQUlUX1NFQyAgPSAyMDsNCmpzVW5pdFRlc3RNYW5hZ2Vy
LlRJTUVPVVRfTEVOR1RIICAgICA9IDIwOw0KDQovLyBzZWNvbmRzIHRvIHdhaXQgZm9yIHNldFVw
UGFnZSB0byBjb21wbGV0ZQ0KanNVbml0VGVzdE1hbmFnZXIuU0VUVVBQQUdFX1RJTUVPVVQgICAg
PSA2MDsgDQoNCi8vIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gcG9sbHMgb24gc2V0VXBQ
YWdlcw0KanNVbml0VGVzdE1hbmFnZXIuU0VUVVBQQUdFX0lOVEVSVkFMICAgPSAxMDA7DQoNCmpz
VW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5zZXR1cCA9IGZ1bmN0aW9uICgpDQp7DQogIHRoaXMu
dG90YWxDb3VudCAgICA9IDA7DQogIHRoaXMuZXJyb3JDb3VudCAgICA9IDA7DQogIHRoaXMuZmFp
bHVyZUNvdW50ICA9IDA7DQogIHRoaXMuX3N1aXRlU3RhY2sgICA9IEFycmF5KCk7DQoNCg0KICB2
YXIgaW5pdGlhbFN1aXRlICAgPSBuZXcgdG9wLmpzVW5pdFRlc3RTdWl0ZSgpOw0KICBwdXNoKHRo
aXMuX3N1aXRlU3RhY2ssIGluaXRpYWxTdWl0ZSk7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnBy
b3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uICgpIA0Kew0KICB0aGlzLl9iYXNlVVJMID0gdGhpcy5y
ZXNvbHZlVXNlckVudGVyZWRUZXN0RmlsZU5hbWUoKTsNCiAgdmFyIGZpcnN0UXVlcnkgPSB0aGlz
Ll9iYXNlVVJMLmluZGV4T2YoIj8iKTsNCiAgaWYgKGZpcnN0UXVlcnkgPj0gMCkgew0KICAgICAg
IHRoaXMuX2Jhc2VVUkwgPSB0aGlzLl9iYXNlVVJMLnN1YnN0cmluZygwLCBmaXJzdFF1ZXJ5KTsN
CiAgfQ0KICB2YXIgbGFzdFNsYXNoID0gdGhpcy5fYmFzZVVSTC5sYXN0SW5kZXhPZigiLyIpOw0K
ICB2YXIgbGFzdFJldlNsYXNoID0gdGhpcy5fYmFzZVVSTC5sYXN0SW5kZXhPZigiXFwiKTsNCiAg
aWYgKGxhc3RSZXZTbGFzaCA+IGxhc3RTbGFzaCkgew0KICAgICBsYXN0U2xhc2ggPSBsYXN0UmV2
U2xhc2g7DQogIH0NCiAgaWYgKGxhc3RTbGFzaCA+IDApIHsNCiAgICAgdGhpcy5fYmFzZVVSTCA9
IHRoaXMuX2Jhc2VVUkwuc3Vic3RyaW5nKDAsIGxhc3RTbGFzaCArIDEpOw0KICB9DQoNCiAgdGhp
cy5fdGltZVJ1blN0YXJ0ZWQgPSBuZXcgRGF0ZSgpOw0KICB0aGlzLmluaXRpYWxpemUoKTsNCiAg
c2V0VGltZW91dCgndG9wLnRlc3RNYW5hZ2VyLl9uZXh0UGFnZSgpOycsIGpzVW5pdFRlc3RNYW5h
Z2VyLlRJTUVPVVRfTEVOR1RIKTsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLmdl
dEJhc2VVUkwgPSBmdW5jdGlvbiAoKSB7DQogIHJldHVybiB0aGlzLl9iYXNlVVJMOw0KfQ0KDQpq
c1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUuZG9uZUxvYWRpbmdQYWdlID0gZnVuY3Rpb24gKHBh
Z2VOYW1lKSANCnsNCiAgLy90aGlzLmNvbnRhaW5lclRlc3RGcmFtZS5zZXRUcmFjZXIodG9wLnRy
YWNlcik7DQogIHRoaXMuX3Rlc3RGaWxlTmFtZSA9IHBhZ2VOYW1lOw0KICBpZiAodGhpcy5pc1Rl
c3RQYWdlU3VpdGUoKSkgDQogICAgdGhpcy5faGFuZGxlTmV3U3VpdGUoKTsNCiAgZWxzZQ0KICB7
DQogICAgdGhpcy5fdGVzdEluZGV4ICAgPSAwOw0KICAgIHRoaXMuX3Rlc3RzSW5QYWdlID0gdGhp
cy5nZXRUZXN0RnVuY3Rpb25OYW1lcygpOw0KICAgIHRoaXMuX251bWJlck9mVGVzdHNJblBhZ2Ug
PSB0aGlzLl90ZXN0c0luUGFnZS5sZW5ndGg7DQogICAgdGhpcy5fcnVuVGVzdCgpOw0KICB9DQp9
DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlTmV3U3VpdGUgPSBmdW5jdGlv
biAoKSANCnsNCiAgdmFyIGFsbGVnZWRTdWl0ZSA9IHRoaXMuY29udGFpbmVyVGVzdEZyYW1lLnN1
aXRlKCk7DQogIGlmIChhbGxlZ2VkU3VpdGUuaXNqc1VuaXRUZXN0U3VpdGUpIHsNCiAgICB2YXIg
bmV3U3VpdGUgPSBhbGxlZ2VkU3VpdGUuY2xvbmUoKTsNCiAgICBpZiAobmV3U3VpdGUuY29udGFp
bnNUZXN0UGFnZXMoKSkNCiAgICAgIHB1c2godGhpcy5fc3VpdGVTdGFjaywgbmV3U3VpdGUpOw0K
ICAgIHRoaXMuX25leHRQYWdlKCk7DQogIH0NCiAgZWxzZSB7DQogICAgYWxlcnQoJ0ludmFsaWQg
dGVzdCBzdWl0ZSBpbiBmaWxlICcgKyB0aGlzLl90ZXN0RmlsZU5hbWUpOw0KICAgIHRoaXMuYWJv
cnQoKTsNCiAgfQ0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUuX3J1blRlc3QgPSBm
dW5jdGlvbiAoKSANCnsNCiAgaWYgKHRoaXMuX3Rlc3RJbmRleCArIDEgPiB0aGlzLl9udW1iZXJP
ZlRlc3RzSW5QYWdlKQ0KICB7DQogICAgdGhpcy5fbmV4dFBhZ2UoKTsNCiAgICByZXR1cm47DQog
IH0NCg0KICBpZiAodGhpcy5fdGVzdEluZGV4ID09IDAgJiYgdHlwZW9mKHRoaXMuY29udGFpbmVy
VGVzdEZyYW1lLnNldFVwUGFnZSkgPT0gJ2Z1bmN0aW9uJykNCiAgew0KICAgIC8vIGZpcnN0IHRl
c3QgZm9yIHRoaXMgcGFnZSBhbmQgYSBzZXRVcFBhZ2UgaXMgZGVmaW5lZA0KICAgIGlmICh0eXBl
b2YodGhpcy5jb250YWluZXJUZXN0RnJhbWUuc2V0VXBQYWdlU3RhdHVzKSA9PSAndW5kZWZpbmVk
JykNCiAgICB7DQogICAgICAvLyBzZXRVcFBhZ2UoKSBub3QgY2FsbGVkIHlldCwgc28gY2FsbCBp
dA0KICAgICAgdGhpcy5jb250YWluZXJUZXN0RnJhbWUuc2V0VXBQYWdlU3RhdHVzID0gZmFsc2U7
DQogICAgICB0aGlzLmNvbnRhaW5lclRlc3RGcmFtZS5zdGFydFRpbWUgPSBuZXcgRGF0ZSgpOw0K
ICAgICAgdGhpcy5jb250YWluZXJUZXN0RnJhbWUuc2V0VXBQYWdlKCk7DQogICAgICAvLyB0cnkg
dGVzdCBhZ2FpbiBsYXRlcg0KICAgICAgc2V0VGltZW91dCgndG9wLnRlc3RNYW5hZ2VyLl9ydW5U
ZXN0KCknLCBqc1VuaXRUZXN0TWFuYWdlci5TRVRVUFBBR0VfSU5URVJWQUwpOw0KICAgICAgcmV0
dXJuOw0KICAgIH0NCg0KICAgIGlmICh0aGlzLmNvbnRhaW5lclRlc3RGcmFtZS5zZXRVcFBhZ2VT
dGF0dXMgIT0gJ2NvbXBsZXRlJykNCiAgICB7DQogICAgICAvLyBzZXRVcFBhZ2UgY2FsbGVkLCBi
dXQgbm90IGNvbXBsZXRlIHlldA0KICAgICAgdG9wLnN0YXR1cyA9ICdzZXRVcFBhZ2Ugbm90IGNv
bXBsZXRlZC4uLiAnICsgdGhpcy5jb250YWluZXJUZXN0RnJhbWUuc2V0VXBQYWdlU3RhdHVzICsg
JyAnICsgKG5ldyBEYXRlKCkpOw0KICAgICAgaWYgKChuZXcgRGF0ZSgpIC0gdGhpcy5jb250YWlu
ZXJUZXN0RnJhbWUuc3RhcnRUaW1lKSAvMTAwMCA+IHRoaXMuZ2V0c2V0VXBQYWdlVGltZW91dCgp
KSB7DQogICAgICAgIGFsZXJ0KCdzZXRVcFBhZ2UgdGltZWQgb3V0IHdpdGhvdXQgY29tcGxldGlu
Zy4nKTsNCiAgICAgICAgaWYgKHByb21wdCgnUmV0cnkgb3IgQ2FuY2VsID8nLCAnUmV0cnknKSAh
PSAnUmV0cnknKQ0KICAgICAgICB7DQogICAgICAgICAgdGhpcy5hYm9ydCgpOw0KICAgICAgICAg
IHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICB0aGlzLmNvbnRhaW5lclRlc3RGcmFtZS5zdGFy
dFRpbWUgPSAobmV3IERhdGUoKSk7DQogICAgICB9DQogICAgICAvLyB0cnkgdGVzdCBhZ2FpbiBs
YXRlcg0KICAgICAgc2V0VGltZW91dCgndG9wLnRlc3RNYW5hZ2VyLl9ydW5UZXN0KCknLCBqc1Vu
aXRUZXN0TWFuYWdlci5TRVRVUFBBR0VfSU5URVJWQUwpOw0KICAgICAgcmV0dXJuOw0KICAgIH0N
CiAgfQ0KDQogIHRvcC5zdGF0dXMgPSAnJzsNCiAgLy8gZWl0aGVyIG5vdCBmaXJzdCB0ZXN0LCBv
ciBubyBzZXRVcFBhZ2UgZGVmaW5lZCwgb3Igc2V0VXBQYWdlIGNvbXBsZXRlZA0KICB0aGlzLmV4
ZWN1dGVUZXN0RnVuY3Rpb24odGhpcy5fdGVzdHNJblBhZ2VbdGhpcy5fdGVzdEluZGV4XSk7DQog
IHRoaXMudG90YWxDb3VudCsrOw0KICB0aGlzLnVwZGF0ZVByb2dyZXNzSW5kaWNhdG9ycygpOw0K
ICB0aGlzLl90ZXN0SW5kZXgrKzsNCiAgc2V0VGltZW91dCgndG9wLnRlc3RNYW5hZ2VyLl9ydW5U
ZXN0KCknLCBqc1VuaXRUZXN0TWFuYWdlci5USU1FT1VUX0xFTkdUSCk7DQp9DQoNCmpzVW5pdFRl
c3RNYW5hZ2VyLnByb3RvdHlwZS5fZG9uZSA9IGZ1bmN0aW9uICgpIA0Kew0KICB2YXIgc2Vjb25k
c1NpbmNlUnVuQmVnYW49KG5ldyBEYXRlKCkgLSB0aGlzLl90aW1lUnVuU3RhcnRlZCkvMTAwMDsN
CiAgdGhpcy5zZXRTdGF0dXMoJ0RvbmUgKCcgKyBzZWNvbmRzU2luY2VSdW5CZWdhbiArICcgc2Vj
b25kcyknKTsNCiAgdGhpcy5fY2xlYW5VcCgpOw0KICBpZiAodG9wLnNob3VsZFN1Ym1pdFJlc3Vs
dHMoKSkgew0KICAgIHRoaXMucmVzdWx0c1RpbWVGaWVsZC52YWx1ZSA9IHNlY29uZHNTaW5jZVJ1
bkJlZ2FuOw0KICAJdG9wLnN1Ym1pdFJlc3VsdHMoKTsNCiAgfQ0KfQ0KDQpqc1VuaXRUZXN0TWFu
YWdlci5wcm90b3R5cGUuX25leHRQYWdlID0gZnVuY3Rpb24gKCkgDQp7DQogIGlmICh0aGlzLl9j
dXJyZW50U3VpdGUoKS5oYXNNb3JlUGFnZXMoKSkgew0KICAgIHRoaXMubG9hZFBhZ2UodGhpcy5f
Y3VycmVudFN1aXRlKCkubmV4dFBhZ2UoKSk7DQogIH0NCiAgZWxzZSB7DQogICAgcG9wKHRoaXMu
X3N1aXRlU3RhY2spOw0KICAgIGlmICh0aGlzLl9jdXJyZW50U3VpdGUoKSA9PSBudWxsKQ0KICAg
ICAgdGhpcy5fZG9uZSgpOw0KICAgIGVsc2UNCiAgICAgIHRoaXMuX25leHRQYWdlKCk7DQogIH0N
Cn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9jdXJyZW50U3VpdGUgPSBmdW5jdGlv
biAoKSANCnsNCiAgdmFyIHN1aXRlID0gbnVsbDsNCg0KICBpZiAodGhpcy5fc3VpdGVTdGFjayAm
JiB0aGlzLl9zdWl0ZVN0YWNrLmxlbmd0aCA+IDApDQogICAgc3VpdGUgPSB0aGlzLl9zdWl0ZVN0
YWNrW3RoaXMuX3N1aXRlU3RhY2subGVuZ3RoLTFdOw0KDQogIHJldHVybiBzdWl0ZTsNCn0NCg0K
anNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLmNhbGN1bGF0ZVByb2dyZXNzQmFyUHJvcG9ydGlv
biA9IGZ1bmN0aW9uICgpIA0Kew0KICBpZiAodGhpcy50b3RhbENvdW50ID09IDApIA0KICAgIHJl
dHVybiAwOw0KICB2YXIgY3VycmVudERpdmlzb3IgPSAxOw0KICB2YXIgcmVzdWx0ICAgICAgICAg
PSAwOw0KICANCiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zdWl0ZVN0YWNrLmxlbmd0aDsg
aSsrKSB7DQogICAgdmFyIGFTdWl0ZSAgICAgPSB0aGlzLl9zdWl0ZVN0YWNrW2ldOw0KICAgIGN1
cnJlbnREaXZpc29yICo9IGFTdWl0ZS50ZXN0UGFnZXMubGVuZ3RoOw0KICAgIHJlc3VsdCArPSAo
YVN1aXRlLnBhZ2VJbmRleCAtIDEpL2N1cnJlbnREaXZpc29yOw0KICB9DQogIHJlc3VsdCArPSAo
dGhpcy5fdGVzdEluZGV4ICsgMSkvKHRoaXMuX251bWJlck9mVGVzdHNJblBhZ2UgKiBjdXJyZW50
RGl2aXNvcik7DQogIHJldHVybiByZXN1bHQ7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3Rv
dHlwZS5fY2xlYW5VcCA9IGZ1bmN0aW9uICgpIA0Kew0KICB0aGlzLmNvbnRhaW5lckNvbnRyb2xs
ZXIuc2V0VGVzdFBhZ2UoJy4vYXBwL2VtcHR5UGFnZS5odG1sJyk7DQogIHRoaXMuZmluYWxpemUo
KTsNCiAgdG9wLnRyYWNlci5maW5hbGl6ZSgpOw0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90
b3R5cGUuYWJvcnQgPSBmdW5jdGlvbiAoKSANCnsNCiAgdGhpcy5zZXRTdGF0dXMoJ0Fib3J0ZWQn
KTsNCiAgdGhpcy5fY2xlYW5VcCgpOw0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUu
Z2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIA0Kew0KICB2YXIgcmVzdWx0ID0ganNVbml0VGVzdE1h
bmFnZXIuVEVTVFBBR0VfV0FJVF9TRUM7DQogIHRyeSB7DQogICAgcmVzdWx0ID0gZXZhbCh0aGlz
LnRpbWVvdXQudmFsdWUpOw0KICB9IA0KICBjYXRjaCAoZSkgew0KICB9DQogIHJldHVybiByZXN1
bHQ7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5nZXRzZXRVcFBhZ2VUaW1lb3V0
ID0gZnVuY3Rpb24gKCkgDQp7DQogIHZhciByZXN1bHQgPSBqc1VuaXRUZXN0TWFuYWdlci5TRVRV
UFBBR0VfVElNRU9VVDsNCiAgdHJ5IHsNCiAgICByZXN1bHQgPSBldmFsKHRoaXMuc2V0VXBQYWdl
VGltZW91dC52YWx1ZSk7DQogIH0gDQogIGNhdGNoIChlKSB7DQogIH0NCiAgcmV0dXJuIHJlc3Vs
dDsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLmlzVGVzdFBhZ2VTdWl0ZSA9IGZ1
bmN0aW9uICgpIA0Kew0KICB2YXIgcmVzdWx0ID0gZmFsc2U7DQogIGlmICh0eXBlb2YodGhpcy5j
b250YWluZXJUZXN0RnJhbWUuc3VpdGUpID09ICdmdW5jdGlvbicpDQogIHsNCiAgICByZXN1bHQg
PSB0cnVlOw0KICB9DQogIHJldHVybiByZXN1bHQ7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnBy
b3RvdHlwZS5nZXRUZXN0RnVuY3Rpb25OYW1lcyA9IGZ1bmN0aW9uICgpIA0Kew0KICB2YXIgdGVz
dEZyYW1lICAgICAgICAgPSB0aGlzLmNvbnRhaW5lclRlc3RGcmFtZTsNCiAgdmFyIHRlc3RGdW5j
dGlvbk5hbWVzID0gbmV3IEFycmF5KCk7DQogIHZhciBpOw0KICANCiAgaWYgKHRlc3RGcmFtZSAm
JiB0eXBlb2YodGVzdEZyYW1lLmV4cG9zZVRlc3RGdW5jdGlvbk5hbWVzKSA9PSAnZnVuY3Rpb24n
KQ0KICAgICAgICByZXR1cm4gdGVzdEZyYW1lLmV4cG9zZVRlc3RGdW5jdGlvbk5hbWVzKCk7DQog
IA0KICBpZiAodGVzdEZyYW1lICYmIA0KICAgICAgdGVzdEZyYW1lLmRvY3VtZW50ICYmIA0KICAg
ICAgdHlwZW9mKHRlc3RGcmFtZS5kb2N1bWVudC5zY3JpcHRzKSAhPSAndW5kZWZpbmVkJykgeyAv
LyBJRTUgYW5kIHVwDQogICAgdmFyIHNjcmlwdHNJblRlc3RGcmFtZSA9IHRlc3RGcmFtZS5kb2N1
bWVudC5zY3JpcHRzOw0KICAgIA0KICAgIGZvciAoaSA9IDA7IGkgPCBzY3JpcHRzSW5UZXN0RnJh
bWUubGVuZ3RoOyBpKyspIHsNCiAgICAgIHZhciBzb21lTmFtZXMgPSB0aGlzLl9leHRyYWN0VGVz
dEZ1bmN0aW9uTmFtZXNGcm9tU2NyaXB0KHNjcmlwdHNJblRlc3RGcmFtZVtpXSk7DQogICAgICBp
ZiAoc29tZU5hbWVzKQ0KICAgICAgICB0ZXN0RnVuY3Rpb25OYW1lcz10ZXN0RnVuY3Rpb25OYW1l
cy5jb25jYXQoc29tZU5hbWVzKTsNCiAgICB9DQogIH0gDQogIGVsc2Ugew0KICAgIGZvciAoaSBp
biB0ZXN0RnJhbWUpIHsNCiAgICAgIGlmIChpLnN1YnN0cmluZygwLCA0KSA9PSAndGVzdCcgJiYg
dHlwZW9mKHRlc3RGcmFtZVtpXSkgPT0gJ2Z1bmN0aW9uJykNCiAgICAgICAgcHVzaCh0ZXN0RnVu
Y3Rpb25OYW1lcywgaSk7DQogICAgfQ0KICB9DQogIHJldHVybiB0ZXN0RnVuY3Rpb25OYW1lczsN
Cn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9leHRyYWN0VGVzdEZ1bmN0aW9uTmFt
ZXNGcm9tU2NyaXB0ID0gZnVuY3Rpb24gKGFTY3JpcHQpIA0Kew0KICB2YXIgcmVzdWx0Ow0KICB2
YXIgcmVtYWluaW5nU2NyaXB0VG9JbnNwZWN0ID0gYVNjcmlwdC50ZXh0Ow0KICB2YXIgY3VycmVu
dEluZGV4ICAgICAgICAgICAgID0gcmVtYWluaW5nU2NyaXB0VG9JbnNwZWN0LmluZGV4T2YoJ2Z1
bmN0aW9uIHRlc3QnKTsNCiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPSAtMSkgew0KICAgIGlmICgh
cmVzdWx0KSANCiAgICAgIHJlc3VsdD1uZXcgQXJyYXkoKTsNCiAgICAgIA0KICAgIHZhciBmcmFn
bWVudCA9IHJlbWFpbmluZ1NjcmlwdFRvSW5zcGVjdC5zdWJzdHJpbmcoY3VycmVudEluZGV4LCBy
ZW1haW5pbmdTY3JpcHRUb0luc3BlY3QubGVuZ3RoKTsNCiAgICByZXN1bHQgICAgICAgPSByZXN1
bHQuY29uY2F0KGZyYWdtZW50LnN1YnN0cmluZygnZnVuY3Rpb24gJy5sZW5ndGgsIGZyYWdtZW50
LmluZGV4T2YoJygnKSkpOw0KICAgICAgICAgICAgICAgIHJlbWFpbmluZ1NjcmlwdFRvSW5zcGVj
dD1yZW1haW5pbmdTY3JpcHRUb0luc3BlY3Quc3Vic3RyaW5nKGN1cnJlbnRJbmRleCsxMiwgcmVt
YWluaW5nU2NyaXB0VG9JbnNwZWN0Lmxlbmd0aCk7DQogICAgICAgICAgICAgICAgY3VycmVudElu
ZGV4PXJlbWFpbmluZ1NjcmlwdFRvSW5zcGVjdC5pbmRleE9mKCdmdW5jdGlvbiB0ZXN0Jyk7DQog
IH0NCiAgcmV0dXJuIHJlc3VsdDsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLmxv
YWRQYWdlID0gZnVuY3Rpb24gKHRlc3RGaWxlTmFtZSkgDQp7DQogIHRoaXMuX3Rlc3RGaWxlTmFt
ZSAgICAgICAgID0gdGVzdEZpbGVOYW1lOw0KICB0aGlzLl9sb2FkQXR0ZW1wdFN0YXJ0VGltZSA9
IG5ldyBEYXRlKCk7DQogIHRoaXMuc2V0U3RhdHVzKCdPcGVuaW5nIFRlc3QgUGFnZSAiJyArIHRo
aXMuX3Rlc3RGaWxlTmFtZSArICciJyk7DQogIHRoaXMuY29udGFpbmVyQ29udHJvbGxlci5zZXRU
ZXN0UGFnZSh0aGlzLl90ZXN0RmlsZU5hbWUpOw0KICB0aGlzLl9jYWxsQmFja1doZW5QYWdlSXNM
b2FkZWQoKTsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9jYWxsQmFja1doZW5Q
YWdlSXNMb2FkZWQgPSBmdW5jdGlvbiAoKSANCnsNCiAgaWYgKChuZXcgRGF0ZSgpIC0gdGhpcy5f
bG9hZEF0dGVtcHRTdGFydFRpbWUpIC8gMTAwMCA+IHRoaXMuZ2V0VGltZW91dCgpKSB7DQogICAg
YWxlcnQoJ1JlYWRpbmcgVGVzdCBQYWdlICcgKyB0aGlzLl90ZXN0RmlsZU5hbWUgKyAnIHRpbWVk
IG91dC5cbk1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlIGV4aXN0cyBhbmQgaXMgYSBUZXN0IFBhZ2Uu
Jyk7DQogICAgaWYgKHByb21wdCgnUmV0cnkgb3IgQ2FuY2VsID8nLCAnUmV0cnknKSAhPSAnUmV0
cnknKQ0KICAgIHsNCiAgICAgIHRoaXMuYWJvcnQoKTsNCiAgICAgIHJldHVybjsNCiAgICB9DQog
IH0NCiAgaWYgKCF0aGlzLl9pc1Rlc3RGcmFtZUxvYWRlZCgpKSB7DQogICAgc2V0VGltZW91dCgn
dG9wLnRlc3RNYW5hZ2VyLl9jYWxsQmFja1doZW5QYWdlSXNMb2FkZWQoKTsnLCBqc1VuaXRUZXN0
TWFuYWdlci5USU1FT1VUX0xFTkdUSCk7DQogICAgcmV0dXJuOw0KICB9DQogIHRoaXMuZG9uZUxv
YWRpbmdQYWdlKHRoaXMuX3Rlc3RGaWxlTmFtZSk7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnBy
b3RvdHlwZS5faXNUZXN0RnJhbWVMb2FkZWQgPSBmdW5jdGlvbiAoKSANCnsNCiAgdHJ5IHsNCiAg
ICByZXR1cm4gdGhpcy5jb250YWluZXJDb250cm9sbGVyLmlzUGFnZUxvYWRlZCgpOw0KICB9IA0K
ICBjYXRjaCAoZSkgew0KICB9DQogIHJldHVybiBmYWxzZTsNCn0NCg0KanNVbml0VGVzdE1hbmFn
ZXIucHJvdG90eXBlLmV4ZWN1dGVUZXN0RnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVuY3Rpb25OYW1l
KSANCnsNCiAgdGhpcy5fdGVzdEZ1bmN0aW9uTmFtZT1mdW5jdGlvbk5hbWU7DQogIHRoaXMuc2V0
U3RhdHVzKCdSdW5uaW5nIHRlc3QgIicgKyB0aGlzLl90ZXN0RnVuY3Rpb25OYW1lICsgJyInKTsN
CiAgdmFyIGV4Y2VwPW51bGw7DQogIHZhciB0aW1lQmVmb3JlID0gbmV3IERhdGUoKTsgIA0KICB0
cnkgew0KICAgIHRoaXMuY29udGFpbmVyVGVzdEZyYW1lLnNldFVwKCk7DQogICAgZXZhbCgndGhp
cy5jb250YWluZXJUZXN0RnJhbWUuJyArIHRoaXMuX3Rlc3RGdW5jdGlvbk5hbWUgKyAnKCk7Jyk7
DQogIH0gDQogIGNhdGNoIChlMSkgew0KICAgIGV4Y2VwID0gZTE7DQogIH0NCiAgZmluYWxseSB7
DQogICAgdHJ5IHsNCiAgICAgIHRoaXMuY29udGFpbmVyVGVzdEZyYW1lLnRlYXJEb3duKCk7DQog
ICAgfSANCiAgICBjYXRjaCAoZTIpIHsNCiAgICAgIGV4Y2VwID0gZTI7DQogICAgfQ0KICB9DQog
IHZhciB0aW1lVGFrZW4gPSAobmV3IERhdGUoKSAtIHRpbWVCZWZvcmUpIC8gMTAwMDsNCiAgaWYg
KGV4Y2VwICE9IG51bGwpDQogICAgdGhpcy5faGFuZGxlVGVzdEV4Y2VwdGlvbihleGNlcCk7DQog
IHZhciBzZXJpYWxpemVkVGVzdENhc2VTdHJpbmcgPSB0aGlzLl9mdWxseVF1YWxpZmllZEN1cnJl
bnRUZXN0RnVuY3Rpb25OYW1lKCkrInwiK3RpbWVUYWtlbisifCI7DQogIGlmIChleGNlcD09bnVs
bCkNCiAgCXNlcmlhbGl6ZWRUZXN0Q2FzZVN0cmluZys9IlN8fCI7DQogIGVsc2Ugew0KICAJaWYg
KHR5cGVvZihleGNlcC5pc0pzVW5pdEV4Y2VwdGlvbikgIT0gJ3VuZGVmaW5lZCcgJiYgZXhjZXAu
aXNKc1VuaXRFeGNlcHRpb24pDQogIAkJc2VyaWFsaXplZFRlc3RDYXNlU3RyaW5nKz0iRnwiOw0K
ICAJZWxzZSB7DQogIAkJc2VyaWFsaXplZFRlc3RDYXNlU3RyaW5nKz0iRXwiOw0KICAJfQ0KICAJ
c2VyaWFsaXplZFRlc3RDYXNlU3RyaW5nKz10aGlzLl9wcm9ibGVtRGV0YWlsTWVzc2FnZUZvcihl
eGNlcCk7DQogIH0gIAkNCiAgdmFyIG5ld09wdGlvbiA9IG5ldyBPcHRpb24oc2VyaWFsaXplZFRl
c3RDYXNlU3RyaW5nKTsNCiAgdGhpcy50ZXN0Q2FzZVJlc3VsdHNGaWVsZFt0aGlzLnRlc3RDYXNl
UmVzdWx0c0ZpZWxkLmxlbmd0aF09bmV3T3B0aW9uOyAgDQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2Vy
LnByb3RvdHlwZS5fZnVsbHlRdWFsaWZpZWRDdXJyZW50VGVzdEZ1bmN0aW9uTmFtZSA9IGZ1bmN0
aW9uKCkgew0KICAgIHZhciB0ZXN0VVJMID0gdGhpcy5jb250YWluZXJUZXN0RnJhbWUubG9jYXRp
b24uaHJlZjsNCiAgICB2YXIgdGVzdFF1ZXJ5ID0gdGVzdFVSTC5pbmRleE9mKCI/Iik7DQogICAg
aWYgKHRlc3RRdWVyeSA+PSAwKSB7DQogICAgICAgIHRlc3RVUkwgPSB0ZXN0VVJMLnN1YnN0cmlu
ZygwLCB0ZXN0UXVlcnkpOw0KICAgIH0NCiAgICBpZiAodGVzdFVSTC5zdWJzdHJpbmcoMCwgdGhp
cy5fYmFzZVVSTC5sZW5ndGgpID09IHRoaXMuX2Jhc2VVUkwpIHsNCiAgICAgICAgICB0ZXN0VVJM
ID0gdGVzdFVSTC5zdWJzdHJpbmcodGhpcy5fYmFzZVVSTC5sZW5ndGgpOw0KICAgIH0NCiAgICBy
ZXR1cm4gdGVzdFVSTCArICc6JyArIHRoaXMuX3Rlc3RGdW5jdGlvbk5hbWU7DQp9DQoNCg0KanNV
bml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVUZXN0RXhjZXB0aW9uID0gZnVuY3Rpb24g
KGV4Y2VwKSANCnsNCiAgdmFyIHByb2JsZW1NZXNzYWdlID0gdGhpcy5fZnVsbHlRdWFsaWZpZWRD
dXJyZW50VGVzdEZ1bmN0aW9uTmFtZSgpICsgJyAnOw0KICB2YXIgZXJyT3B0aW9uOw0KICBpZiAo
dHlwZW9mKGV4Y2VwLmlzSnNVbml0RXhjZXB0aW9uKSA9PSAndW5kZWZpbmVkJyB8fCAhZXhjZXAu
aXNKc1VuaXRFeGNlcHRpb24pIHsNCiAgICBwcm9ibGVtTWVzc2FnZSArPSAnaGFkIGFuIGVycm9y
JzsNCiAgICB0aGlzLmVycm9yQ291bnQrKzsNCiAgfSANCiAgZWxzZSB7DQogICAgcHJvYmxlbU1l
c3NhZ2UgKz0gJ2ZhaWxlZCc7DQogICAgdGhpcy5mYWlsdXJlQ291bnQrKzsNCiAgfQ0KICB2YXIg
bGlzdEZpZWxkID0gdGhpcy5wcm9ibGVtc0xpc3RGaWVsZDsNCiAgdmFyIHByb2JsZW1Eb2N1bWVu
dCA9IHRoaXMubWFpbkZyYW1lLmZyYW1lcy5tYWluRXJyb3JzLmRvY3VtZW50Ow0KICBpZiAodHlw
ZW9mKHByb2JsZW1Eb2N1bWVudC5jcmVhdGVFbGVtZW50KSAhPSAndW5kZWZpbmVkJykgew0KICAg
IC8vIERPTSBMZXZlbCAyIEhUTUwgbWV0aG9kLg0KICAgIC8vIHRoaXMgaXMgcmVxdWlyZWQgZm9y
IE9wZXJhIDcgc2luY2UgYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIA0KICAgIC8vIG9wdGlv
bnMgYXJyYXkgZG9lcyBub3Qgd29yaywgYW5kIGFkZGluZyBhbiBPcHRpb24gY3JlYXRlZCBieSBu
ZXcgT3B0aW9uKCkNCiAgICAvLyBhbmQgYXBwZW5kZWQgYnkgbGlzdEZpZWxkLm9wdGlvbnMuYWRk
KCkgZmFpbHMgZHVlIHRvIFdST05HX0RPQ1VNRU5UX0VSUg0KICAgIGVyck9wdGlvbiA9IHByb2Js
ZW1Eb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTsNCiAgICBlcnJPcHRpb24uc2V0QXR0
cmlidXRlKCd2YWx1ZScsIHRoaXMuX3Byb2JsZW1EZXRhaWxNZXNzYWdlRm9yKGV4Y2VwKSk7DQog
ICAgZXJyT3B0aW9uLmFwcGVuZENoaWxkKHByb2JsZW1Eb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShw
cm9ibGVtTWVzc2FnZSkpOw0KICAgIGxpc3RGaWVsZC5hcHBlbmRDaGlsZChlcnJPcHRpb24pOw0K
ICB9DQogIGVsc2Ugew0KICAgIC8vIG5ldyBPcHRpb24oKSBpcyBET00gMA0KICAgIGVyck9wdGlv
biA9IG5ldyBPcHRpb24ocHJvYmxlbU1lc3NhZ2UsIHRoaXMuX3Byb2JsZW1EZXRhaWxNZXNzYWdl
Rm9yKGV4Y2VwKSk7DQogICAgaWYgKHR5cGVvZihsaXN0RmllbGQuYWRkKSAhPSAndW5kZWZpbmVk
Jykgew0KICAgICAgLy8gRE9NIDIgSFRNTCANCiAgICAgIGxpc3RGaWVsZC5hZGQoIGVyck9wdGlv
biAsIG51bGwpOw0KICAgIH0NCiAgICBlbHNlIGlmICh0eXBlb2YobGlzdEZpZWxkLm9wdGlvbnMu
YWRkKSAhPSAndW5kZWZpbmVkJykgew0KICAgICAgLy8gRE9NIDANCiAgICAgIGxpc3RGaWVsZC5v
cHRpb25zLmFkZCggZXJyT3B0aW9uLCBudWxsKTsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICAv
LyBET00gMA0KICAgICAgbGlzdEZpZWxkLm9wdGlvbnNbbGlzdEZpZWxkLmxlbmd0aF09IGVyck9w
dGlvbjsNCiAgICB9DQogIH0NCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9wcm9i
bGVtRGV0YWlsTWVzc2FnZUZvciA9IGZ1bmN0aW9uIChleGNlcCkgDQp7DQogIHZhciByZXN1bHQ9
bnVsbDsNCiAgaWYgKHR5cGVvZihleGNlcC5pc0pzVW5pdEV4Y2VwdGlvbikgIT0gJ3VuZGVmaW5l
ZCcgJiYgZXhjZXAuaXNKc1VuaXRFeGNlcHRpb24pIHsNCiAgICByZXN1bHQgPSAnJzsNCiAgICBp
ZiAoZXhjZXAuY29tbWVudCAhPSBudWxsKQ0KICAgICAgcmVzdWx0Kz0oJyInK2V4Y2VwLmNvbW1l
bnQrJyJcbicpOw0KICAgIA0KICAgIHJlc3VsdCArPSBleGNlcC5qc1VuaXRNZXNzYWdlOw0KICAg
IA0KICAgIGlmIChleGNlcC5zdGFja1RyYWNlKQ0KICAgICAgcmVzdWx0Kz0nXG5cblN0YWNrIHRy
YWNlIGZvbGxvd3M6XG4nK2V4Y2VwLnN0YWNrVHJhY2U7DQogIH0NCiAgZWxzZSB7DQogICAgcmVz
dWx0ID0gJ0Vycm9yIG1lc3NhZ2UgaXM6XG4iJzsNCiAgICByZXN1bHQgKz0NCiAgICAgICh0eXBl
b2YoZXhjZXAuZGVzY3JpcHRpb24pID09ICd1bmRlZmluZWQnKSA/DQogICAgICBleGNlcCA6DQog
ICAgICBleGNlcC5kZXNjcmlwdGlvbjsNCiAgICByZXN1bHQgKz0gJyInOw0KICAgIGlmICh0eXBl
b2YoZXhjZXAuc3RhY2spICE9ICd1bmRlZmluZWQnKSAvLyBNb3ppbGxhIG9ubHkNCiAgICAgIHJl
c3VsdCs9J1xuXG5TdGFjayB0cmFjZSBmb2xsb3dzOlxuJytleGNlcC5zdGFjazsNCiAgfQ0KICBy
ZXR1cm4gcmVzdWx0Ow0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUuX3NldFRleHRP
bkxheWVyID0gZnVuY3Rpb24gKGxheWVyTmFtZSwgc3RyKQ0Kew0KICB2YXIgaHRtbCA9ICcnOw0K
ICBodG1sICs9ICc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4n
Ow0KICBodG1sICs9ICc8aHRtbD48aGVhZD48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBocmVmPSJjc3MvanNVbml0U3R5bGUuY3NzIj48XC9oZWFkPic7DQogIGh0bWwgKz0g
Jzxib2R5PjxkaXY+JzsNCiAgaHRtbCArPSBzdHI7DQogIGh0bWwgKz0gJzxcL2Rpdj48XC9ib2R5
Pic7DQogIGh0bWwgKz0gJzxcL2h0bWw+JzsNCiAgdGhpcy51aUZyYW1lc1tsYXllck5hbWVdLmRv
Y3VtZW50LndyaXRlKGh0bWwpOw0KICB0aGlzLnVpRnJhbWVzW2xheWVyTmFtZV0uZG9jdW1lbnQu
Y2xvc2UoKTsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLnNldFN0YXR1cyA9IGZ1
bmN0aW9uIChzdHIpDQp7DQogIHRoaXMuX3NldFRleHRPbkxheWVyKCdtYWluU3RhdHVzJywgJzxi
PlN0YXR1czo8XC9iPiAnK3N0cik7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5f
c2V0RXJyb3JzID0gZnVuY3Rpb24gKG4pDQp7DQogIHRoaXMuX3NldFRleHRPbkxheWVyKCdtYWlu
Q291bnRzRXJyb3JzJywgJzxiPkVycm9yczogPFwvYj4nICsgbik7DQp9DQoNCmpzVW5pdFRlc3RN
YW5hZ2VyLnByb3RvdHlwZS5fc2V0RmFpbHVyZXMgPSBmdW5jdGlvbiAobikNCnsNCiAgdGhpcy5f
c2V0VGV4dE9uTGF5ZXIoJ21haW5Db3VudHNGYWlsdXJlcycsICc8Yj5GYWlsdXJlczo8XC9iPiAn
ICsgbik7DQp9DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5fc2V0VG90YWwgPSBmdW5j
dGlvbiAobikNCnsNCiAgdGhpcy5fc2V0VGV4dE9uTGF5ZXIoJ21haW5Db3VudHNSdW5zJywgJzxi
PlJ1bnM6PFwvYj4gJyArIG4pOw0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUuX3Nl
dFByb2dyZXNzQmFySW1hZ2UgPSBmdW5jdGlvbiAoaW1nTmFtZSkNCnsNCiAgdGhpcy5wcm9ncmVz
c0Jhci5zcmM9aW1nTmFtZTsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLl9zZXRQ
cm9ncmVzc0JhcldpZHRoID0gZnVuY3Rpb24gKHcpDQp7DQogIHRoaXMucHJvZ3Jlc3NCYXIud2lk
dGg9dzsNCn0NCg0KanNVbml0VGVzdE1hbmFnZXIucHJvdG90eXBlLnVwZGF0ZVByb2dyZXNzSW5k
aWNhdG9ycyA9IGZ1bmN0aW9uICgpDQp7DQogIHRoaXMuX3NldFRvdGFsKHRoaXMudG90YWxDb3Vu
dCk7DQogIHRoaXMuX3NldEVycm9ycyh0aGlzLmVycm9yQ291bnQpOw0KICB0aGlzLl9zZXRGYWls
dXJlcyh0aGlzLmZhaWx1cmVDb3VudCk7DQogIHRoaXMuX3NldFByb2dyZXNzQmFyV2lkdGgoMzAw
ICogdGhpcy5jYWxjdWxhdGVQcm9ncmVzc0JhclByb3BvcnRpb24oKSk7DQoNCiAgaWYgKHRoaXMu
ZXJyb3JDb3VudCA+IDAgfHwgdGhpcy5mYWlsdXJlQ291bnQgPiAwKQ0KICAgIHRoaXMuX3NldFBy
b2dyZXNzQmFySW1hZ2UoJy4uL2ltYWdlcy9yZWQuZ2lmJyk7DQogIGVsc2UNCiAgICB0aGlzLl9z
ZXRQcm9ncmVzc0JhckltYWdlKCcuLi9pbWFnZXMvZ3JlZW4uZ2lmJyk7DQp9DQoNCmpzVW5pdFRl
c3RNYW5hZ2VyLnByb3RvdHlwZS5zaG93TWVzc2FnZUZvclNlbGVjdGVkUHJvYmxlbVRlc3QgPSBm
dW5jdGlvbiAoKQ0Kew0KICB2YXIgcHJvYmxlbVRlc3RJbmRleCA9IHRoaXMucHJvYmxlbXNMaXN0
RmllbGQuc2VsZWN0ZWRJbmRleDsNCiAgaWYgKHByb2JsZW1UZXN0SW5kZXggIT0gLTEpDQogICAg
YWxlcnQodGhpcy5wcm9ibGVtc0xpc3RGaWVsZFtwcm9ibGVtVGVzdEluZGV4XS52YWx1ZSk7DQp9
DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5zaG93TWVzc2FnZXNGb3JBbGxQcm9ibGVt
VGVzdHMgPSBmdW5jdGlvbiAoKQ0Kew0KICAgaWYgKHRoaXMucHJvYmxlbXNMaXN0RmllbGQubGVu
Z3RoID09IDApIA0KICAgICByZXR1cm47DQoNCiAgIHRyeQ0KICAgew0KICAgICBpZiAodGhpcy5f
d2luZG93Rm9yQWxsUHJvYmxlbU1lc3NhZ2VzICYmICF0aGlzLl93aW5kb3dGb3JBbGxQcm9ibGVt
TWVzc2FnZXMuY2xvc2VkKQ0KICAgICAgIHRoaXMuX3dpbmRvd0ZvckFsbFByb2JsZW1NZXNzYWdl
cy5jbG9zZSgpOw0KICAgfQ0KICAgY2F0Y2goZSkNCiAgIHsNCiAgIH0NCg0KICAgdGhpcy5fd2lu
ZG93Rm9yQWxsUHJvYmxlbU1lc3NhZ2VzID0gd2luZG93Lm9wZW4oJycsJycsJ3dpZHRoPTYwMCwg
aGVpZ2h0PTM1MCxzdGF0dXM9bm8scmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcycpOw0KICAg
dmFyIHJlc0RvYyA9IHRoaXMuX3dpbmRvd0ZvckFsbFByb2JsZW1NZXNzYWdlcy5kb2N1bWVudDsN
CiAgIHJlc0RvYy53cml0ZSgnPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9jc3MvanNVbml0U3R5bGUuY3NzIj48dGl0bGU+VGVzdHMgd2l0aCBwcm9ibGVtcyAtIEpz
VW5pdDxcL3RpdGxlPjxoZWFkPjxib2R5PicpOw0KICAgcmVzRG9jLndyaXRlKCc8cCBjbGFzcz0i
anNVbml0U3ViSGVhZGluZyI+VGVzdHMgd2l0aCBwcm9ibGVtcyAoJyArIHRoaXMucHJvYmxlbXNM
aXN0RmllbGQubGVuZ3RoICsgJyB0b3RhbCkgLSBKc1VuaXQ8XC9wPicpOw0KICAgcmVzRG9jLndy
aXRlKCc8cCBjbGFzcz0ianNVbml0U3ViU3ViSGVhZGluZyI+PGk+UnVubmluZyBvbiAnK25hdmln
YXRvci51c2VyQWdlbnQrJzwvaT48L3A+Jyk7DQogICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
cHJvYmxlbXNMaXN0RmllbGQubGVuZ3RoOyBpKyspDQogICB7DQogICAgIHJlc0RvYy53cml0ZSgn
PHAgY2xhc3M9ImpzVW5pdERlZmF1bHQiPicpOw0KICAgICByZXNEb2Mud3JpdGUoJzxiPicgKyAo
aSArIDEpICsgJy4gJyk7DQogICAgIHJlc0RvYy53cml0ZSh0aGlzLnByb2JsZW1zTGlzdEZpZWxk
W2ldLnRleHQpOw0KICAgICByZXNEb2Mud3JpdGUoJzxcL2I+PFwvcD48cD48cHJlPicpOw0KICAg
ICByZXNEb2Mud3JpdGUodGhpcy5wcm9ibGVtc0xpc3RGaWVsZFtpXS52YWx1ZSk7DQogICAgIHJl
c0RvYy53cml0ZSgnPFwvcHJlPjxcL3A+Jyk7DQogICB9DQoNCiAgIHJlc0RvYy53cml0ZSgnPFwv
Ym9keT48XC9odG1sPicpOw0KICAgcmVzRG9jLmNsb3NlKCk7DQp9DQoNCmpzVW5pdFRlc3RNYW5h
Z2VyLnByb3RvdHlwZS5fY2xlYXJQcm9ibGVtc0xpc3QgPSBmdW5jdGlvbiAoKQ0Kew0KICB2YXIg
bGlzdEZpZWxkID0gdGhpcy5wcm9ibGVtc0xpc3RGaWVsZDsNCiAgdmFyIGluaXRpYWxMZW5ndGg9
bGlzdEZpZWxkLm9wdGlvbnMubGVuZ3RoOw0KDQogIGZvciAodmFyIGkgPSAwOyBpIDwgaW5pdGlh
bExlbmd0aDsgaSsrKQ0KICAgIGxpc3RGaWVsZC5yZW1vdmUoMCk7DQp9DQoNCmpzVW5pdFRlc3RN
YW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24gKCkNCnsNCiAgdGhpcy5zZXRT
dGF0dXMoJ0luaXRpYWxpemluZy4uLicpOw0KICB0aGlzLl9zZXRSdW5CdXR0b25FbmFibGVkKGZh
bHNlKTsNCiAgdGhpcy5fY2xlYXJQcm9ibGVtc0xpc3QoKTsNCiAgdGhpcy51cGRhdGVQcm9ncmVz
c0luZGljYXRvcnMoKTsNCiAgdGhpcy5zZXRTdGF0dXMoJ0RvbmUgaW5pdGlhbGl6aW5nJyk7DQp9
DQoNCmpzVW5pdFRlc3RNYW5hZ2VyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uICgpDQp7
DQogIHRoaXMuX3NldFJ1bkJ1dHRvbkVuYWJsZWQodHJ1ZSk7DQp9DQoNCmpzVW5pdFRlc3RNYW5h
Z2VyLnByb3RvdHlwZS5fc2V0UnVuQnV0dG9uRW5hYmxlZCA9IGZ1bmN0aW9uIChiKQ0Kew0KICB0
aGlzLnJ1bkJ1dHRvbi5kaXNhYmxlZCA9ICFiOw0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90
b3R5cGUuZ2V0VGVzdEZpbGVOYW1lID0gZnVuY3Rpb24gKCkgDQp7DQogIHZhciByYXdFbnRlcmVk
RmlsZU5hbWUgPSB0aGlzLnRlc3RGaWxlTmFtZS52YWx1ZTsNCiAgdmFyIHJlc3VsdCAgICAgICAg
ICAgICA9IHJhd0VudGVyZWRGaWxlTmFtZTsNCg0KICB3aGlsZSAocmVzdWx0LmluZGV4T2YoJ1xc
JykgIT0gLTEpDQogICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoJ1xcJywgJy8nKTsNCg0KICBy
ZXR1cm4gcmVzdWx0Ow0KfQ0KDQpqc1VuaXRUZXN0TWFuYWdlci5wcm90b3R5cGUucmVzb2x2ZVVz
ZXJFbnRlcmVkVGVzdEZpbGVOYW1lID0gZnVuY3Rpb24gKHJhd1RleHQpIA0Kew0KICB2YXIgdXNl
ckVudGVyZWRUZXN0RmlsZU5hbWUgPSB0b3AudGVzdE1hbmFnZXIuZ2V0VGVzdEZpbGVOYW1lKCk7
DQogIA0KICAvLyBvbmx5IHRlc3QgZm9yIGZpbGU6Ly8gc2luY2UgT3BlcmEgdXNlcyBhIGRpZmZl
cmVudCBmb3JtYXQNCiAgaWYgKHVzZXJFbnRlcmVkVGVzdEZpbGVOYW1lLmluZGV4T2YoJ2h0dHA6
Ly8nKSA9PSAwIHx8IHVzZXJFbnRlcmVkVGVzdEZpbGVOYW1lLmluZGV4T2YoJ2h0dHBzOi8vJykg
PT0gMCB8fCB1c2VyRW50ZXJlZFRlc3RGaWxlTmFtZS5pbmRleE9mKCdmaWxlOi8vJykgPT0gMCkN
CiAgICByZXR1cm4gdXNlckVudGVyZWRUZXN0RmlsZU5hbWU7DQogICAgDQogIHJldHVybiBnZXRU
ZXN0RmlsZVByb3RvY29sKCkgKyB0aGlzLmdldFRlc3RGaWxlTmFtZSgpOw0KfQ0KDQpmdW5jdGlv
biBnZXRUZXN0RmlsZVByb3RvY29sKCkNCnsNCiAgcmV0dXJuIGdldERvY3VtZW50UHJvdG9jb2wo
KTsNCn0NCg0KZnVuY3Rpb24gZ2V0RG9jdW1lbnRQcm90b2NvbCgpIA0Kew0KICB2YXIgcHJvdG9j
b2wgPSB0b3AuZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2w7DQogICAgDQogIGlmIChwcm90b2Nv
bCA9PSAiZmlsZToiKSANCiAgICByZXR1cm4gImZpbGU6Ly8vIjsNCg0KICBpZiAocHJvdG9jb2wg
PT0gImh0dHA6IikgDQogICAgcmV0dXJuICJodHRwOi8vIjsNCiAgICANCiAgaWYgKHByb3RvY29s
ID09ICdodHRwczonKSANCiAgICByZXR1cm4gJ2h0dHBzOi8vJzsgICAgDQogICAgDQogIGlmIChw
cm90b2NvbCA9PSAiY2hyb21lOiIpIA0KICAgIHJldHVybiAiY2hyb21lOi8vIjsNCg0KICByZXR1
cm4gbnVsbDsNCn0NCg0KZnVuY3Rpb24gaXNCZWluZ1J1bk92ZXJIVFRQKCkgew0KCXJldHVybiBn
ZXREb2N1bWVudFByb3RvY29sKCk9PSJodHRwOi8vIjsNCn0gICANCg0KZnVuY3Rpb24gZ2V0V2Vi
c2VydmVyKCkgew0KCWlmIChpc0JlaW5nUnVuT3ZlckhUVFAoKSkgew0KCQl2YXIgbXlVcmwgPSBs
b2NhdGlvbi5ocmVmOw0KCQl2YXIgbXlVcmxXaXRoUHJvdG9jb2xTdHJpcHBlZCA9IG15VXJsLnN1
YnN0cmluZyhteVVybC5pbmRleE9mKCIvIikgKyAyKTsNCgkJcmV0dXJuIG15VXJsV2l0aFByb3Rv
Y29sU3RyaXBwZWQuc3Vic3RyaW5nKDAsIG15VXJsV2l0aFByb3RvY29sU3RyaXBwZWQuaW5kZXhP
ZigiLyIpKTsNCgl9DQoJcmV0dXJuIG51bGw7DQp9DQoNCi8vIHRoZSBmdW5jdGlvbnMgcHVzaChh
bkFycmF5LCBhbk9iamVjdCkgYW5kIHBvcChhbkFycmF5KSANCi8vIGV4aXN0IGJlY2F1c2UgdGhl
IEphdmFTY3JpcHQgQXJyYXkucHVzaChhbk9iamVjdCkgYW5kIEFycmF5LnBvcCgpIA0KLy8gZnVu
Y3Rpb25zIGFyZSBub3QgYXZhaWxhYmxlIGluIElFIDUuMA0KDQpmdW5jdGlvbiBwdXNoKGFuQXJy
YXksIGFuT2JqZWN0KSANCnsNCiAgYW5BcnJheVthbkFycmF5Lmxlbmd0aF09YW5PYmplY3Q7DQp9
DQoNCmZ1bmN0aW9uIHBvcChhbkFycmF5KSANCnsNCiAgaWYgKGFuQXJyYXkubGVuZ3RoPj0xKSB7
DQogICAgZGVsZXRlIGFuQXJyYXlbYW5BcnJheS5sZW5ndGggLSAxXTsNCiAgICBhbkFycmF5Lmxl
bmd0aC0tOw0KICB9DQp9DQoNCmlmICh4YkRFQlVHLm9uKQ0Kew0KICB4YkRlYnVnVHJhY2VPYmpl
Y3QoJ3dpbmRvdycsICdqc1VuaXRUZXN0TWFuYWdlcicpOw0KICB4YkRlYnVnVHJhY2VGdW5jdGlv
bignd2luZG93JywgJ2dldFRlc3RGaWxlUHJvdG9jb2wnKTsNCiAgeGJEZWJ1Z1RyYWNlRnVuY3Rp
b24oJ3dpbmRvdycsICdnZXREb2N1bWVudFByb3RvY29sJyk7DQp9DQpfEExmaWxlOi8vL1VzZXJz
L2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvYXBwL2pzVW5pdFRlc3RNYW5h
Z2VyLmpz1AYHCAkXGBkNTxEB+WJwbGlzdDAw1AECAwQFBgcKWSRhcmNoaXZlclgkdmVyc2lvblQk
dG9wWCRvYmplY3RzXxAPTlNLZXllZEFyY2hpdmVyEgABhqDRCAlfEBNXZWJSZXNvdXJjZVJlc3Bv
bnNlgAGnCwwbISIpKlUkbnVsbNcNDg8QERITFBUWFxgZGlIkMlIkM1IkNFIkMFYkY2xhc3NSJDVS
JDGABYAAEQkUEAeABiN/7////////4AC0xwdERUfIFdOUy5iYXNlW05TLnJlbGF0aXZlgACAA4AE
XxBHZmlsZTovLy9Vc2Vycy9kZGtpbHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2Fw
cC9qc1VuaXRUcmFjZXIuanPSIyQlJlgkY2xhc3Nlc1okY2xhc3NuYW1loyYnKFVOU1VSTFYlTlNV
UkxYTlNPYmplY3RfEBhhcHBsaWNhdGlvbi94LWphdmFzY3JpcHTSIyQrLKIsKF1OU1VSTFJlc3Bv
bnNlAAgAEQAbACQAKQAyAEQASQBMAGIAZABsAHIAgQCEAIcAigCNAJQAlwCaAJwAngChAKMApQCu
ALAAtwC/AMsAzQDPANEBGwEgASkBNAE4AT4BRQFOAWkBbgFxAAAAAAAAAgEAAAAAAAAALQAAAAAA
AAAAAAAAAAAAAX9PEQkULyogQGF1dGhvciBFZHdhcmQgSGllYXR0LCBlZHdhcmRAanN1bml0Lm5l
dCAqLw0KDQpmdW5jdGlvbiBqc1VuaXRUcmFjZXIoKSB7DQogIHRoaXMuX3RyYWNlV2luZG93ICAg
ICAgICA9IG51bGw7DQogIHRoaXMuVFJBQ0VfTEVWRUxfV0FSTklORyA9IDE7DQogIHRoaXMuVFJB
Q0VfTEVWRUxfSU5GTyAgICA9IDI7DQogIHRoaXMuVFJBQ0VfTEVWRUxfREVCVUcgICA9IDM7DQog
IHRoaXMucG9wdXBXaW5kb3dzQmxvY2tlZCA9IGZhbHNlOw0KfQ0KDQpqc1VuaXRUcmFjZXIucHJv
dG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbiAoKSANCnsNCiAgaWYgKHRoaXMuX3RyYWNlV2lu
ZG93ICE9IG51bGwgJiYgdG9wLnRlc3RNYW5hZ2VyLmNsb3NlVHJhY2VXaW5kb3dPbk5ld1J1bi5j
aGVja2VkKQ0KICAgIHRoaXMuX3RyYWNlV2luZG93LmNsb3NlKCk7DQoNCiAgdGhpcy5fdHJhY2VX
aW5kb3cgPSBudWxsOw0KfQ0KDQpqc1VuaXRUcmFjZXIucHJvdG90eXBlLmZpbmFsaXplID0gZnVu
Y3Rpb24gKCkgDQp7DQogIGlmICh0aGlzLl90cmFjZVdpbmRvdyE9bnVsbCkgew0KICAgIHRoaXMu
X3RyYWNlV2luZG93LmRvY3VtZW50LndyaXRlKCc8XC9ib2R5PlxuPFwvaHRtbD4nKTsNCiAgICB0
aGlzLl90cmFjZVdpbmRvdy5kb2N1bWVudC5jbG9zZSgpOw0KICB9DQp9DQoNCmpzVW5pdFRyYWNl
ci5wcm90b3R5cGUud2FybiA9IGZ1bmN0aW9uICgpIA0Kew0KICB0aGlzLl90cmFjZShhcmd1bWVu
dHNbMF0sIGFyZ3VtZW50c1sxXSwgdGhpcy5UUkFDRV9MRVZFTF9XQVJOSU5HKTsNCn0NCg0KanNV
bml0VHJhY2VyLnByb3RvdHlwZS5pbmZvcm0gPSBmdW5jdGlvbiAoKSANCnsNCiAgdGhpcy5fdHJh
Y2UoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sIHRoaXMuVFJBQ0VfTEVWRUxfSU5GTyk7DQp9
DQoNCmpzVW5pdFRyYWNlci5wcm90b3R5cGUuZGVidWcgPSBmdW5jdGlvbiAoKSANCnsNCiAgdGhp
cy5fdHJhY2UoYXJndW1lbnRzWzBdLCBhcmd1bWVudHNbMV0sIHRoaXMuVFJBQ0VfTEVWRUxfREVC
VUcpOw0KfQ0KDQpqc1VuaXRUcmFjZXIucHJvdG90eXBlLl90cmFjZSA9IGZ1bmN0aW9uIChtZXNz
YWdlLCB2YWx1ZSwgdHJhY2VMZXZlbCkgDQp7DQogIGlmICh0aGlzLl9nZXRDaG9zZW5UcmFjZUxl
dmVsKCkgPj0gdHJhY2VMZXZlbCkgew0KICAgIHZhciB0cmFjZVN0cmluZyA9IG1lc3NhZ2U7DQog
ICAgaWYgKHZhbHVlKQ0KICAgICAgdHJhY2VTdHJpbmcgKz0gJzogJyArIHZhbHVlOw0KICAgIHRo
aXMuX3dyaXRlVG9UcmFjZVdpbmRvdyh0cmFjZVN0cmluZywgdHJhY2VMZXZlbCk7DQogIH0NCn0N
Cg0KanNVbml0VHJhY2VyLnByb3RvdHlwZS5fZ2V0Q2hvc2VuVHJhY2VMZXZlbCA9IGZ1bmN0aW9u
ICgpIA0Kew0KICByZXR1cm4gZXZhbCh0b3AudGVzdE1hbmFnZXIudHJhY2VMZXZlbC52YWx1ZSk7
DQp9DQoNCmpzVW5pdFRyYWNlci5wcm90b3R5cGUuX3dyaXRlVG9UcmFjZVdpbmRvdyAgPSBmdW5j
dGlvbiAodHJhY2VTdHJpbmcsIHRyYWNlTGV2ZWwpIA0Kew0KICB2YXIgaHRtbFRvQXBwZW5kID0g
JzxwIGNsYXNzPSJqc1VuaXREZWZhdWx0Ij4nICsgdHJhY2VTdHJpbmcgKyAnPFwvcD5cbic7DQog
IHRoaXMuX2dldFRyYWNlV2luZG93KCkuZG9jdW1lbnQud3JpdGUoaHRtbFRvQXBwZW5kKTsNCn0N
Cg0KanNVbml0VHJhY2VyLnByb3RvdHlwZS5fZ2V0VHJhY2VXaW5kb3cgPSBmdW5jdGlvbiAoKSAN
CnsNCiAgaWYgKHRoaXMuX3RyYWNlV2luZG93ID09IG51bGwgJiYgIXRoaXMucG9wdXBXaW5kb3dz
QmxvY2tlZCkgew0KICAgIHRoaXMuX3RyYWNlV2luZG93ID0gd2luZG93Lm9wZW4oJycsJycsJ3dp
ZHRoPTYwMCwgaGVpZ2h0PTM1MCxzdGF0dXM9bm8scmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXll
cycpOw0KICAgIGlmICghdGhpcy5fdHJhY2VXaW5kb3cpIHsNCiAgICAgIHRoaXMucG9wdXBXaW5k
b3dzQmxvY2tlZCA9IHRydWU7DQogICAgfQ0KICAgIGVsc2Ugew0KICAgICAgdmFyIHJlc0RvYyA9
IHRoaXMuX3RyYWNlV2luZG93LmRvY3VtZW50Ow0KICAgICAgcmVzRG9jLndyaXRlKCc8aHRtbD5c
bjxoZWFkPlxuPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvanNVbml0U3R5bGUuY3Nz
Ij5cbjx0aXRsZT5UcmFjaW5nIC0gSnNVbml0PFwvdGl0bGU+XG48aGVhZD5cbjxib2R5PicpOw0K
ICAgICAgcmVzRG9jLndyaXRlKCc8aDI+VHJhY2luZyAtIEpzVW5pdDxcL2gyPlxuJyk7DQogICAg
fQ0KICB9DQogIHJldHVybiB0aGlzLl90cmFjZVdpbmRvdzsNCn0NCg0KaWYgKHhiREVCVUcub24p
DQp7DQogIHhiRGVidWdUcmFjZU9iamVjdCgnd2luZG93JywgJ2pzVW5pdFRyYWNlcicpOw0KfQ0K
DQpfEEdmaWxlOi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQv
YXBwL2pzVW5pdFRyYWNlci5qc9QGBwgJGxwdDU8RAfxicGxpc3QwMNQBAgMEBQYHClkkYXJjaGl2
ZXJYJHZlcnNpb25UJHRvcFgkb2JqZWN0c18QD05TS2V5ZWRBcmNoaXZlchIAAYag0QgJXxATV2Vi
UmVzb3VyY2VSZXNwb25zZYABpwsMGyEiKSpVJG51bGzXDQ4PEBESExQVFhcYGRpSJDJSJDNSJDRS
JDBWJGNsYXNzUiQ1UiQxgAWAABED+hAHgAYjf+////////+AAtMcHREVHyBXTlMuYmFzZVtOUy5y
ZWxhdGl2ZYAAgAOABF8QSmZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2Vi
S2l0L2pzdW5pdC9hcHAvanNVbml0VGVzdFN1aXRlLmpz0iMkJSZYJGNsYXNzZXNaJGNsYXNzbmFt
ZaMmJyhVTlNVUkxWJU5TVVJMWE5TT2JqZWN0XxAYYXBwbGljYXRpb24veC1qYXZhc2NyaXB00iMk
KyyiLChdTlNVUkxSZXNwb25zZQAIABEAGwAkACkAMgBEAEkATABiAGQAbAByAIEAhACHAIoAjQCU
AJcAmgCcAJ4AoQCjAKUArgCwALcAvwDLAM0AzwDRAR4BIwEsATcBOwFBAUgBUQFsAXEBdAAAAAAA
AAIBAAAAAAAAAC0AAAAAAAAAAAAAAAAAAAGCTxED+i8qIEBhdXRob3IgRWR3YXJkIEhpZWF0dCwg
ZWR3YXJkQGpzdW5pdC5uZXQgKi8NCg0KZnVuY3Rpb24ganNVbml0VGVzdFN1aXRlKCkgew0KICB0
aGlzLmlzanNVbml0VGVzdFN1aXRlID0gdHJ1ZTsNCiAgdGhpcy50ZXN0UGFnZXMgICAgICAgICA9
IEFycmF5KCk7DQogIHRoaXMucGFnZUluZGV4ICAgICAgICAgPSAwOw0KfQ0KDQpqc1VuaXRUZXN0
U3VpdGUucHJvdG90eXBlLmFkZFRlc3RQYWdlID0gZnVuY3Rpb24gKHBhZ2VOYW1lKSANCnsNCiAg
dGhpcy50ZXN0UGFnZXNbdGhpcy50ZXN0UGFnZXMubGVuZ3RoXSA9IHBhZ2VOYW1lOw0KfQ0KDQpq
c1VuaXRUZXN0U3VpdGUucHJvdG90eXBlLmFkZFRlc3RTdWl0ZSA9IGZ1bmN0aW9uIChzdWl0ZSkg
DQp7DQogIGZvciAodmFyIGkgPSAwOyBpIDwgc3VpdGUudGVzdFBhZ2VzLmxlbmd0aDsgaSsrKQ0K
ICAgIHRoaXMuYWRkVGVzdFBhZ2Uoc3VpdGUudGVzdFBhZ2VzW2ldKTsNCn0NCg0KanNVbml0VGVz
dFN1aXRlLnByb3RvdHlwZS5jb250YWluc1Rlc3RQYWdlcyA9IGZ1bmN0aW9uICgpIA0Kew0KICBy
ZXR1cm4gdGhpcy50ZXN0UGFnZXMubGVuZ3RoID4gMDsNCn0NCg0KanNVbml0VGVzdFN1aXRlLnBy
b3RvdHlwZS5uZXh0UGFnZSA9IGZ1bmN0aW9uICgpIA0Kew0KICByZXR1cm4gdGhpcy50ZXN0UGFn
ZXNbdGhpcy5wYWdlSW5kZXgrK107DQp9DQoNCmpzVW5pdFRlc3RTdWl0ZS5wcm90b3R5cGUuaGFz
TW9yZVBhZ2VzID0gZnVuY3Rpb24gKCkgDQp7DQogIHJldHVybiB0aGlzLnBhZ2VJbmRleCA8IHRo
aXMudGVzdFBhZ2VzLmxlbmd0aDsNCn0NCg0KanNVbml0VGVzdFN1aXRlLnByb3RvdHlwZS5jbG9u
ZSA9IGZ1bmN0aW9uICgpDQp7DQogIHZhciBjbG9uZSA9IG5ldyBqc1VuaXRUZXN0U3VpdGUoKTsN
CiAgY2xvbmUudGVzdFBhZ2VzID0gdGhpcy50ZXN0UGFnZXM7DQogIHJldHVybiBjbG9uZTsNCn0N
Cg0KaWYgKHhiREVCVUcub24pDQp7DQogIHhiRGVidWdUcmFjZU9iamVjdCgnd2luZG93JywgJ2pz
VW5pdFRlc3RTdWl0ZScpOw0KfQ0KDQpfEEpmaWxlOi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3Rz
L0NvY29hL1dlYktpdC9qc3VuaXQvYXBwL2pzVW5pdFRlc3RTdWl0ZS5qc9UJBx8gCCEiIyQlXxAb
V2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lXxAUV2ViUmVzb3VyY2VGcmFtZU5hbWVZdGV4dC9o
dG1sTxESiTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1l
c2V0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2ZyYW1lc2V0LmR0ZCI+PCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgRnJhbWVzZXQvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvZnJhbWVzZXQuZHRkIj48aHRtbD48aGVhZD4KCTxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVU
Ri04Ij4gIAogICAgPHRpdGxlPkpzVW5pdDwvdGl0bGU+CiAgICA8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYXBwL3hiRGVidWcuanMiPjwv
c2NyaXB0PgogICAgPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9ImFwcC9qc1VuaXRDb3JlLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgdmFyIERFRkFVTFRf
VEVTVF9GUkFNRV9IRUlHSFQ9MjUwOwoKICAvLyBzYWZlLCBzdHJpY3QgYWNjZXNzIHRvIGpzVW5p
dFBhcm1IYXNoCiAgZnVuY3Rpb24ganNVbml0R2V0UGFybShuYW1lKQogIHsKICAgIGlmICh0eXBl
b2YodG9wLmpzVW5pdFBhcm1IYXNoW25hbWVdKSAhPSAndW5kZWZpbmVkJykKICAgIHsKICAgICAg
cmV0dXJuIHRvcC5qc1VuaXRQYXJtSGFzaFtuYW1lXTsKICAgIH0KICAgIHJldHVybiBudWxsOwog
IH0KCiAgZnVuY3Rpb24ganNVbml0UGFyc2VQYXJtcyhzdHJpbmcpCiAgewogICAgdmFyIGk7CiAg
ICB2YXIgc2VhcmNoU3RyaW5nID0gdW5lc2NhcGUoc3RyaW5nKTsKICAgIHZhciBqc1VuaXRQYXJt
SGFzaCA9IG5ldyBPYmplY3QoKTsKCiAgICBpZiAoIXNlYXJjaFN0cmluZykKICAgIHsKICAgICAg
cmV0dXJuIGpzVW5pdFBhcm1IYXNoOwogICAgfQoKICAgIGkgPSBzZWFyY2hTdHJpbmcuaW5kZXhP
ZignPycpOwogICAgaWYgKGkgIT0gLTEpCiAgICB7CiAgICAgIHNlYXJjaFN0cmluZyA9IHNlYXJj
aFN0cmluZy5zdWJzdHJpbmcoaSsxKTsKICAgIH0KCiAgICB2YXIgcGFybUxpc3QgICAgID0gc2Vh
cmNoU3RyaW5nLnNwbGl0KCcmJyk7CiAgICB2YXIgYTsKICAgIGZvciAoaSA9IDA7IGkgPCBwYXJt
TGlzdC5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgYSA9IHBhcm1MaXN0W2ldLnNwbGl0KCc9Jyk7
CiAgICAgIGFbMF0gPSBhWzBdLnRvTG93ZXJDYXNlKCk7CiAgICAgIGlmIChhLmxlbmd0aCA+IDEp
CiAgICAgIHsKICAgICAgICBqc1VuaXRQYXJtSGFzaFthWzBdXSA9ICBhWzFdOwogICAgICB9CiAg
ICAgIGVsc2UKICAgICAgewogICAgICAgIGpzVW5pdFBhcm1IYXNoW2FbMF1dID0gIHRydWU7CiAg
ICAgIH0KICAgIH0KICAgIHJldHVybiBqc1VuaXRQYXJtSGFzaDsKICB9CgogIGZ1bmN0aW9uIGpz
VW5pdENvbnN0cnVjdFRlc3RQYXJtcygpCiAgewogICAgIHZhciBwOwogICAgIHZhciBwYXJtcyA9
ICcnOwoKICAgICBmb3IgKHAgaW4ganNVbml0UGFybUhhc2gpCiAgICAgewogICAgICAgdmFyIHZh
bHVlID0ganNVbml0UGFybUhhc2hbcF07CgogICAgICAgaWYgKCF2YWx1ZSB8fAogICAgICAgICAg
IHAgPT0gJ3Rlc3RwYWdlJyB8fCAKICAgICAgICAgICBwID09ICdhdXRvcnVuJyAgfHwgCiAgICAg
ICAgICAgcCA9PSAnc3VibWl0cmVzdWx0cycgfHwgCiAgICAgICAgICAgcCA9PSAnc2hvd3Rlc3Rm
cmFtZScgfHwgCiAgICAgICAgICAgcCA9PSAncmVzdWx0aWQnKQogICAgICAgewogICAgICAgICBj
b250aW51ZTsKICAgICAgIH0KCiAgICAgICBpZiAocGFybXMpCiAgICAgICB7CiAgICAgICAgIHBh
cm1zICs9ICcmJzsKICAgICAgIH0KCiAgICAgICBwYXJtcyArPSBwOwoKICAgICAgIGlmICh0eXBl
b2YodmFsdWUpICE9ICdib29sZWFuJykKICAgICAgIHsKICAgICAgICAgcGFybXMgKz0gJz0nICsg
dmFsdWU7CiAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBlc2NhcGUocGFybXMpOwogIH0KCiAg
dmFyIGpzVW5pdFBhcm1IYXNoID0ganNVbml0UGFyc2VQYXJtcyhkb2N1bWVudC5sb2NhdGlvbi5z
ZWFyY2gpOwoKICAvLyBzZXQgdG8gdHJ1ZSB0byB0dXJuIGRlYnVnZ2luZyBjb2RlIG9uLCBmYWxz
ZSB0byB0dXJuIGl0IG9mZi4KICB4YkRFQlVHLm9uID0ganNVbml0R2V0UGFybSgnZGVidWcnKSA/
IHRydWUgOiBmYWxzZTsKPC9zY3JpcHQ+Cgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0IiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYXBwL2pzVW5pdFRlc3RNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9ImFwcC9qc1VuaXRUcmFjZXIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IGxhbmd1YWdlPSJK
YXZhU2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYXBwL2pzVW5pdFRlc3RTdWl0
ZS5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQv
amF2YXNjcmlwdCI+CgogIHZhciB0ZXN0TWFuYWdlcjsKICB2YXIgdXRpbGl0eTsKICB2YXIgdHJh
Y2VyOwoKCiAgdmFyIEpTVU5JVF9VTkRFRklORURfVkFMVUU7CgogIGlmICghQXJyYXkucHJvdG90
eXBlLnB1c2gpCiAgewogICAgQXJyYXkucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoYW5PYmpl
Y3QpCiAgICB7CiAgICAgIHRoaXNbdGhpcy5sZW5ndGhdID0gYW5PYmplY3Q7CiAgICB9CiAgfQoK
ICBpZiAoIUFycmF5LnByb3RvdHlwZS5wb3ApCiAgewogICAgQXJyYXkucHJvdG90eXBlLnBvcCA9
IGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApCiAgICAgIHsKICAg
ICAgICBkZWxldGUgdGhpc1t0aGlzLmxlbmd0aCAtIDFdOwogICAgICAgIHRoaXMubGVuZ3RoLS07
CiAgICAgIH0KICAgIH0KICB9CiAgCiAgZnVuY3Rpb24gc2hvdWxkS2lja09mZlRlc3RzQXV0b21h
dGljYWxseSgpIHsKICAJcmV0dXJuIGpzVW5pdEdldFBhcm0oJ2F1dG9ydW4nKT09InRydWUiOwog
IH0KCiAgZnVuY3Rpb24gc2hvdWxkU2hvd1Rlc3RGcmFtZSgpIHsKICAgIHJldHVybiBqc1VuaXRH
ZXRQYXJtKCdzaG93dGVzdGZyYW1lJyk7CiAgfQogIAogIGZ1bmN0aW9uIHNob3VsZFN1Ym1pdFJl
c3VsdHMoKSB7CiAgCXJldHVybiBqc1VuaXRHZXRQYXJtKCdzdWJtaXRyZXN1bHRzJyk7CiAgfQog
IAogIGZ1bmN0aW9uIGdldFJlc3VsdElkKCkgewogICAgaWYgKGpzVW5pdEdldFBhcm0oJ3Jlc3Vs
dGlkJykpIAogIAkJcmV0dXJuIGpzVW5pdEdldFBhcm0oJ3Jlc3VsdGlkJyk7CiAgCXJldHVybiAi
IjsKICB9CgogIGZ1bmN0aW9uIHN1Ym1pdFJlc3VsdHMoKSB7CiAgICB3aW5kb3cubWFpbkZyYW1l
Lm1haW5EYXRhLmRvY3VtZW50LnRlc3RSdW5uZXJGb3JtLnJ1bkJ1dHRvbi5kaXNhYmxlZD10cnVl
OwogICAgd2luZG93Lm1haW5GcmFtZS5tYWluUmVzdWx0cy5wb3B1bGF0ZUhlYWRlckZpZWxkcyhn
ZXRSZXN1bHRJZCgpLCBuYXZpZ2F0b3IudXNlckFnZW50LCBKU1VOSVRfVkVSU0lPTiwgdGVzdE1h
bmFnZXIucmVzb2x2ZVVzZXJFbnRlcmVkVGVzdEZpbGVOYW1lKCkpOyAgCiAgCXdpbmRvdy5tYWlu
RnJhbWUubWFpblJlc3VsdHMuc3VibWl0UmVzdWx0cygpOwogIH0KICAKICBmdW5jdGlvbiB3YXNS
ZXN1bHRVcmxTcGVjaWZpZWQoKSB7CiAgCXJldHVybiBzaG91bGRTdWJtaXRSZXN1bHRzKCkgJiYg
anNVbml0R2V0UGFybSgnc3VibWl0cmVzdWx0cycpIT0ndHJ1ZSc7CiAgfQogIAogIGZ1bmN0aW9u
IGdldFNwZWNpZmllZFJlc3VsdFVybCgpIHsKCXJldHVybiBqc1VuaXRHZXRQYXJtKCdzdWJtaXRy
ZXN1bHRzJyk7ICAKICB9CiAgCiAgZnVuY3Rpb24gaW5pdCgpCiAgewogICAgaWYgKHNob3VsZFNo
b3dUZXN0RnJhbWUoKSAmJiB3aW5kb3cudGVzdFJ1bm5lckZyYW1lc2V0KSB7CiAgICAJdmFyIHRl
c3RGcmFtZUhlaWdodDsKICAgIAlpZiAoanNVbml0R2V0UGFybSgnc2hvd3Rlc3RmcmFtZScpPT0i
dHJ1ZSIpIAogICAgCQl0ZXN0RnJhbWVIZWlnaHQ9REVGQVVMVF9URVNUX0ZSQU1FX0hFSUdIVDsg
ICAgCQogICAgCWVsc2UgCiAgICAJCXRlc3RGcmFtZUhlaWdodD1qc1VuaXRHZXRQYXJtKCdzaG93
dGVzdGZyYW1lJyk7CiAgICAgICAJd2luZG93LnRlc3RSdW5uZXJGcmFtZXNldC5yb3dzPSIqLDAs
IiArIHRlc3RGcmFtZUhlaWdodDsKICAgIH0KICAgIHRlc3RNYW5hZ2VyID0gbmV3IGpzVW5pdFRl
c3RNYW5hZ2VyKCk7CiAgICB0cmFjZXIgICAgICA9IG5ldyBqc1VuaXRUcmFjZXIoKTsgICAgCiAg
ICBpZiAoc2hvdWxkS2lja09mZlRlc3RzQXV0b21hdGljYWxseSgpKSB7CiAgICAJd2luZG93Lm1h
aW5GcmFtZS5tYWluRGF0YS5raWNrT2ZmVGVzdHMoKTsKICAgIH0KICB9CiAgCjwvc2NyaXB0Pgog
IDwvaGVhZD48ZnJhbWVzZXQgaWQ9InRlc3RSdW5uZXJGcmFtZXNldCIgcm93cz0iKiwwLDAiIG9u
bG9hZD0iaW5pdCgpIj48ZnJhbWUgZnJhbWVib3JkZXI9IjAiIG5hbWU9Im1haW5GcmFtZSIgc3Jj
PSIuL2FwcC9tYWluLWZyYW1lLmh0bWwiPjxmcmFtZSBmcmFtZWJvcmRlcj0iMCIgbmFtZT0iZG9j
dW1lbnRMb2FkZXIiIHNyYz0iLi9hcHAvbWFpbi1sb2FkZXIuaHRtbCI+PGZyYW1lIGZyYW1lYm9y
ZGVyPSIwIiBuYW1lPSJ0ZXN0Q29udGFpbmVyIiBzcmM9Ii4vYXBwL3Rlc3RDb250YWluZXIuaHRt
bCI+PC9mcmFtZXNldD48L2h0bWw+VVVURi04UF8QQ2ZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJv
amVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC90ZXN0UnVubmVyLmh0bWyjJ3mE0gIDKCzVCQcfIAgh
KSMqK08RA0Y8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFt
ZXNldC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9mcmFtZXNldC5kdGQiPjwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2ZyYW1lc2V0LmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9y
IEVkd2FyZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgogICAgPHRpdGxlPmpz
VW5pdCBNYWluIEZyYW1lPC90aXRsZT4KICA8L2hlYWQ+PGZyYW1lc2V0IHJvd3M9IjIwMCwzMCwz
MCwzMCwwLCoiPjxmcmFtZSBuYW1lPSJtYWluRGF0YSIgc3JjPSJtYWluLWRhdGEuaHRtbCIgc2Ny
b2xsaW5nPSJubyIgZnJhbWVib3JkZXI9IjAiPjxmcmFtZSBuYW1lPSJtYWluU3RhdHVzIiBzcmM9
Im1haW4tc3RhdHVzLmh0bWwiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIj48ZnJhbWUg
bmFtZT0ibWFpblByb2dyZXNzIiBzcmM9Im1haW4tcHJvZ3Jlc3MuaHRtbCIgc2Nyb2xsaW5nPSJu
byIgZnJhbWVib3JkZXI9IjAiPjxmcmFtZSBuYW1lPSJtYWluQ291bnRzIiBzcmM9Im1haW4tY291
bnRzLmh0bWwiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9yZGVyPSIwIj48ZnJhbWUgbmFtZT0ibWFp
blJlc3VsdHMiIHNyYz0ibWFpbi1yZXN1bHRzLmh0bWwiIHNjcm9sbGluZz0ibm8iIGZyYW1lYm9y
ZGVyPSIwIj48ZnJhbWUgbmFtZT0ibWFpbkVycm9ycyIgc3JjPSJtYWluLWVycm9ycy5odG1sIiBz
Y3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCI+PC9mcmFtZXNldD48L2h0bWw+WW1haW5GcmFt
ZV8QR2ZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9h
cHAvbWFpbi1mcmFtZS5odG1spi0+RVBrctIBAi46oy80NdQGBwgJMDEyM08RAedicGxpc3QwMNQB
AgMEBQYHClkkYXJjaGl2ZXJYJHZlcnNpb25UJHRvcFgkb2JqZWN0c18QD05TS2V5ZWRBcmNoaXZl
chIAAYag0QgJXxATV2ViUmVzb3VyY2VSZXNwb25zZYABpwsMGyEiKSpVJG51bGzXDQ4PEBESExQV
FhcYGRpSJDJSJDNSJDRSJDBWJGNsYXNzUiQ1UiQxgAWAABEDbRAHgAYjf+////////+AAtMcHREV
HyBXTlMuYmFzZVtOUy5yZWxhdGl2ZYAAgAOABF8QR2ZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJv
amVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9jc3MvanNVbml0U3R5bGUuY3Nz0iMkJSZYJGNsYXNz
ZXNaJGNsYXNzbmFtZaMmJyhVTlNVUkxWJU5TVVJMWE5TT2JqZWN0WHRleHQvY3Nz0iMkKyyiLChd
TlNVUkxSZXNwb25zZQAIABEAGwAkACkAMgBEAEkATABiAGQAbAByAIEAhACHAIoAjQCUAJcAmgCc
AJ4AoQCjAKUArgCwALcAvwDLAM0AzwDRARsBIAEpATQBOAE+AUUBTgFXAVwBXwAAAAAAAAIBAAAA
AAAAAC0AAAAAAAAAAAAAAAAAAAFtTxEDbS8qIEBhdXRob3IgRWR3YXJkIEhpZWF0dCwgZWR3YXJk
QGpzdW5pdC5uZXQgKi8NCg0KYm9keSANCnsgDQogIG1hcmdpbi10b3A6IDA7IA0KICBtYXJnaW4t
Ym90dG9tOiAwOyANCiAgZm9udC1mYW1pbHk6IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNh
bnMtc2VyaWY7IA0KICBjb2xvcjogIzAwMDsNCiAgZm9udC1zaXplOiAwLjhlbTsgDQogIGJhY2tn
cm91bmQtY29sb3I6ICNmZmY7DQp9DQoNCnRkIA0KeyANCiAgcGFkZGluZzogMDsgDQogIG1hcmdp
bjogMDsNCn0NCg0KdGQgaW1nIA0KeyANCiAgcGFkZGluZzogMDsgDQogIG1hcmdpbjogMDsgDQog
IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgDQogIGRpc3BsYXk6IGJsb2NrOw0KfQ0KDQppbnB1
dCANCnsgDQp9DQoNCnNlbGVjdCANCnsgDQp9DQoNCmE6bGluaywgYTp2aXNpdGVkDQp7DQogIGNv
bG9yIDogIzAwRjsNCn0NCg0KYTpob3ZlciANCnsNCiAgY29sb3IgOiAjRjAwOw0KfQ0KDQouanNV
bml0RGVmYXVsdCANCnsgDQp9DQoNCmgxLCB0aA0KeyANCiAgZm9udC1zaXplOiAxLjNlbTsgDQog
IGZvbnQtd2VpZ2h0OiBib2xkOyANCiAgY29sb3I6ICMwMzk7DQp9DQoNCmgyDQp7IA0KICBmb250
LXdlaWdodDogYm9sZDsgDQogIGNvbG9yOiAjMDM5Ow0KfQ0KDQpoMw0KeyANCiAgZm9udC13ZWln
aHQ6IGJvbGQ7IA0KICBjb2xvcjogIzAzOTsgDQogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
Ow0KfQ0KDQpoNA0KeyANCiAgZm9udC13ZWlnaHQ6IGJvbGQ7IA0KICBjb2xvcjogIzAzOTsNCn0N
Cg0KLmpzVW5pdFRlc3RSZXN1bHRTdWNjZXNzIA0Kew0KICBjb2xvcjogIzAwMDsNCn0NCg0KLmpz
VW5pdFRlc3RSZXN1bHROb3RTdWNjZXNzIA0Kew0KICBjb2xvcjogI0YwMDsNCn1fEEdmaWxlOi8v
L1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvY3NzL2pzVW5pdFN0
eWxlLmNzc1h0ZXh0L2Nzc9QGBwgJDxARDdQGBwgJNjc4OU8RAeticGxpc3QwMNQBAgMEBQYHClkk
YXJjaGl2ZXJYJHZlcnNpb25UJHRvcFgkb2JqZWN0c18QD05TS2V5ZWRBcmNoaXZlchIAAYag0QgJ
XxATV2ViUmVzb3VyY2VSZXNwb25zZYABpwsMGyEiKSpVJG51bGzXDQ4PEBESExQVFhcYGRpSJDJS
JDNSJDRSJDBWJGNsYXNzUiQ1UiQxgAWAABEJoRAHgAYjf+////////+AAtMcHREVHyBXTlMuYmFz
ZVtOUy5yZWxhdGl2ZYAAgAOABF8QSmZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29j
b2EvV2ViS2l0L2pzdW5pdC9pbWFnZXMvbG9nb19qc3VuaXQuZ2lm0iMkJSZYJGNsYXNzZXNaJGNs
YXNzbmFtZaMmJyhVTlNVUkxWJU5TVVJMWE5TT2JqZWN0WWltYWdlL2dpZtIjJCssoiwoXU5TVVJM
UmVzcG9uc2UACAARABsAJAApADIARABJAEwAYgBkAGwAcgCBAIQAhwCKAI0AlACXAJoAnACeAKEA
owClAK4AsAC3AL8AywDNAM8A0QEeASMBLAE3ATsBQQFIAVEBWwFgAWMAAAAAAAACAQAAAAAAAAAt
AAAAAAAAAAAAAAAAAAABcU8RCaFHSUY4OWE5AE4A9/8AAAAA////wMDA9NaJ+vr7qqqr+vv9xMXG
AQEAAgIB///v+/r1/+yW/+uW9/by/+2u/vz1/+aT+vTh89SB/+GNnotYKyYY/+GQ/N6OU0ovRz8o
RT0nLika8teKZlo6QTolLCcZ/+OS9NiN/+Wd9dyZNjEij4Jf9+Kp+Oe5+erC+u7O+/DS/vbg+fTl
/fjq9fHm/vvz/vz2//77/v368vHu89J+9NOB89OB89OC9NSD89SDjntN9NWF89SE9teH9NWG7tCD
kH5P/d2MODEf9NaINi8e/+CP/t+O+dqM+NmL9tiK9NWJ89WI8dOH79GGv6hrtp9moo5boY1ajXxP
dGVBcmRAOTIg9NeK79KH58qC4MV+p5JekH5Rjn1QcGI/bmA+Y1c49NeM9deO9NiOEQ8K9dmRoo9g
9dmS9dqT9dqV9dqW9tuYkYFa992a9duZ8deW9dua9dyb9t2d9dyc996h9t+i99+k9+Cn9+Go+OKr
9+Ks+eSv+OOu9+Ou+OOw+OSx+OWz+Oa3+ei7+ee7+ei9+ei++unA+enA+uvE+uzH+uvH+evG+evI
+uzK+u3L+u3M++/R++/S+/DV+/HX/PLZ+/HY+/Lb/PTf/PTh/vrwMiscMywdNC0e/PPf/fbm/ffp
DQsH/vjs/vv1/vz4//78+Pf1Eg8Kqaek/v7+/f39+fn59vb29PT08/Pz8fHx7u7u7e3t7Ozs6+vr
6urq6Ojo5+fn5eXl4uLi4ODg3t7e2tra2NjY1tbW1NTU0NDQz8/Pzc3Ny8vLycnJvLy8tra2s7Oz
ra2tp6enpKSkoKCgn5+fnZ2dmpqalpaWlJSUkpKSj4+PjY2NiIiIh4eHhYWFf39/enp6eHh4b29v
bW1ta2traGhoZ2dnZGRkY2NjYGBgWlpaWFhYUlJSUVFRT09PS0tLSUlJRUVFQUFBPz8/PDw8ODg4
Nzc3NTU1MTExLS0tKysrKSkpJiYmICAgHh4eHR0dGhoaGBgYFxcXFBQUExMTDw8PDAwMBAQEAgIC
AAAAIfkEAQAAAgAsAAAAADkATgAACP8ABQgcSLCgwYMIEypMGKChw4cQIwbAtbCiwlwBztS4wbGj
x483apwZ5cqiSYO5ULn5MaCly5cwB/xwQ/KkTYEpV8bc6XJmzZsnc7LkudNnSaAmhRLt2SPHDx5w
UB1FWlEpUSI6zvxRESlRIEoSXtCYdYtqQqs7iRBJEWOUITllBtzIcUXNnxavcplFqXJoTLUrAlwS
41RtSyI/nKZYpXfvQLQweZwIAOEMj5dEMOuYxMrx4748dagI8AjHyx9jYObgE8CWZwGQX964FCCQ
jp5xYBS63PKHHFKvXsc+vORTgBO8B+jwEwBSciJnSE3dO3xAZuN4kutg/cgGj+88fsz/6Oy5utxO
AbL3VDMKk5078O/gkbFKOOidOhTVnvCSRx3jEdVX3n0x+RbACrf1N8AgMQSQCioBoDKLfTrx1EMj
AayR3GE5nBGJKrbcUhaFfv31wyKelJFDgTkAUsqIJC5FRA4nrGBHDpnBNAEeC8DomHn9lXEIIYTF
dIMgBFA0YIU78TBBDjzkUEMdkOiBI0xhiBLckiX254cKKQgiyCEkDCCJI9adZokqjVFHoI6QBIBC
ggPkIMeBK7qUgyOp+EiVeROMZltPa8wwwxg51okIKn4iBehog/DXmxuGpuEXDoO0xiVPORQSgCI3
9DQHKqSg4VcOiWj645un1RFAJMn9/5CGC5KUyEOcrq3KJEyZuRBDGIkitqFMLjC6KU8/kAADIjwk
amQeDirp5q4FovFIHyLkqNYPieXQR4MCehZAGz60dIUS6KZ7hUw9oJGtuVeUscYeLDSUSq5I3QLR
G0AwMQATTmAhMBZONNHSERckTMEICiiQSUMGECAhSrhUbDEubRJEADnsrONxCZpAEUEXmxRhchGc
fIGBEltMwQUXQbDxzAEBFDBOO+uEQ4wrbeIiCzPLBB00M65IOxAq+ACg9NIVMPDF0kt/YAQSmkCt
NDfcWA3ANYwJVEsvWgNQC3kEoUKP1lI0UIXWGkxthdb2hA3AMEfVwkvYtYR79NlWp/+9ttVtI/G2
3FpvE0BZstgStiqq+Gk22mqz7bbW91ADj9bqBEBLK9KYEzY54QhQS9l8Q+235IJrrU0A02gNTwCw
EIAO4QAIowrpkP8NdeCDQx1NAM9o/U4ArxBQDuH+AHP73rmj3vvSv0OjdTzEE5AO7bbj3nfkgE9u
dfRK61PP+OcEEIsqvSQTtjHDtLK8QI9vr/vSvGsNPgASzcJKAGG70tD7Aoif6bi3O+/5LgDSw98x
+sHApc2Df1qrBQFe4SMBLu103Uvd9xCotJpp7YF40xv8SndBAtLPgNDjIP68ATcIWi1vBrGg0jBY
QA0eMIEuBIA8doiOHC4NhgWRIQD/aHhCG6YQhxJpSAhjSMIZmlBp9dsgDneBDWxkoxtYtIYPlQZE
7Q1wflBEodLuFwBlaC0fWxSbCAPYxCE2gArOs58KA4CMD6axi8yzWhQa4IE4SrGDdbQaCCO4RlTU
Q2te6MAQ/HhDQNpxiUF0h9YSAIqwRbGR+Ask1AZpNVoU8hq0y+DzxjhHTTowjbdYIwF0oQ+tgYID
WtuAGAFARlMqjZNQU57RBPCKAATjHf5QGgIs8AQwkMEUyDQFGTJwBCSAQGvUYJ0jBRkAfmgNHM3A
Bb4EgAtVOOgApzADFJhwhCxo4ZzozMK5ttCFdu7ABM74RQB84QxnBGAZWqNHAO4h/7diEKAgt/Bm
Q0YghHUpIQkITWgSWnKBEDiUAg+QSDNaKA65EQMVKJnFKirTpaXUyQ4BUAUsWrGKVRBgolazByxs
0Y6wFSMVCKlFKN7l0Zfk4A4BkAVBWoFSqNmjFiE1RjW+AY6iisMXMCUILWYRCwc0oqMe3Q7sdtrT
pf00FUmMEEGASoc6qAGqHs1BIAIwoYHwFG61aIVGCZCKtrYVFVsSiCwC8B2whtURARidWauqtJ+2
Aie5CKxgCzLXNNW0KMbZZiucoTV8pNUkhXXWYVvin2jtdBn7yKxm5bE5yAbAsJN1SQ8qEQARtiIA
u9CFalWbi1T81SKRDa1LbsAazX4VJBZZjetCYivbG9ChQWwyyCxgQdziwmIWGVMIbw/7gxvcAQIR
2uZr5PpZyf6FCFEqAyMghAq9TpcgcwXJR5wSLzxAAgb28u53BzJXRLj3vfBFhAoq4YkZPGQVjVrv
LLKaRFSwghbrRQguXFHSAhvYwKx4RYgCzOAGO3i9AQEAO18QSmZpbGU6Ly8vVXNlcnMvZGRraWx6
ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9pbWFnZXMvbG9nb19qc3VuaXQuZ2lmWWlt
YWdlL2dpZtUJBx8gCCE7Izw9TxEWRzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9s
b29zZS5kdGQiPjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRy
YW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPjxo
dG1sPjwhLS0gQGF1dGhvciBFZHdhcmQgSGllYXR0LCBlZHdhcmRAanN1bml0Lm5ldCAtLT48aGVh
ZD4KCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBj
aGFyc2V0PVVURi04Ij4gIAogICAgPHRpdGxlPkpzVW5pdCBtYWluLWRhdGEuaHRtbDwvdGl0bGU+
CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9jc3Mv
anNVbml0U3R5bGUuY3NzIj4KICAgIDxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJqc1VuaXRDb3JlLmpzIj48L3NjcmlwdD4KICAgIDxzY3Jp
cHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgpmdW5jdGlv
biAga2lja09mZlRlc3RzKCkgewogIC8vCiAgLy8gICAgQ2hlY2sgaWYgSW5pdCB3YXMgY2FsbGVk
IGJ5IG9ubG9hZCBoYW5kbGVyCiAgLy8gICAgICAKICBpZiAodHlwZW9mKHRvcC50ZXN0TWFuYWdl
cikgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICB0b3AuaW5pdCgpOwogIH0gIAoKCiAgaWYgKGlzQmxh
bmsodG9wLnRlc3RNYW5hZ2VyLmdldFRlc3RGaWxlTmFtZSgpKSkgewogICAgYWxlcnQoJ1BsZWFz
ZSBlbnRlciBhIGZpbGUgbmFtZS4nKTsKICAgIHJldHVybjsKICB9CgogIHRvcC50ZXN0TWFuYWdl
ci5zZXR1cCgpOwoKICB0b3AudGVzdE1hbmFnZXIuX2N1cnJlbnRTdWl0ZSgpLmFkZFRlc3RQYWdl
KHRvcC50ZXN0TWFuYWdlci5yZXNvbHZlVXNlckVudGVyZWRUZXN0RmlsZU5hbWUoKSk7CiAgdG9w
LnRyYWNlci5pbml0aWFsaXplKCk7CgogIHZhciB0cmFjZUxldmVsID0gZG9jdW1lbnQuZm9ybXMu
dGVzdFJ1bm5lckZvcm0udHJhY2VMZXZlbDsKICBpZiAodHJhY2VMZXZlbC52YWx1ZSAhPSAnMCcp
CiAgewogICAgdmFyIHRyYWNlV2luZG93ID0gdG9wLnRyYWNlci5fZ2V0VHJhY2VXaW5kb3coKTsK
ICAgIGlmICh0cmFjZVdpbmRvdykgewogICAgICB0cmFjZVdpbmRvdy5mb2N1cygpOwogICAgfQog
ICAgZWxzZSB7CiAgICAgIGFsZXJ0KCdUcmFjaW5nIHJlcXVpcmVzIHBvcHVwIHdpbmRvd3Mgd2hp
Y2ggYXJlIGJsb2NrZWQgaW4geW91ciBicm93c2VyLlxuXG5QbGVhc2UgZW5hYmxlIHBvcHVwcyBp
ZiB5b3Ugd2lzaCB0byB1c2UgdHJhY2luZy4nKTsKICAgIH0KICB9CgogIHRvcC50ZXN0TWFuYWdl
ci5zdGFydCgpOwp9CiAgICA8L3NjcmlwdD4KICA8L2hlYWQ+PGJvZHkgb25sb2FkPSJkb2N1bWVu
dC50ZXN0UnVubmVyRm9ybS50ZXN0RmlsZU5hbWUuZm9jdXMoKSI+CiAgICA8Zm9ybSBuYW1lPSJ0
ZXN0UnVubmVyRm9ybSIgYWN0aW9uPSIiPgogICAgICA8dGFibGUgd2lkdGg9IjEwMCUiIGNlbGxw
YWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBzdW1tYXJ5PSJqc1VuaXQgSW5m
b3JtYXRpb24iIGJnY29sb3I9IiNEREREREQiPgogICAgICAgIDx0Ym9keT48dHI+PHRkIGFsaWdu
PSJsZWZ0IiB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii4uL2ltYWdlcy9sb2dvX2pzdW5pdC5naWYi
IGFsdD0iSlNVbml0IExvZ28iPjwvdGQ+PHRoIG5vd3JhcD0iIiBhbGlnbj0ibGVmdCIgdmFsaWdu
PSJtaWRkbGUiPgogICAgICAgICAgCUpzVW5pdCA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0
Ij5kb2N1bWVudC53cml0ZShKU1VOSVRfVkVSU0lPTik7PC9zY3JpcHQ+Mi4xIFRlc3RSdW5uZXI8
YnI+CiAgICAgICAgICAJPGZvbnQgc2l6ZT0iLTIiPjxpPlJ1bm5pbmcgb24gPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC53cml0ZShu
YXZpZ2F0b3IudXNlckFnZW50KTs8L3NjcmlwdD5Nb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBQ
UEMgTWFjIE9TIFg7IGVuKSBBcHBsZVdlYktpdC80MjArIChLSFRNTCwgbGlrZSBHZWNrbykgU2Fm
YXJpLzQxOS4zPC9pPjwvZm9udD4KICAgICAgICAgIDwvdGg+PHRkIG5vd3JhcD0iIiBhbGlnbj0i
cmlnaHQiIHZhbGlnbj0ibWlkZGxlIj4KICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lmpz
dW5pdC5uZXQvIiB0YXJnZXQ9Il9ibGFuayI+SnNVbml0IEhvbWU8L2E+PGJyPgogICAgICAgICAg
IDxhIGhyZWY9Im1haWx0bzplZHdhcmRAanN1bml0Lm5ldCI+ZWR3YXJkQGpzdW5pdC5uZXQ8L2E+
PGJyPgogICAgICAgIDwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+CgogICAgICA8cD5FbnRlciB0
aGUgZmlsZW5hbWUgb2YgdGhlIFRlc3QgUGFnZSB0byBiZSBydW46PC9wPgoKICAgICAgPHRhYmxl
IGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBzdW1tYXJ5PSJGb3Jt
IGZvciBlbnRlcmluZyB0ZXN0IGNhc2UgbG9jYXRpb24iPgogICAgICAgIDx0Ym9keT48dHI+PHRk
IGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIj4KICAgICAgICAgICAgPHNjcmlwdCBsYW5n
dWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAgICAgICBk
b2N1bWVudC53cml0ZSh0b3AuZ2V0RG9jdW1lbnRQcm90b2NvbCgpKTsKICAgICAgICAgICAgPC9z
Y3JpcHQ+ZmlsZTovLy8KICAgICAgICAgIDwvdGQ+PHRkIG5vd3JhcD0iIiBhbGlnbj0iY2VudGVy
IiB2YWxpZ249ImJvdHRvbSI+CiAgICAgICAgICAgIMKgCiAgICAgICAgICAgIDxzY3JpcHQgbGFu
Z3VhZ2U9IkphdmFTY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgICAgICAg
aWYgKHRvcC5nZXREb2N1bWVudFByb3RvY29sKCkgPT0gJ2ZpbGU6Ly8vJyAmJiAhanNVbml0R2V0
UGFybSgndGVzdHBhZ2UnKSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb2N1bWVu
dC53cml0ZSgnPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InRlc3RGaWxlTmFtZSIgc2l6ZT0iNjAi
PicpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgdmFyIGlucHV0U3RyID0gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ0
ZXN0RmlsZU5hbWUiIHNpemU9IjYwIiAnOwogICAgICAgICAgICAgICAgaWYgKGpzVW5pdEdldFBh
cm0oJ3Rlc3RwYWdlJykpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGlucHV0
U3RyICs9ICd2YWx1ZT0iJzsKICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAg
ICAJKHRvcC5nZXREb2N1bWVudFByb3RvY29sKCkgPT0gJ2h0dHA6Ly8nIHx8IHRvcC5nZXREb2N1
bWVudFByb3RvY29sKCkgPT0gJ2h0dHBzOi8vJykgJiYgCiAgICAgICAgICAgICAgICAgIAlqc1Vu
aXRHZXRQYXJtKCd0ZXN0cGFnZScpLmluZGV4T2YoJy8nKSA9PSAwKQogICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgaW5wdXRTdHIgKz0gdG9wLmxvY2F0aW9uLmhvc3Q7CiAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgaW5wdXRTdHIgKz0ganNVbml0R2V0
UGFybSgndGVzdHBhZ2UnKTsKICAgICAgICAgICAgICAgICAgdmFyIHRlc3RQYXJtcyA9IHRvcC5q
c1VuaXRDb25zdHJ1Y3RUZXN0UGFybXMoKTsKICAgICAgICAgICAgICAgICAgaWYgKHRlc3RQYXJt
cyE9JycpIHsKICAgICAgICAgICAgICAgICAgCWlucHV0U3RyICs9ICc/JzsKICAgICAgICAgICAg
ICAgICAgCWlucHV0U3RyICs9IHRlc3RQYXJtczsKICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICBpbnB1dFN0ciArPSAnIic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICBpbnB1dFN0ciArPSAnPic7CiAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZShpbnB1
dFN0cik7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgPC9zY3JpcHQ+PGlucHV0IHR5cGU9
ImZpbGUiIG5hbWU9InRlc3RGaWxlTmFtZSIgc2l6ZT0iNjAiPgogICAgICAgICAgICA8aW5wdXQg
dHlwZT0iYnV0dG9uIiBuYW1lPSJydW5CdXR0b24iIHZhbHVlPSJSdW4iIG9uY2xpY2s9ImtpY2tP
ZmZUZXN0cygpIj4KICAgICAgICAgIDwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+CiAgICAgIDxo
cj4KCiAgICAgIDx0YWJsZSBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0i
MCIgc3VtbWFyeT0iQ2hvb3NlIFRyYWNlIExldmVsIj4KICAgICAgICA8dGJvZHk+PHRyPjx0ZCBu
b3dyYXA9IiI+VHJhY2UgbGV2ZWw6PC90ZD48dGQ+PHNlbGVjdCBuYW1lPSJ0cmFjZUxldmVsIj4K
ICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCIgc2VsZWN0ZWQ9IiI+CiAgICAgICAgICAgICAg
bm8gdHJhY2luZwogICAgICAgICAgICA8L29wdGlvbj4KCiAgICAgICAgICAgIDxvcHRpb24gdmFs
dWU9IjEiPgogICAgICAgICAgICAgIHdhcm5pbmcgKGxvd2VzdCkKICAgICAgICAgICAgPC9vcHRp
b24+CgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIyIj4KICAgICAgICAgICAgICBpbmZvCiAg
ICAgICAgICAgIDwvb3B0aW9uPgoKICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+CiAgICAg
ICAgICAgICAgZGVidWcgKGhpZ2hlc3QpCiAgICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAg
PC9zZWxlY3Q+IDwvdGQ+PHRkPsKgwqDCoDwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIg
bmFtZT0iY2xvc2VUcmFjZVdpbmRvd09uTmV3UnVuIiBjaGVja2VkPSIiPjwvdGQ+PHRkIG5vd3Jh
cD0iIj5DbG9zZSBvbGQgdHJhY2Ugd2luZG93IG9uIG5ldyBydW48L3RkPjx0ZD7CoMKgwqDCoMKg
wqA8L3RkPjx0ZCBub3dyYXA9IiI+UGFnZSBsb2FkIHRpbWVvdXQ6PC90ZD48dGQ+wqAKICAgICAg
ICAgICAgPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIy
IiBuYW1lPSJ0aW1lb3V0IiB2YWx1ZT0iJyt0b3AuanNVbml0VGVzdE1hbmFnZXIuVEVTVFBBR0Vf
V0FJVF9TRUMrJyI+Jyk7CiAgICAgICAgICAgIDwvc2NyaXB0PjxpbnB1dCB0eXBlPSJ0ZXh0IiBz
aXplPSIyIiBuYW1lPSJ0aW1lb3V0IiB2YWx1ZT0iMjAiPgogICAgICAgICAgPC90ZD48dGQ+wqDC
oMKgwqDCoMKgPC90ZD48dGQgbm93cmFwPSIiPlNldHVwIHBhZ2UgdGltZW91dDo8L3RkPjx0ZD7C
oAogICAgICAgICAgICA8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPgogICAgICAgICAgICBkb2N1bWVudC53cml0ZSgnPGlucHV0IHR5cGU9InRleHQi
IHNpemU9IjIiIG5hbWU9InNldFVwUGFnZVRpbWVvdXQiIHZhbHVlPSInK3RvcC5qc1VuaXRUZXN0
TWFuYWdlci5TRVRVUFBBR0VfVElNRU9VVCsnIj4nKTsKICAgICAgICAgICAgPC9zY3JpcHQ+PGlu
cHV0IHR5cGU9InRleHQiIHNpemU9IjIiIG5hbWU9InNldFVwUGFnZVRpbWVvdXQiIHZhbHVlPSI2
MCI+CiAgICAgICAgICA8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPgogICAgICA8aHI+CiAgICA8
L2Zvcm0+CiAgCgo8L2JvZHk+PC9odG1sPlhtYWluRGF0YV8QRmZpbGU6Ly8vVXNlcnMvZGRraWx6
ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9hcHAvbWFpbi1kYXRhLmh0bWzSAQI/QaFA
1AYHCAkwMTIz1QkHHyAIIUIjQ0RPEQIOPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RU
RCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0
L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+
PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0tPjxo
ZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+SnNVbml0IG1haW4tc3RhdHVzLmh0bWw8L3Rp
dGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
Y3NzL2pzVW5pdFN0eWxlLmNzcyI+CiAgPC9oZWFkPjxib2R5PgogICAgPGRpdj48Yj5TdGF0dXM6
PC9iPiAoSWRsZSk8L2Rpdj4KICAKCgo8L2JvZHk+PC9odG1sPlptYWluU3RhdHVzXxBIZmlsZTov
Ly9Vc2Vycy9kZGtpbHplci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9tYWluLXN0
YXR1cy5odG1s0gECRkyiR0jUBgcICTAxMjPUBgcICUlKSzlPEQHlYnBsaXN0MDDUAQIDBAUGBwpZ
JGFyY2hpdmVyWCR2ZXJzaW9uVCR0b3BYJG9iamVjdHNfEA9OU0tleWVkQXJjaGl2ZXISAAGGoNEI
CV8QE1dlYlJlc291cmNlUmVzcG9uc2WAAacLDBshIikqVSRudWxs1w0ODxAREhMUFRYXGBkaUiQy
UiQzUiQ0UiQwViRjbGFzc1IkNVIkMYAFgAARAysQB4AGI3/v////////gALTHB0RFR8gV05TLmJh
c2VbTlMucmVsYXRpdmWAAIADgARfEERmaWxlOi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0Nv
Y29hL1dlYktpdC9qc3VuaXQvaW1hZ2VzL2dyZWVuLmdpZtIjJCUmWCRjbGFzc2VzWiRjbGFzc25h
bWWjJicoVU5TVVJMViVOU1VSTFhOU09iamVjdFlpbWFnZS9naWbSIyQrLKIsKF1OU1VSTFJlc3Bv
bnNlAAgAEQAbACQAKQAyAEQASQBMAGIAZABsAHIAgQCEAIcAigCNAJQAlwCaAJwAngChAKMApQCu
ALAAtwC/AMsAzQDPANEBGAEdASYBMQE1ATsBQgFLAVUBWgFdAAAAAAAAAgEAAAAAAAAALQAAAAAA
AAAAAAAAAAAAAWtPEQMrR0lGODlhAQAOAPcAAAT+BADHAAASAAAAAAD9CABR+ABaEgBxAADJJAAL
qAABQwCcAAClQAABAQAArwAAGgC+FAAeAADtAAB3AADcyQDGCwASAQAAnADgAADGAAASAAAAAAfE
FADGAAASAAAAAAAVyABSbwBaWABxAIg2CA1S+BRaEgBxAAABQAAAARMArwAAGgDopADHxwASEgAA
AHBwFMWIVBIT9gAAdwADSAAABQAAEwAAAMe+CmgeAEntigB3AGYExADHBAASEwAAACj/k8j/LRL/
8AAAd9TsAMXGABISEwAAAOwyGP8AlP8vE/8AACgzHMgAkxIAEwAAABRgHAAJkwBWEwABAAADAAAA
AAAAAAAAAPdQAWaYAEkTAAAAABhE1PA6xxIAEgAAABQARAAAOgAAXAAAaigAc8gAdRIAbgAAadQA
dMUAMhIAXAAAALsFsH8A//AAEncAAADJRAALtwAB8wCcdxwICAAAzooA8wAAdxj0/wDG/wAS/wAA
/wAs8AARxwDnEgB3ABjJGvALORIB5wCcd/+QDP8rAP/niv93ABRAPQABNwCv5wAadwgUFMYAVBIA
9gAAdwDJSAALBQABEwCcAAAoCgB/AAATigAAAAAczwDHBwASAAAAAABYyACAbxPwWAB3AAAAQAAA
AQAArwAAGuQAAMUAABIAAAAAAAcAHAAAkwAAEwAAAAB9HP/HkxLzEwB3AACiAACAAADwAAB3AFA8
FNjHVPkS9ncAd/98SP/HBf/zE/93ADAAGsYAABIAigAAAJq7xE1/BPbwE3d3AIAAOxgAHBMA8QAA
dygYtH8ANRMASQAAABgAKMcAyBIAEgAAADRAuwDIgwASS8AAAKTkWMF/yEvwEgB3AACgAADBAABL
AAAAALCklP/ByBJLEgAAAGR86gDH/wDz/wB3f+Q8gMbHyBISEgAAAMQAQocBAPAAAHcAAABQAACd
ABNLAAAAAAAAuwBvfwBY8AAAdygUAH8AABMAAAAAAKDJAMELAEsBAACcAAAAuwEAfwAA8AAAdyH5
BAAAAAAALAAAAAABAA4ABwgIAAEIHEiQYEAAO18QRGZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJv
amVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9pbWFnZXMvZ3JlZW4uZ2lm1QkHHyAIIU0jTk9PEQP5
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2Fy
ZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8
dGl0bGU+SnNVbml0IG1haW4tcHJvZ3Jlc3MuaHRtbDwvdGl0bGU+CiAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi9jc3MvanNVbml0U3R5bGUuY3NzIj4K
ICA8L2hlYWQ+PGJvZHk+CiAgICA8dGFibGUgd2lkdGg9IjM3NSIgY2VsbHBhZGRpbmc9IjAiIGNl
bGxzcGFjaW5nPSIwIiBib3JkZXI9IjAiIHN1bW1hcnk9IlRlc3QgcHJvZ3Jlc3MgaW5kaWNhdG9y
Ij4KICAgICAgPHRib2R5Pjx0cj48dGQgd2lkdGg9IjY1IiB2YWxpZ249InRvcCI+PGI+UHJvZ3Jl
c3M6PC9iPjwvdGQ+PHRkIHdpZHRoPSIzMDAiIGhlaWdodD0iMTQiIHZhbGlnbj0ibWlkZGxlIj4K
ICAgICAgICAgIDx0YWJsZSB3aWR0aD0iMzAwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9
IjAiIGJvcmRlcj0iMSIgc3VtbWFyeT0iUHJvZ3Jlc3MgaW1hZ2UiPgogICAgICAgICAgICA8dGJv
ZHk+PHRyPjx0ZCB3aWR0aD0iMzAwIiBoZWlnaHQ9IjE0IiB2YWxpZ249InRvcCI+PGltZyBuYW1l
PSJwcm9ncmVzcyIgaGVpZ2h0PSIxNCIgd2lkdGg9IjAiIGFsdD0icHJvZ3Jlc3MgaW1hZ2UiIHNy
Yz0iLi4vaW1hZ2VzL2dyZWVuLmdpZiI+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT4KICAgICAg
ICA8L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPgogIAoKCjwvYm9keT48L2h0bWw+XG1haW5Qcm9n
cmVzc18QSmZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5p
dC9hcHAvbWFpbi1wcm9ncmVzcy5odG1s0gIDUVXVCQcfIAghUiNTVE8RAq08IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBGcmFtZXNldC8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNC9mcmFtZXNldC5kdGQiPjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L2ZyYW1lc2V0LmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQsIGVkd2Fy
ZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBj
b250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+PC90aXRsZT4K
ICA8L2hlYWQ+PGZyYW1lc2V0IGNvbHM9IjIwMCwxOTAsKiI+PGZyYW1lIG5hbWU9Im1haW5Db3Vu
dHNSdW5zIiBzcmM9Im1haW4tY291bnRzLXJ1bnMuaHRtbCIgc2Nyb2xsaW5nPSJubyIgZnJhbWVi
b3JkZXI9IjAiPjxmcmFtZSBuYW1lPSJtYWluQ291bnRzRXJyb3JzIiBzcmM9Im1haW4tY291bnRz
LWVycm9ycy5odG1sIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCI+PGZyYW1lIG5hbWU9
Im1haW5Db3VudHNGYWlsdXJlcyIgc3JjPSJtYWluLWNvdW50cy1mYWlsdXJlcy5odG1sIiBzY3Jv
bGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCI+PC9mcmFtZXNldD48L2h0bWw+Wm1haW5Db3VudHNf
EEhmaWxlOi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvYXBw
L21haW4tY291bnRzLmh0bWyjVl1k0gECV1mhWNQGBwgJMDEyM9UJBx8gCCFaI1tcTxEB8DwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4i
ICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPjwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPjxodG1sPjwhLS0gQGF1dGhvciBFZHdhcmQgSGll
YXR0LCBlZHdhcmRAanN1bml0Lm5ldCAtLT48aGVhZD4KCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4gIAogICAgPHRpdGxl
PjwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVm
PSIuLi9jc3MvanNVbml0U3R5bGUuY3NzIj4KICA8L2hlYWQ+PGJvZHk+CiAgICA8ZGl2PjxiPlJ1
bnM6PC9iPiAwPC9kaXY+CiAgCgoKPC9ib2R5PjwvaHRtbD5ebWFpbkNvdW50c1J1bnNfEE1maWxl
Oi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvYXBwL21haW4t
Y291bnRzLXJ1bnMuaHRtbNIBAl5goV/UBgcICTAxMjPVCQcfIAghYSNiY08RAfA8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0
cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj48IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5v
cmcvVFIvaHRtbDQvbG9vc2UuZHRkIj48aHRtbD48IS0tIEBhdXRob3IgRWR3YXJkIEhpZWF0dCwg
ZWR3YXJkQGpzdW5pdC5uZXQgLS0+PGhlYWQ+Cgk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+ICAKICAgIDx0aXRsZT48L3Rp
dGxlPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4v
Y3NzL2pzVW5pdFN0eWxlLmNzcyI+CiAgPC9oZWFkPjxib2R5PgogICAgPGRpdj48Yj5FcnJvcnM6
PC9iPiAwPC9kaXY+CiAgCjwvYm9keT48L2h0bWw+XxAQbWFpbkNvdW50c0Vycm9yc18QT2ZpbGU6
Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9hcHAvbWFpbi1j
b3VudHMtZXJyb3JzLmh0bWzSAQJlZ6Fm1AYHCAkwMTIz1QkHHyAIIWgjaWpPEQH0PCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQs
IGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+PC90
aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4u
L2Nzcy9qc1VuaXRTdHlsZS5jc3MiPgogIDwvaGVhZD48Ym9keT4KICAgIDxkaXY+PGI+RmFpbHVy
ZXM6PC9iPiAwPC9kaXY+CiAgCgoKPC9ib2R5PjwvaHRtbD5fEBJtYWluQ291bnRzRmFpbHVyZXNf
EFFmaWxlOi8vL1VzZXJzL2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvYXBw
L21haW4tY291bnRzLWZhaWx1cmVzLmh0bWzSAQJsbqFt1AYHCAkwMTIz1QkHHyAIIW8jcHFPEQfo
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2Fy
ZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0i
Q29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8
dGl0bGU+SnNVbml0IG1haW4tcmVzdWx0cy5odG1sPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL2Nzcy9qc1VuaXRTdHlsZS5jc3MiPgog
IDwvaGVhZD48Ym9keT4KICAJPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4
dC9qYXZhc2NyaXB0Ij4KICAJICB2YXIgdXJsPSJodHRwOi8vIjsKICAJICBpZiAodG9wLndhc1Jl
c3VsdFVybFNwZWNpZmllZCgpKSB7CgkJICB1cmwgKz0gdG9wLmdldFNwZWNpZmllZFJlc3VsdFVy
bCgpOwogIAkgIH0gZWxzZSB7CgkgIAkgIHZhciB3ZWJzZXJ2ZXI9dG9wLmdldFdlYnNlcnZlcigp
OwoJICAJICBpZiAod2Vic2VydmVyPT1udWxsKQoJICAJICAJd2Vic2VydmVyPSJsb2NhbGhvc3Qi
OwoJICAgICAgdXJsKz13ZWJzZXJ2ZXI7CgkgICAgICBpZiAod2Vic2VydmVyLmluZGV4T2YoIjoi
KT09LTEpCgkgICAgICAJdXJsKz0iOjgwODAiOwoJICAgICAgdXJsKz0iL2pzdW5pdC9hY2NlcHRv
ciI7CiAgIAkgIH0KICAJICB2YXIgZm9ybVN0cmluZyA9ICI8Zm9ybSBuYW1lPVwicmVzdWx0c0Zv
cm1cIiBhY3Rpb249XCIiK3VybCsiXCIgbWV0aG9kPVwicG9zdFwiIHRhcmdldD1cIl90b3BcIj4i
OwoJICBkb2N1bWVudC53cml0ZShmb3JtU3RyaW5nKTsKICAJPC9zY3JpcHQ+PGZvcm0gbmFtZT0i
cmVzdWx0c0Zvcm0iIGFjdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL2pzdW5pdC9hY2NlcHRv
ciIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9Il90b3AiPiAgICAKICAgICAgPGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0iaWQiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1c2VyQWdl
bnQiPgogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJKc1VuaXRWZXJzaW9uIj4KICAg
ICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idGltZSI+CiAgICAgIDxpbnB1dCB0eXBlPSJo
aWRkZW4iIG5hbWU9ImJhc2VVUkwiPgogICAgICA8c2VsZWN0IHNpemU9IjUiIG5hbWU9InRlc3RD
YXNlcyIgbXVsdGlwbGU9IiI+PC9zZWxlY3Q+ICAgICAgCiAgICA8L2Zvcm0+CiAgICA8c2NyaXB0
IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWZ1bmN0aW9u
IHBvcHVsYXRlSGVhZGVyRmllbGRzKGlkLCB1c2VyQWdlbnQsIGpzVW5pdFZlcnNpb24sIGJhc2VV
UkwpIHsKCSAgICAJZG9jdW1lbnQucmVzdWx0c0Zvcm0uaWQudmFsdWU9aWQ7CgkgICAgCWRvY3Vt
ZW50LnJlc3VsdHNGb3JtLnVzZXJBZ2VudC52YWx1ZT11c2VyQWdlbnQ7CgkgICAgCWRvY3VtZW50
LnJlc3VsdHNGb3JtLkpzVW5pdFZlcnNpb24udmFsdWU9anNVbml0VmVyc2lvbjsKICAgICAgICAg
ICAgICAgIGRvY3VtZW50LnJlc3VsdHNGb3JtLmJhc2VVUkwudmFsdWUgPSBiYXNlVVJMOwoJCX0K
CQlmdW5jdGlvbiBzdWJtaXRSZXN1bHRzKCkgewoJCSAgdmFyIHRlc3RDYXNlc0ZpZWxkID0gZG9j
dW1lbnQucmVzdWx0c0Zvcm0udGVzdENhc2VzOwoJCSAgZm9yICh2YXIgaT0wOyBpPHRlc3RDYXNl
c0ZpZWxkLmxlbmd0aDsgaSsrKSB7CgkJCSAgdGVzdENhc2VzRmllbGRbaV0uc2VsZWN0ZWQ9dHJ1
ZTsgIAoJCSAgfQoJCSAgZG9jdW1lbnQucmVzdWx0c0Zvcm0uc3VibWl0KCk7CgkJCgkJfQogICAg
PC9zY3JpcHQ+CiAgCgoKPC9ib2R5PjwvaHRtbD5bbWFpblJlc3VsdHNfEElmaWxlOi8vL1VzZXJz
L2Rka2lsemVyL1Byb2plY3RzL0NvY29hL1dlYktpdC9qc3VuaXQvYXBwL21haW4tcmVzdWx0cy5o
dG1s0gECc3WhdNQGBwgJMDEyM9UJBx8gCCF2I3d4TxEErjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9UUi9odG1sNC9sb29zZS5kdGQiPjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9s
b29zZS5kdGQiPjxodG1sPjwhLS0gQGF1dGhvciBFZHdhcmQgSGllYXR0LCBlZHdhcmRAanN1bml0
Lm5ldCAtLT48aGVhZD4KCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4gIAogICAgPHRpdGxlPkpzVW5pdCBtYWluLWVycm9y
cy5odG1sPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
IGhyZWY9Ii4uL2Nzcy9qc1VuaXRTdHlsZS5jc3MiPgogIDwvaGVhZD48Ym9keT4KICAgIDxocj4K
ICAgIDxmb3JtIG5hbWU9InRlc3RSdW5uZXJGb3JtIiBhY3Rpb249ImphdmFzY3JpcHQ6dG9wLnRl
c3RNYW5hZ2VyLnNob3dNZXNzYWdlRm9yU2VsZWN0ZWRQcm9ibGVtVGVzdCgpIj4KICAgICAgPHA+
RXJyb3JzIGFuZCBmYWlsdXJlczrCoDwvcD4KICAgICAgPHNlbGVjdCBzaXplPSI1IiBvbmRibGNs
aWNrPSJ0b3AudGVzdE1hbmFnZXIuc2hvd01lc3NhZ2VGb3JTZWxlY3RlZFByb2JsZW1UZXN0KCki
IG5hbWU9InByb2JsZW1zTGlzdCI+CiAgICAgIAkgPG9wdGlvbj7CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA8L29wdGlvbj4KICAgICAgPC9zZWxlY3Q+CiAgICAgIDxi
cj4KICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNob3cgc2VsZWN0ZWQiIG9uY2xp
Y2s9InRvcC50ZXN0TWFuYWdlci5zaG93TWVzc2FnZUZvclNlbGVjdGVkUHJvYmxlbVRlc3QoKSI+
CiAgICAgIMKgwqDCoAogICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iU2hvdyBhbGwi
IG9uY2xpY2s9InRvcC50ZXN0TWFuYWdlci5zaG93TWVzc2FnZXNGb3JBbGxQcm9ibGVtVGVzdHMo
KSI+CiAgICA8L2Zvcm0+CiAgCgoKPC9ib2R5PjwvaHRtbD5abWFpbkVycm9yc18QSGZpbGU6Ly8v
VXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9hcHAvbWFpbi1lcnJv
cnMuaHRtbNICA3p+1QkHHyAIIXsjfH1PEQVGPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0Mv
L0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQu
MDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0
ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0t
PjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0
bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+anNVbml0IEV4dGVybmFsIERhdGEgRG9j
dW1lbnQgbG9hZGVyPC90aXRsZT4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0Ij4KCiAgdmFyIGxvYWRTdGF0dXM7CiAgdmFyIGNhbGxiYWNrID0gZnVu
Y3Rpb24gKCkge307CgogIGZ1bmN0aW9uIGJ1ZmZlcigpCiAgewogICAgcmV0dXJuIHdpbmRvdy5m
cmFtZXMuZG9jdW1lbnRCdWZmZXI7CiAgfQoKICBmdW5jdGlvbiBsb2FkKHVyaSkKICB7CiAgICBs
b2FkU3RhdHVzID0gJ2xvYWRpbmcnOwogICAgYnVmZmVyKCkuZG9jdW1lbnQubG9jYXRpb24uaHJl
ZiA9IHVyaTsKICB9CiAgCiAgZnVuY3Rpb24gbG9hZENvbXBsZXRlKCkKICB7CiAgICB0b3AueGJE
RUJVRy5kdW1wKCdtYWluLWxvYWRlci5odG1sOmxvYWRDb21wbGV0ZSgpOiBsb2FkU3RhdHVzID0g
JyArIGxvYWRTdGF0dXMgKyAnIGhyZWY9JyArIGJ1ZmZlcigpLmRvY3VtZW50LmxvY2F0aW9uLmhy
ZWYpOwogICAgaWYgKGxvYWRTdGF0dXMgPT0gJ2xvYWRpbmcnKQogICAgewogICAgICBsb2FkU3Rh
dHVzID0gJ2NvbXBsZXRlJzsKICAgICAgY2FsbGJhY2soKTsKICAgICAgY2FsbGJhY2sgPSBmdW5j
dGlvbiAoKSB7fTsKICAgIH0KICB9CgogIGlmICh0b3AueGJERUJVRy5vbikKICB7CiAgICB2YXIg
c2NvcGVOYW1lID0gJ21haW5fbG9hZGVyXycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAg
dG9wW3Njb3BlTmFtZV0gPSB3aW5kb3c7CiAgICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oc2Nv
cGVOYW1lLCAnYnVmZmVyJyk7CiAgICB0b3AueGJEZWJ1Z1RyYWNlRnVuY3Rpb24oc2NvcGVOYW1l
LCAnbG9hZCcpOwogICAgdG9wLnhiRGVidWdUcmFjZUZ1bmN0aW9uKHNjb3BlTmFtZSwgJ2xvYWRD
b21wbGV0ZScpOwogIH0KICAKPC9zY3JpcHQ+CjwvaGVhZD48Ym9keT4KPGlmcmFtZSBuYW1lPSJk
b2N1bWVudEJ1ZmZlciIgb25sb2FkPSJsb2FkQ29tcGxldGUoKSI+PC9pZnJhbWU+CgoKCjwvYm9k
eT48L2h0bWw+XmRvY3VtZW50TG9hZGVyXxBIZmlsZTovLy9Vc2Vycy9kZGtpbHplci9Qcm9qZWN0
cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9tYWluLWxvYWRlci5odG1soX/RAoDVCQcfIAghgSOC
g08QGjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+XmRvY3VtZW50QnVmZmVyW2Fib3V0OmJsYW5r
0gIDhYnVCQcfIAghhiOHiE8RAh88IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBGcmFtZXNldC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9mcmFtZXNl
dC5kdGQiPjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1l
c2V0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2ZyYW1lc2V0LmR0ZCI+PGh0bWw+
PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQsIGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJ
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+SnNVbml0IFRlc3QgQ29udGFpbmVyPC90aXRsZT4KICA8
L2hlYWQ+PGZyYW1lc2V0IHJvd3M9IjAsICoiPjxmcmFtZSBuYW1lPSJ0ZXN0Q29udGFpbmVyQ29u
dHJvbGxlciIgc3JjPSJ0ZXN0Q29udGFpbmVyQ29udHJvbGxlci5odG1sIj48ZnJhbWUgbmFtZT0i
dGVzdEZyYW1lIiBzcmM9ImVtcHR5UGFnZS5odG1sIj48L2ZyYW1lc2V0PjwvaHRtbD5ddGVzdENv
bnRhaW5lcl8QSmZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJvamVjdHMvQ29jb2EvV2ViS2l0L2pz
dW5pdC9hcHAvdGVzdENvbnRhaW5lci5odG1sooqP0QKL1QkHHyAIIYwjjY5PEQdkPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMu
b3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+PGh0bWw+PCEtLSBAYXV0aG9yIEVkd2FyZCBIaWVhdHQs
IGVkd2FyZEBqc3VuaXQubmV0IC0tPjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPiAgCiAgICA8dGl0bGU+SnNV
bml0IFRlc3QgQ29udGFpbmVyIENvbnRyb2xsZXI8L3RpdGxlPgo8c2NyaXB0IGxhbmd1YWdlPSJq
YXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgY29udGFpbmVyUmVhZHk9ZmFs
c2U7CgpmdW5jdGlvbiBpbml0KCkKewogIGNvbnRhaW5lclJlYWR5ID0gdHJ1ZTsKfQoKZnVuY3Rp
b24gaXNQYWdlTG9hZGVkKCkgCnsKICBpZiAoIWNvbnRhaW5lclJlYWR5KSAKICAgIHJldHVybiBm
YWxzZTsKCiAgdmFyIGlzVGVzdFBhZ2VMb2FkZWQ9ZmFsc2U7CgogIHRyeSAKICB7CiAgICAvLyBh
dHRlbXB0IHRvIGFjY2VzcyB0aGUgdmFyIGlzVGVzdFBhZ2VMb2FkZWQgaW4gdGhlIHRlc3RGcmFt
ZQogICAgaWYgKHR5cGVvZih0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lLmlzVGVz
dFBhZ2VMb2FkZWQpICE9ICd1bmRlZmluZWQnKQogICAgewogICAgICBpc1Rlc3RQYWdlTG9hZGVk
PXRvcC50ZXN0TWFuYWdlci5jb250YWluZXJUZXN0RnJhbWUuaXNUZXN0UGFnZUxvYWRlZDsKICAg
IH0KCiAgICAvLyBvaywgaWYgdGhlIGFib3ZlIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLCB0
aGVuIHRoZSAKICAgIC8vIHZhcmlhYmxlIGlzIGRlZmluZWQuIElmIHRoZSBvbmxvYWQgaGFzIG5v
dCBmaXJlZCBpbiB0aGUKICAgIC8vIHRlc3RGcmFtZSB0aGVuIGlzVGVzdFBhZ2VMb2FkZWQgaXMg
c3RpbGwgZmFsc2UuIE90aGVyd2lzZQogICAgLy8gdGhlIHRlc3RGcmFtZSBoYXMgc2V0IGl0IHRv
IHRydWUKICB9CiAgY2F0Y2ggKGUpIAogIHsKICAgIC8vIGFuIGVycm9yIG9jY3VyZWQgd2hpbGUg
YXR0ZW1wdGluZyB0byBhY2Nlc3MgdGhlIGlzVGVzdFBhZ2VMb2FkZWQKICAgIC8vIGluIHRoZSB0
ZXN0RnJhbWUsIHRoZXJlZm9yZSB0aGUgdGVzdEZyYW1lIGhhcyBub3QgbG9hZGVkIHlldAogICAg
aXNUZXN0UGFnZUxvYWRlZD1mYWxzZTsKICB9CiAgcmV0dXJuIGlzVGVzdFBhZ2VMb2FkZWQ7Cn0K
CmZ1bmN0aW9uIGlzQ29udGFpbmVyUmVhZHkoKSAKewogICAgcmV0dXJuIGNvbnRhaW5lclJlYWR5
Owp9CgpmdW5jdGlvbiBzZXROb3RSZWFkeSgpIAp7CiAgdHJ5IAogIHsKICAgIC8vIGF0dGVtcHQg
dG8gc2V0IHRoZSBpc1Rlc3RQYWdlTG9hZGVkIHZhcmlhYmxlCiAgICAvLyBpbiB0aGUgdGVzdCBm
cmFtZSB0byBmYWxzZS4gCiAgICB0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1lLmlz
VGVzdFBhZ2VMb2FkZWQ9ZmFsc2U7CiAgfSAKICBjYXRjaCAoZSkgCiAgewogICAgLy8gdGVzdEZy
YW1lLmlzVGVzdFBhZ2VMb2FkZWQgbm90IGF2YWlsYWJsZS4uLiBpZ25vcmUKICB9Cn0KZnVuY3Rp
b24gc2V0VGVzdFBhZ2UoZmlsZU5hbWUpIHsKICBzZXROb3RSZWFkeSgpOwogIHRvcC5qc1VuaXRQ
YXJzZVBhcm1zKGZpbGVOYW1lKTsKICB0b3AudGVzdE1hbmFnZXIuY29udGFpbmVyVGVzdEZyYW1l
LmxvY2F0aW9uLmhyZWY9ZmlsZU5hbWU7Cn0KPC9zY3JpcHQ+CiAgPC9oZWFkPjxib2R5IG9ubG9h
ZD0iaW5pdCgpIj4KICAgIFRlc3QgQ29udGFpbmVyIENvbnRyb2xsZXIKICAKPC9ib2R5PjwvaHRt
bD5fEBd0ZXN0Q29udGFpbmVyQ29udHJvbGxlcl8QVGZpbGU6Ly8vVXNlcnMvZGRraWx6ZXIvUHJv
amVjdHMvQ29jb2EvV2ViS2l0L2pzdW5pdC9hcHAvdGVzdENvbnRhaW5lckNvbnRyb2xsZXIuaHRt
bNECkNUJBx8gCCGRI5KTTxEBkzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRN
TCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29z
ZS5kdGQiPjwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5z
aXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPjxodG1s
PjwhLS0gQGF1dGhvciBFZHdhcmQgSGllYXR0LCBlZHdhcmRAanN1bml0Lm5ldCAtLT48aGVhZD4K
CTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PVVURi04Ij4gICAgCiAgICA8dGl0bGU+ZW1wdHlQYWdlPC90aXRsZT4KICA8L2hlYWQ+PGJv
ZHk+CiAgCgoKPC9ib2R5PjwvaHRtbD5ZdGVzdEZyYW1lXxBGZmlsZTovLy9Vc2Vycy9kZGtpbHpl
ci9Qcm9qZWN0cy9Db2NvYS9XZWJLaXQvanN1bml0L2FwcC9lbXB0eVBhZ2UuaHRtbAAACAAADwAA
IQAAMwAASQAATwAAWAAAbgAAgAAAjwAApQACnQAiRwAijAAipwAisAAkqwBUFQBUXQBUZgBWaACo
RACokwConACqmQCzsQCz+wC0BAC2BAC6AgC6TwC6WgC6eAC6jwC6mQDNJgDNLADNLQDNcwDNdwDN
fADNhwDQ0QDQ2wDRJQDRLADRMQDRNQDRPgDTKQDWmgDW5ADW7QDW9gDW/wDY7gDikwDi4ADi6gDi
9QD5QAD5SQD5kgD5lwD5mQD5ogD5rQD7vwD7ygD8FQD8GgD8HQD8JgD8LwD+GAEBRwEBjgEBmQEF
lgEFowEF8AEF9QEGAAEIsQEIvAEJBwEJCwEJEAEJEgEJGwEJJgELGgELKQELeQELfgELgAELiQEL
lAENiAENmwEN7QEN8gEN9AEN/QEOCAEQAAEQFQEQaQEQbgEQcAEQeQEQhAEYcAEYfAEYyAEYzQEY
zwEY2AEY4wEdlQEdoAEd6wEd8AEd+wEjRQEjVAEjnwEjoQEjpAEjrwEjzAEj2wEj5wEj7AEj9wEm
GgEmKAEmdQEmeAEmewEmhgEt7gEuCAEuXwEuYgEubQEwBAEwDgAAAAAAAAMBAAAAAAAAAJQAAAAA
AAAAAAAAAAAAATBX
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>12196</attachid>
            <date>2007-01-03 12:51:11 -0800</date>
            <delta_ts>2007-01-03 12:57:14 -0800</delta_ts>
            <desc>Reduction (will crash)</desc>
            <filename>12082 reduction.html</filename>
            <type>text/html</type>
            <size>199</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGZyYW1lc2V0IGNvbHM9IjYsKiI+CiAgICA8ZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCwKICAg
ICAgICA8ZnJhbWVzZXQgY29scz0nKiwqLDUwJSc+CiAgICAgICAgICAgIDxmcmFtZT4KICAgICAg
ICAgICAgPGZyYW1lPgogICAgICAgICAgICA8ZnJhbWU+CiAgICAgICAgPC9mcmFtZXNldD4KICAg
ICI+CiAgICA8ZnJhbWU+CjwvZnJhbWVzZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12199</attachid>
            <date>2007-01-03 13:41:22 -0800</date>
            <delta_ts>2007-01-03 13:59:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>12082_r1.patch</filename>
            <type>text/plain</type>
            <size>3312</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NTUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDctMDEtMDMgIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIwODIKKyAgICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzMpOiBDcmFzaCBpbiBSZW5kZXJGcmFt
ZVNldDo6bGF5T3V0QXhpcygpCisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1h
aW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvbmVnYXRpdmUtcmVtYWluaW5nLWxlbmd0aC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAw
Ny0wMS0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2
ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL25lZ2F0aXZl
LXJlbWFpbmluZy1sZW5ndGgtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL25lZ2F0aXZlLXJlbWFpbmlu
Zy1sZW5ndGgtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRp
dGxlPjwvdGl0bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGZyYW1l
c2V0IGNvbHM9IjYsKiI+CisgICAgPGZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsCisgICAgICAg
IDxmcmFtZXNldCBjb2xzPScqLCosNTAlJz4KKyAgICAgICAgICAgIDxmcmFtZT4KKyAgICAgICAg
ICAgIDxmcmFtZT4KKyAgICAgICAgICAgIDxmcmFtZT4KKyAgICAgICAgPC9mcmFtZXNldD4KKyAg
ICAiPgorICAgIDxmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgICAgICA8cD4KKyAgICAg
ICAgVGVzdCBmb3IgPGk+PGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwODIiPlRlc3QgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDgyPC9hPgorICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzMpOiBDcmFzaCBpbiBSZW5k
ZXJGcmFtZVNldDo6bGF5T3V0QXhpcygpPC9pPi4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4K
KyAgICAgICAgT24gYW4gSW50ZWwgbWFjaGluZSwgbm8gY3Jhc2ggbWVhbnMgU1VDQ0VTUy4KKyAg
ICAgICAgPC9wPgorICAgICc+Cis8L2ZyYW1lc2V0PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTUx
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAwNy0wMS0wMyAgTWl0eiBQZXR0ZWwgIDxtaXR6QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwODIKKyAgICAgICAgICBSRUdSRVNTSU9OIChyMTgz
MzMpOiBDcmFzaCBpbiBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcygpCisKKyAgICAgICAgVGVz
dDogZmFzdC9mcmFtZXMvbmVnYXRpdmUtcmVtYWluaW5nLWxlbmd0aC1jcmFzaC5odG1sCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOiBJZiB0aGUgYXZhaWxhYmxlIGxlbmd0aCBpcwor
ICAgICAgICBub24tcG9zaXRpdmUsIGp1c3QgZmlsbCB0aGUgZ3JpZCB3aXRoIHplcm9zIGFuZCBy
ZXR1cm4uCisKIDIwMDctMDEtMDMgIExhcnMgS25vbGwgPGxhcnNAdHJvbGx0ZWNoLmNvbT4KIAog
ICAgICAgICBGaXggdGhlIFF0IGJ1aWxkCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
cmFtZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVT
ZXQuY3BwCShyZXZpc2lvbiAxODU0NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1l
U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMywxMiBAQCB2b2lkIFJlbmRlckZy
YW1lU2V0OjpsYXlPdXRBeGlzKEdyaWRBeGlzCiAgICAgaW50IGdyaWRMZW4gPSBheGlzLm1fc2l6
ZXMuc2l6ZSgpOwogICAgIEFTU0VSVChncmlkTGVuKTsKIAorICAgIGlmIChhdmFpbGFibGVMZW4g
PD0gMCkgeworICAgICAgICBheGlzLm1fc2l6ZXMuZmlsbCgwKTsKKyAgICAgICAgYXhpcy5tX2Rl
bHRhcy5maWxsKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaW50IHRvdGFsUmVs
YXRpdmUgPSAwOwogICAgIGludCB0b3RhbEZpeGVkID0gMDsKICAgICBpbnQgdG90YWxQZXJjZW50
ID0gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>12201</attachid>
            <date>2007-01-03 13:59:20 -0800</date>
            <delta_ts>2007-01-03 14:00:16 -0800</delta_ts>
            <desc>Treat negative availableLength as zero</desc>
            <filename>12082_r2.patch</filename>
            <type>text/plain</type>
            <size>3196</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE4NTUxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDctMDEtMDMgIE1pdHogUGV0dGVsICA8bWl0
ekB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIwODIKKyAgICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzMpOiBDcmFzaCBpbiBSZW5kZXJGcmFt
ZVNldDo6bGF5T3V0QXhpcygpCisKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1h
aW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
cmFtZXMvbmVnYXRpdmUtcmVtYWluaW5nLWxlbmd0aC1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAw
Ny0wMS0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2
ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL25lZ2F0aXZl
LXJlbWFpbmluZy1sZW5ndGgtY3Jhc2gtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL25lZ2F0aXZlLXJlbWFpbmlu
Zy1sZW5ndGgtY3Jhc2guaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9uZWdhdGl2ZS1yZW1haW5pbmctbGVuZ3RoLWNyYXNoLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+CisgICAgPHRp
dGxlPjwvdGl0bGU+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGZyYW1l
c2V0IGNvbHM9IjYsKiI+CisgICAgPGZyYW1lIHNyYz0iZGF0YTp0ZXh0L2h0bWwsCisgICAgICAg
IDxmcmFtZXNldCBjb2xzPScqLCosNTAlJz4KKyAgICAgICAgICAgIDxmcmFtZT4KKyAgICAgICAg
ICAgIDxmcmFtZT4KKyAgICAgICAgICAgIDxmcmFtZT4KKyAgICAgICAgPC9mcmFtZXNldD4KKyAg
ICAiPgorICAgIDxmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLAorICAgICAgICA8cD4KKyAgICAg
ICAgVGVzdCBmb3IgPGk+PGEgaHJlZj0iaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTIwODIiPlRlc3QgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDgyPC9hPgorICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzMpOiBDcmFzaCBpbiBSZW5k
ZXJGcmFtZVNldDo6bGF5T3V0QXhpcygpPC9pPi4KKyAgICAgICAgPC9wPgorICAgICAgICA8cD4K
KyAgICAgICAgT24gYW4gSW50ZWwgbWFjaGluZSwgbm8gY3Jhc2ggbWVhbnMgU1VDQ0VTUy4KKyAg
ICAgICAgPC9wPgorICAgICc+Cis8L2ZyYW1lc2V0PgorPC9odG1sPgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTUx
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAwNy0wMS0wMyAgTWl0eiBQZXR0ZWwgIDxtaXR6QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwODIKKyAgICAgICAgICBSRUdSRVNTSU9OIChyMTgz
MzMpOiBDcmFzaCBpbiBSZW5kZXJGcmFtZVNldDo6bGF5T3V0QXhpcygpCisKKyAgICAgICAgVGVz
dDogZmFzdC9mcmFtZXMvbmVnYXRpdmUtcmVtYWluaW5nLWxlbmd0aC1jcmFzaC5odG1sCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRnJhbWVTZXQ6OmxheU91dEF4aXMpOiBUcmVhdCBuZWdhdGl2ZSBhdmFpbGFibGVMZW5n
dGgKKyAgICAgICAgYXMgemVyby4KKwogMjAwNy0wMS0wMyAgTGFycyBLbm9sbCA8bGFyc0B0cm9s
bHRlY2guY29tPgogCiAgICAgICAgIEZpeCB0aGUgUXQgYnVpbGQKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZyYW1lU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFtZVNldC5jcHAJKHJldmlzaW9uIDE4NTQ1KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRnJhbWVTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHZv
aWQgUmVuZGVyRnJhbWVTZXQ6OkdyaWRBeGlzOjpyZXNpemUoaW4KIAogdm9pZCBSZW5kZXJGcmFt
ZVNldDo6bGF5T3V0QXhpcyhHcmlkQXhpcyYgYXhpcywgY29uc3QgTGVuZ3RoKiBncmlkLCBpbnQg
YXZhaWxhYmxlTGVuKQogeworICAgIGF2YWlsYWJsZUxlbiA9IG1heChhdmFpbGFibGVMZW4sIDAp
OworCiAgICAgaW50KiBncmlkTGF5b3V0ID0gYXhpcy5tX3NpemVzOwogCiAgICAgaWYgKCFncmlk
KSB7Cg==
</data>
<flag name="review"
          id="4528"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>