<?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>97063</bug_id>
          
          <creation_ts>2012-09-18 19:55:43 -0700</creation_ts>
          <short_desc>Page loading performance tests should measure time in C++</short_desc>
          <delta_ts>2012-11-03 23:16:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>723210</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 19:55:43 -0700</bug_when>
    <thetext>Right now page loading performance tests (PerformanceTests/PageLoad/; most notably all SVG perf. tests) and replay tests (PerformanceTests/Replay) measure the load time in Python. We should do this measurement in C++ code instead to reduce the variance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723238</commentid>
    <comment_count>1</comment_count>
      <attachid>164652</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 20:44:30 -0700</bug_when>
    <thetext>Created attachment 164652
Sample output

On my second thought, I&apos;m not certain this is an overall improvement. The variance has increased after the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723242</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-09-18 21:02:27 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=164652) [details]
&gt; Sample output
&gt; 
&gt; On my second thought, I&apos;m not certain this is an overall improvement. The variance has increased after the change.

Just for curiosity, do you have any WIP patch for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723243</commentid>
    <comment_count>3</comment_count>
      <attachid>164654</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 21:02:54 -0700</bug_when>
    <thetext>Created attachment 164654
Change used to generate the output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723250</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-09-18 21:25:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=164654) [details]
&gt; Change used to generate the output
Thanks for the patch.

This needs DRT help from each port and records only the start and the end.
If we can track some other timings, this might worth having.
But if this is only for the start-end measurement, touching DRTs looks a bit overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723251</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-09-18 21:29:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; This needs DRT help from each port and records only the start and the end.
&gt; If we can track some other timings, this might worth having.
&gt; But if this is only for the start-end measurement, touching DRTs looks a bit overkill.

Right. I had initially thought this will reduce the variance for some tests (e.g. https://bugs.webkit.org/show_bug.cgi?id=97062) but it turned out that it only amplified as the total time has reduced. With this patch, the variance is ~150% on that test :(

I&apos;m inclined to say this change is probably not worth the effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726080</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-09-22 00:35:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; This needs DRT help from each port and records only the start and the end.
&gt; &gt; If we can track some other timings, this might worth having.
&gt; &gt; But if this is only for the start-end measurement, touching DRTs looks a bit overkill.
&gt; 
&gt; Right. I had initially thought this will reduce the variance for some tests (e.g. https://bugs.webkit.org/show_bug.cgi?id=97062) but it turned out that it only amplified as the total time has reduced. With this patch, the variance is ~150% on that test :(
&gt; 
&gt; I&apos;m inclined to say this change is probably not worth the effort.

It should be more precise to measure from DRT and we should either modify DRT because of the memory measurements. Just because keeping the variance low by using python to the measurements doesn&apos;t seem a good idea to me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>164652</attachid>
            <date>2012-09-18 20:44:30 -0700</date>
            <delta_ts>2012-09-18 20:44:30 -0700</delta_ts>
            <desc>Sample output</desc>
            <filename>PerformanceTestsResults.html</filename>
            <type>text/html</type>
            <size>23875</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPldlYktpdCBQZXJmb3JtYW5jZSBU
ZXN0IFJlc3VsdHM8L3RpdGxlPgo8c2NyaXB0IHNyYz0iL1VzZXJzL3JuaXdhL3dlYmtpdC9QZXJm
b3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2VzL2Ryb21hZW8vd2ViL2xpYi9qcXVlcnktMS42
LjQuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvYnJv
d3Nlci90cnVuay9QZXJmb3JtYW5jZVRlc3RzL0Ryb21hZW8vcmVzb3VyY2VzL2Ryb21hZW8vd2Vi
L2xpYi9qcXVlcnktMS42LjQuanM/Zm9ybWF0PXR4dCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSIv
VXNlcnMvcm5pd2Evd2Via2l0L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL2pxdWVyeS5mbG90
Lm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9i
cm93c2VyL3RydW5rL1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL2pxdWVyeS5mbG90Lm1pbi5q
cz9mb3JtYXQ9dHh0Ij48L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii9Vc2Vycy9ybml3YS93ZWJraXQv
UGVyZm9ybWFuY2VUZXN0cy9yZXNvdXJjZXMvanF1ZXJ5LnRhYmxlc29ydGVyLm1pbi5qcyI+PC9z
Y3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5r
L1BlcmZvcm1hbmNlVGVzdHMvcmVzb3VyY2VzL2pxdWVyeS50YWJsZXNvcnRlci5taW4uanM/Zm9y
bWF0PXR4dCI+PC9zY3JpcHQ+CjxzY3JpcHQgaWQ9Impzb24iIHR5cGU9ImFwcGxpY2F0aW9uL2pz
b24iPlt7InRpbWVzdGFtcCI6IDEzNDgwMjQ5NDIsICJyZXN1bHRzIjogeyJQYWdlTG9hZC9zdmcv
ZmlsZXMvYmFtYm9vXzAxLnN2ZyI6IHsibWluIjogMC45ODMwMjkxMjcxMjA5NzE3LCAibWF4Ijog
MS4wMjgxMDU5NzQxOTczODc3LCAibWVkaWFuIjogMS4wMDIzNTgxOTgxNjU4OTM2LCAic3RkZXYi
OiAwLjA1NDYyNjYyMjI3NTg2ODM0LCAiYXZnIjogMS4wMDE3NTEwODQwNzY3MzEsICJ1bml0Ijog
Im1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvd29ybGQtaXNvLnN2ZyI6IHsibWluIjogMC41MTg5
NDE4NzkyNzI0NjA5LCAibWF4IjogMC41Mzg4MzQwOTUwMDEyMjA3LCAibWVkaWFuIjogMC41MzM0
OTU5MDMwMTUxMzY3LCAic3RkZXYiOiAwLjAyOTMwMTcwNTU2ODQzMDcwMywgImF2ZyI6IDAuNTMw
OTAyOTAwMTkzODY2OSwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy93b3JsZGN1
cC5zdmciOiB7Im1pbiI6IDIuMzE3NDYxMDEzNzkzOTQ1MywgIm1heCI6IDIuNDE1NjgzOTg0NzU2
NDY5NywgIm1lZGlhbiI6IDIuMzYwOTM5MDI1ODc4OTA2MiwgInN0ZGV2IjogMC4xMTU5NDAyMjA5
NTY4MTkzLCAiYXZnIjogMi4zNjQzNTU2MDE3NjI0NzA3LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxv
YWQvc3ZnL2ZpbGVzL0hhcnZleV9SYXluZXIuc3ZnIjogeyJtaW4iOiAwLjEwMDM5ODA2MzY1OTY2
Nzk3LCAibWF4IjogMC4xMTcyNDk5NjU2Njc3MjQ2MSwgIm1lZGlhbiI6IDAuMTA0MjA4OTQ2MjI4
MDI3MzQsICJzdGRldiI6IDAuMDE3MzYxMzYwNTcyMzE4NzA2LCAiYXZnIjogMC4xMDQ0ODk4OTEx
NTI2MzI4NSwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy9mb29kX2xlaWZfbG9k
YWhsXzAxLnN2ZyI6IHsibWluIjogMC4xMjU5ODE4MDc3MDg3NDAyMywgIm1heCI6IDAuMTQ2MzM4
OTM5NjY2NzQ4MDUsICJtZWRpYW4iOiAwLjEyOTgzMzkzNjY5MTI4NDE4LCAic3RkZXYiOiAwLjAx
NzYwNTE2NjgzNjIzMTE0MiwgImF2ZyI6IDAuMTMwMzA1NTI4NjQwNzQ3MDcsICJ1bml0IjogIm1z
In0sICJQYWdlTG9hZC9zdmcvZmlsZXMvNDI0NzAtZmxvd2VyX2Zyb21fbXlfZ2FyZGVuX3YyLnN2
ZyI6IHsibWluIjogMC4xNDE5MDQxMTU2NzY4Nzk4OCwgIm1heCI6IDAuMTU3NDU4MDY2OTQwMzA3
NjIsICJtZWRpYW4iOiAwLjE0MzUzMjk5MTQwOTMwMTc2LCAic3RkZXYiOiAwLjAxODI4NDk1MTY1
NzY0MTM5MywgImF2ZyI6IDAuMTQ1NTYzNDI2NzcwNjYxOTcsICJ1bml0IjogIm1zIn0sICJQYWdl
TG9hZC9zdmcvZmlsZXMvZGViOWZyYWMxLnN2ZyI6IHsibWluIjogMC4xODI4MTYwMjg1OTQ5NzA3
LCAibWF4IjogMC4yOTYzNDkwNDg2MTQ1MDE5NSwgIm1lZGlhbiI6IDAuMTg3NjUxMTU3Mzc5MTUw
NCwgInN0ZGV2IjogMC4xNDg0MzI1MTA4MjUwOTIwNCwgImF2ZyI6IDAuMjAxNzY3NTcwMDk0MDU4
NCwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy80NDA1Ny1kcm9wcyBvbiBhIGJs
YWRlLnN2ZyI6IHsibWluIjogMC4zMTYzOTc5MDUzNDk3MzE0NSwgIm1heCI6IDAuMzMzNDM4ODcz
MjkxMDE1NiwgIm1lZGlhbiI6IDAuMzE5NzgyMDE4NjYxNDk5LCAic3RkZXYiOiAwLjAyMDI2NTY4
NDY3MTI0NTcyNSwgImF2ZyI6IDAuMzIxMzEyMzY0Nzc5MDIwNiwgInVuaXQiOiAibXMifSwgIlBh
Z2VMb2FkL3N2Zy9maWxlcy9jb3dib3kuc3ZnIjogeyJtaW4iOiAwLjI4MDkyMDk4MjM2MDgzOTg0
LCAibWF4IjogMC4yOTczODk5ODQxMzA4NTk0LCAibWVkaWFuIjogMC4yODYwMTAwMjY5MzE3NjI3
LCAic3RkZXYiOiAwLjAxOTYyODgwNTg1ODU5NTg2LCAiYXZnIjogMC4yODY2NzU0NDA2Mzc2ODg4
NSwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy9jYWN1dHNfMDEuc3ZnIjogeyJt
aW4iOiAwLjE4NDU0MTk0MDY4OTA4NjkxLCAibWF4IjogMC4yMTAzMzcxNjIwMTc4MjIyNywgIm1l
ZGlhbiI6IDAuMTg3NjkyODgwNjMwNDkzMTYsICJzdGRldiI6IDAuMDI3OTY2MzI2NTMzMDcyMjYz
LCAiYXZnIjogMC4xOTAwNjk4NzYyMTkwOTY5MywgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2
Zy9maWxlcy9jcmF3ZmlzaDJfZ2Fuc29uLnN2ZyI6IHsibWluIjogMC4xMDQ0NDkwMzM3MzcxODI2
MiwgIm1heCI6IDAuMTE4NTcxMDQzMDE0NTI2MzcsICJtZWRpYW4iOiAwLjEwNjI1ODE1MzkxNTQw
NTI3LCAic3RkZXYiOiAwLjAxNzM1Nzg2MTk1OTIyMzc4MiwgImF2ZyI6IDAuMTA4MDk2MzQ4NjEx
OTMyMDYsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvNDI0NTAtdW5kZXIgdGhl
IHNlZS5zdmciOiB7Im1pbiI6IDAuMjc1MTc0ODU2MTg1OTEzMSwgIm1heCI6IDAuMzExNzM4MDE0
MjIxMTkxNCwgIm1lZGlhbiI6IDAuMjc3NzUwOTY4OTMzMTA1NDcsICJzdGRldiI6IDAuMDQ5NDY2
MTk2NTM3NzIwOTcsICJhdmciOiAwLjI4Mjg4MjI1MTIzNzU2ODA1LCAidW5pdCI6ICJtcyJ9fSwg
ImRlc2NyaXB0aW9uIjogImJlZm9yZSIsICJicmFuY2giOiAid2Via2l0LXRydW5rIiwgIndlYmtp
dC1yZXZpc2lvbiI6ICIxMjg5MTgifSwgeyJ0aW1lc3RhbXAiOiAxMzQ4MDI1MDgyLCAid2Via2l0
LXJldmlzaW9uIjogIjEyODkxOCIsICJkZXNjcmlwdGlvbiI6ICJiZWZvcmUiLCAiYnJhbmNoIjog
IndlYmtpdC10cnVuayIsICJyZXN1bHRzIjogeyJQYWdlTG9hZC9zdmcvZmlsZXMvYmFtYm9vXzAx
LnN2ZyI6IHsibWluIjogMC45ODE4NjA4NzYwODMzNzQsICJtYXgiOiAxLjAyMDIwNTAyMDkwNDU0
MSwgIm1lZGlhbiI6IDEuMDAzMTE4OTkxODUxODA2NiwgInN0ZGV2IjogMC4wNTEzNzQwMzY3MDk2
ODc3MTYsICJhdmciOiAxLjAwMDQ2MzMzNTEzNzYxODIsICJ1bml0IjogIm1zIn0sICJQYWdlTG9h
ZC9zdmcvZmlsZXMvd29ybGQtaXNvLnN2ZyI6IHsibWluIjogMC41MjIyNzk5Nzc3OTg0NjE5LCAi
bWF4IjogMC41MzgwNzkwMjMzNjEyMDYsICJtZWRpYW4iOiAwLjUzMzA3NzAwMTU3MTY1NTMsICJz
dGRldiI6IDAuMDIzMTQ2NjQ1ODk2Mjg4NTgyLCAiYXZnIjogMC41MzA5MzIwNzUwOTg5NDEyLCAi
dW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3ZnL2ZpbGVzL3dvcmxkY3VwLnN2ZyI6IHsibWluIjog
Mi4yOTE5MTQ5Mzk4ODAzNzEsICJtYXgiOiAyLjQwMDgwNjkwMzgzOTExMTMsICJtZWRpYW4iOiAy
LjMyNjI0NDExNTgyOTQ2NzgsICJzdGRldiI6IDAuMTY2NTA1MTA0OTM1MjgxODQsICJhdmciOiAy
LjMzOTQyODQ4NzU3NjkzNjQsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvSGFy
dmV5X1JheW5lci5zdmciOiB7Im1pbiI6IDAuMDk5OTU1MDgxOTM5Njk3MjcsICJtYXgiOiAwLjEx
NTQ1OTkxODk3NTgzMDA4LCAibWVkaWFuIjogMC4xMDI0ODAxNzMxMTA5NjE5MSwgInN0ZGV2Ijog
MC4wMTgzNTQzNDY2OTUyODY0MiwgImF2ZyI6IDAuMTAzNjczMTE5Mjk0MDE1OTksICJ1bml0Ijog
Im1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvZm9vZF9sZWlmX2xvZGFobF8wMS5zdmciOiB7Im1p
biI6IDAuMTI2Mjc2OTY5OTA5NjY3OTcsICJtYXgiOiAwLjE0MDI0NjE1Mjg3NzgwNzYyLCAibWVk
aWFuIjogMC4xMjgyOTk5NTE1NTMzNDQ3MywgInN0ZGV2IjogMC4wMTIzNTgzOTY4MDQ5MzEyNDks
ICJhdmciOiAwLjEyOTE2MTcyMTc4MTY4MDQ4LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3Zn
L2ZpbGVzLzQyNDcwLWZsb3dlcl9mcm9tX215X2dhcmRlbl92Mi5zdmciOiB7Im1pbiI6IDAuMTQw
ODE4ODM0MzA0ODA5NTcsICJtYXgiOiAwLjE1MTczMDA2MDU3NzM5MjU4LCAibWVkaWFuIjogMC4x
NDIxNzE4NTk3NDEyMTA5NCwgInN0ZGV2IjogMC4wMTYxNTI1NTg0OTU5OTU5NzgsICJhdmciOiAw
LjE0MzkxMDg1OTc2MDQ4NTIzLCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3ZnL2ZpbGVzL2Rl
YjlmcmFjMS5zdmciOiB7Im1pbiI6IDAuMTgzMzg3OTk0NzY2MjM1MzUsICJtYXgiOiAwLjI5NTk4
NDk4MzQ0NDIxMzg3LCAibWVkaWFuIjogMC4xODc4ODAwMzkyMTUwODc5LCAic3RkZXYiOiAwLjE0
NTk1MDcwNTczOTY1MzM1LCAiYXZnIjogMC4yMDE4Nzk3ODk5NTQ3Mzc2MywgInVuaXQiOiAibXMi
fSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy80NDA1Ny1kcm9wcyBvbiBhIGJsYWRlLnN2ZyI6IHsibWlu
IjogMC4zMTcwNjkwNTM2NDk5MDIzNCwgIm1heCI6IDAuMzMwODczOTY2MjE3MDQxLCAibWVkaWFu
IjogMC4zMTg0MjQyMjQ4NTM1MTU2LCAic3RkZXYiOiAwLjAxOTUzMDY4OTc3OTgzODY1MiwgImF2
ZyI6IDAuMzIwOTc4MTE0NDc5NDY2NTYsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmls
ZXMvY293Ym95LnN2ZyI6IHsibWluIjogMC4yNzk1MDY5MjE3NjgxODg1LCAibWF4IjogMC4yOTYy
MzI5Mzg3NjY0Nzk1LCAibWVkaWFuIjogMC4yODM1NjQ4MDU5ODQ0OTcwNywgInN0ZGV2IjogMC4w
MjA3Mzc4MjkwODU3OTMyNDcsICJhdmciOiAwLjI4NDk2NzA1ODU4MzMwOTgsICJ1bml0IjogIm1z
In0sICJQYWdlTG9hZC9zdmcvZmlsZXMvY2FjdXRzXzAxLnN2ZyI6IHsibWluIjogMC4xODIxMzM5
MTMwNDAxNjExMywgIm1heCI6IDAuMjA5MDk3MTQ2OTg3OTE1MDQsICJtZWRpYW4iOiAwLjE4NzA5
MzAxOTQ4NTQ3MzYzLCAic3RkZXYiOiAwLjAyOTE2NDcyODExMzAyODYwOCwgImF2ZyI6IDAuMTg5
MDAzMjQxNjg5NTgxNjMsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvY3Jhd2Zp
c2gyX2dhbnNvbi5zdmciOiB7Im1pbiI6IDAuMTA0NTgzMDI0OTc4NjM3NywgIm1heCI6IDAuMTE3
MzU4OTIyOTU4Mzc0MDIsICJtZWRpYW4iOiAwLjEwNjM2MDE5NzA2NzI2MDc0LCAic3RkZXYiOiAw
LjAxNjEyMjg1NTQwNDkwOTg4MiwgImF2ZyI6IDAuMTA3Njg0OTg4NzI0NTU3OTgsICJ1bml0Ijog
Im1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvNDI0NTAtdW5kZXIgdGhlIHNlZS5zdmciOiB7Im1p
biI6IDAuMjc1MjkzMTExODAxMTQ3NDYsICJtYXgiOiAwLjMwOTc2Nzk2MTUwMjA3NTIsICJtZWRp
YW4iOiAwLjI3ODc1OTAwMjY4NTU0NjksICJzdGRldiI6IDAuMDQ3NTU0ODE5NDAyNzk2NzY2LCAi
YXZnIjogMC4yODQ0ODEzMTIwOTkyNTYwMywgInVuaXQiOiAibXMifX19LCB7InRpbWVzdGFtcCI6
IDEzNDgwMjUyNDksICJkZXNjcmlwdGlvbiI6ICJhZnRlciIsICJyZXN1bHRzIjogeyJQYWdlTG9h
ZC9zdmcvZmlsZXMvYmFtYm9vXzAxLnN2ZyI6IHsibWluIjogMjk2LjExODkwNCwgIm1heCI6IDMx
OC45NTU2ODMsICJtZWRpYW4iOiAzMDAuODI3ODcyLCAic3RkZXYiOiAyNi40ODMyMjUyMDAwODM4
NTQsICJhdmciOiAzMDIuOTMxNzkyNTc4OTQ3MzUsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9z
dmcvZmlsZXMvd29ybGQtaXNvLnN2ZyI6IHsibWluIjogMTUzLjk5MTU2MiwgIm1heCI6IDE2Mi42
MzM4MzEsICJtZWRpYW4iOiAxNTYuMzU4NjQ5LCAic3RkZXYiOiA3LjgwOTQ2MTQ2NzQwMzUxMiwg
ImF2ZyI6IDE1Ni42NzQ2NTg2ODQyMTA1MywgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9m
aWxlcy93b3JsZGN1cC5zdmciOiB7Im1pbiI6IDQxMy43OTYxOTQsICJtYXgiOiA0NjUuODU3ODEy
LCAibWVkaWFuIjogNDI2LjEwMjk4OCwgInN0ZGV2IjogNzAuMzM5MTAwNzgzODE1MjMsICJhdmci
OiA0MzIuNDA1MDYwNzg5NDczNzQsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMv
SGFydmV5X1JheW5lci5zdmciOiB7Im1pbiI6IDUzLjEyODMyMiwgIm1heCI6IDY0LjEwODAzLCAi
bWVkaWFuIjogNTMuOTY1NzA2LCAic3RkZXYiOiAxMC4yMDU4NTY1Njg1MzYzOTksICJhdmciOiA1
NC42MzY4Nzc3ODk0NzM2NywgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy9mb29k
X2xlaWZfbG9kYWhsXzAxLnN2ZyI6IHsibWluIjogODguNzQ4OTIyLCAibWF4IjogMTAzLjE1NjMz
OSwgIm1lZGlhbiI6IDkwLjYwNTUwNiwgInN0ZGV2IjogMTMuMzI0MTYzMTA3MjY1MjksICJhdmci
OiA5MS4wNzQ3NjU4OTQ3MzY4NiwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2Zy9maWxlcy80
MjQ3MC1mbG93ZXJfZnJvbV9teV9nYXJkZW5fdjIuc3ZnIjogeyJtaW4iOiAxMzAuODY4NTIsICJt
YXgiOiAxNDAuNTM1MTY1LCAibWVkaWFuIjogMTMxLjk0MjksICJzdGRldiI6IDEzLjI5NjQ4MTIx
MjMxMTY0LCAiYXZnIjogMTMzLjA1MzIzMjg5NDczNjg4LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxv
YWQvc3ZnL2ZpbGVzL2RlYjlmcmFjMS5zdmciOiB7Im1pbiI6IDE1MC43MzQxNzEsICJtYXgiOiAy
NDcuNDA4NTA1LCAibWVkaWFuIjogMTUzLjMzMjg5NCwgInN0ZGV2IjogMTM5LjY5NDMyMTI0NDQ1
NTgsICJhdmciOiAxNjYuODQ3MjA0ODQyMTA1MjQsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9z
dmcvZmlsZXMvNDQwNTctZHJvcHMgb24gYSBibGFkZS5zdmciOiB7Im1pbiI6IDMwOS4xNjc2NzYs
ICJtYXgiOiAzMjAuNzgyODk2LCAibWVkaWFuIjogMzEwLjE5NjkzNSwgInN0ZGV2IjogMTEuNzE5
NzUxNzQwNDk2OTgsICJhdmciOiAzMTEuMTcwNDE1MDUyNjMxNiwgInVuaXQiOiAibXMifSwgIlBh
Z2VMb2FkL3N2Zy9maWxlcy9jb3dib3kuc3ZnIjogeyJtaW4iOiAxMDIuOTQ5MTU0LCAibWF4Ijog
MTE3LjQwNzQ1LCAibWVkaWFuIjogMTA0LjYyMDkzOSwgInN0ZGV2IjogMTguNDYxMDk2ODU4NTU1
ODczLCAiYXZnIjogMTA2Ljc1MjkxODY4NDIxMDU0LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQv
c3ZnL2ZpbGVzL2NhY3V0c18wMS5zdmciOiB7Im1pbiI6IDEyMy43ODkxNTIsICJtYXgiOiAxMzku
ODc3MDk0LCAibWVkaWFuIjogMTI1Ljk5MDI2MywgInN0ZGV2IjogMjEuOTYzMDY0MTE2NTU3NjI1
LCAiYXZnIjogMTI3LjQ2OTM0MTk5OTk5OTk4LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3Zn
L2ZpbGVzL2NyYXdmaXNoMl9nYW5zb24uc3ZnIjogeyJtaW4iOiA4OC4wNDU5MzIsICJtYXgiOiAx
MDIuMTIxMjA4LCAibWVkaWFuIjogOTAuMTQ3NTQ4LCAic3RkZXYiOiAxNi4zMjcxMDE4NTk3MjMz
NDYsICJhdmciOiA5MS43NDcxNzY4OTQ3MzY4NSwgInVuaXQiOiAibXMifSwgIlBhZ2VMb2FkL3N2
Zy9maWxlcy80MjQ1MC11bmRlciB0aGUgc2VlLnN2ZyI6IHsibWluIjogMjUwLjcwNDcwNSwgIm1h
eCI6IDI4NS4wNDAzOTQsICJtZWRpYW4iOiAyNTIuNDgxNzc4LCAic3RkZXYiOiA0Ny45OTk4NjIy
MjA5Njk2MjUsICJhdmciOiAyNTcuMDMzMjY2Nzg5NDczNywgInVuaXQiOiAibXMifX0sICJicmFu
Y2giOiAid2Via2l0LXRydW5rIiwgIndlYmtpdC1yZXZpc2lvbiI6ICIxMjg5MTgifSwgeyJ0aW1l
c3RhbXAiOiAxMzQ4MDI1NDA0LCAid2Via2l0LXJldmlzaW9uIjogIjEyODkxOCIsICJyZXN1bHRz
IjogeyJQYWdlTG9hZC9zdmcvZmlsZXMvYmFtYm9vXzAxLnN2ZyI6IHsibWluIjogMjkyLjM2OTMw
NywgIm1heCI6IDMwOC45MDc5MzksICJtZWRpYW4iOiAyOTkuMTg3MTkzLCAic3RkZXYiOiAyMy4y
Mjg0NTU4NDUxMzQxNiwgImF2ZyI6IDI5OS40MDgzODAwNTI2MzE2LCAidW5pdCI6ICJtcyJ9LCAi
UGFnZUxvYWQvc3ZnL2ZpbGVzL3dvcmxkLWlzby5zdmciOiB7Im1pbiI6IDE1NC4yOTYwNywgIm1h
eCI6IDE1Ny42OTIzNzgsICJtZWRpYW4iOiAxNTUuNjAwNjM0LCAic3RkZXYiOiA0LjY1MTUzNDY5
MzE3NDk2MSwgImF2ZyI6IDE1NS42OTgyNDksICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcv
ZmlsZXMvd29ybGRjdXAuc3ZnIjogeyJtaW4iOiA0MTMuNzQwOTA3LCAibWF4IjogNDY1LjY3Mjc1
NiwgIm1lZGlhbiI6IDQxOC42OTQyODQsICJzdGRldiI6IDU5LjM3ODEzMzA0ODA4MTc4LCAiYXZn
IjogNDI0LjAzOTA1NTg0MjEwNTI2LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3ZnL2ZpbGVz
L0hhcnZleV9SYXluZXIuc3ZnIjogeyJtaW4iOiA1My4xNjUwNzksICJtYXgiOiA2Ni4zNzc3ODUs
ICJtZWRpYW4iOiA1My43NTQyODEsICJzdGRldiI6IDEyLjYzOTUwODY2MjI0MTkyNiwgImF2ZyI6
IDU0Ljg2NjY2MzQyMTA1MjYzLCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3ZnL2ZpbGVzL2Zv
b2RfbGVpZl9sb2RhaGxfMDEuc3ZnIjogeyJtaW4iOiA4OC4yNzIxNzYsICJtYXgiOiAxMDMuMjYw
MzcsICJtZWRpYW4iOiA4OS40MjU5NDgsICJzdGRldiI6IDEzLjU3MTYzMDM3ODYzMDA2MywgImF2
ZyI6IDkwLjIyNDQ3NzMxNTc4OTQ2LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxvYWQvc3ZnL2ZpbGVz
L2RlYjlmcmFjMS5zdmciOiB7Im1pbiI6IDE1MS4yNTkwNDEsICJtYXgiOiAyNDcuNzk0Mjc3LCAi
bWVkaWFuIjogMTU0LjQxODAzNSwgInN0ZGV2IjogMTQwLjIzMDcyNjg5MDY3NjUsICJhdmciOiAx
NjcuNjgyMzI2MjEwNTI2MzMsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9zdmcvZmlsZXMvNDI0
NzAtZmxvd2VyX2Zyb21fbXlfZ2FyZGVuX3YyLnN2ZyI6IHsibWluIjogMTMxLjU5MDA0NiwgIm1h
eCI6IDE0MC45NDIxODgsICJtZWRpYW4iOiAxMzIuNDkzNTg4LCAic3RkZXYiOiAxMi40NjY5NTg4
ODEwMjQyMTIsICJhdmciOiAxMzMuNTc2Mjc4NDczNjg0MiwgInVuaXQiOiAibXMifSwgIlBhZ2VM
b2FkL3N2Zy9maWxlcy9jYWN1dHNfMDEuc3ZnIjogeyJtaW4iOiAxMjQuNDQ2MjA2LCAibWF4Ijog
MTQwLjA0MzY0MywgIm1lZGlhbiI6IDEyNi4xMDg3ODIsICJzdGRldiI6IDIxLjM0MDU4ODkxMzQy
MzE2LCAiYXZnIjogMTI4LjM0MTU4MDUyNjMxNTgsICJ1bml0IjogIm1zIn0sICJQYWdlTG9hZC9z
dmcvZmlsZXMvNDQwNTctZHJvcHMgb24gYSBibGFkZS5zdmciOiB7Im1pbiI6IDMwOC43MDc3NTEs
ICJtYXgiOiAzMjIuMjYxMjgzLCAibWVkaWFuIjogMzExLjY2MTM2NiwgInN0ZGV2IjogMTUuMzU5
ODQ5MzYwMDAzOTk5LCAiYXZnIjogMzEyLjc2NTg5OTM2ODQyMTA2LCAidW5pdCI6ICJtcyJ9LCAi
UGFnZUxvYWQvc3ZnL2ZpbGVzL2Nvd2JveS5zdmciOiB7Im1pbiI6IDEwMy43OTk2NjksICJtYXgi
OiAxMTcuNjEzNTMxLCAibWVkaWFuIjogMTA2Ljg3NjA2NCwgInN0ZGV2IjogMTcuMjg3NjE5NDU0
MzU5OTk0LCAiYXZnIjogMTA3LjU3NzIzNzg5NDczNjg0LCAidW5pdCI6ICJtcyJ9LCAiUGFnZUxv
YWQvc3ZnL2ZpbGVzL2NyYXdmaXNoMl9nYW5zb24uc3ZnIjogeyJtaW4iOiA4Ny44MDg1NDcsICJt
YXgiOiAxMDAuOTMxODU1LCAibWVkaWFuIjogODkuMTc3NzkzLCAic3RkZXYiOiAxMy4zOTI0ODAw
MDAzOTcwNzMsICJhdmciOiA5MC40MTU0NTAzNjg0MjEwNiwgInVuaXQiOiAibXMifSwgIlBhZ2VM
b2FkL3N2Zy9maWxlcy80MjQ1MC11bmRlciB0aGUgc2VlLnN2ZyI6IHsibWluIjogMjQ5Ljc1MTMx
MiwgIm1heCI6IDI4My45NjI4MTYsICJtZWRpYW4iOiAyNTEuNTk1MTM5LCAic3RkZXYiOiA0OC41
Nzg0MzA5ODk0NDQxNjUsICJhdmciOiAyNTYuNTE5NTgzNjg0MjEwNTUsICJ1bml0IjogIm1zIn19
LCAiYnJhbmNoIjogIndlYmtpdC10cnVuayIsICJkZXNjcmlwdGlvbiI6ICJhZnRlciJ9XTwvc2Ny
aXB0Pgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoKc2VjdGlvbiB7CiAgICBiYWNrZ3JvdW5kOiB3
aGl0ZTsKICAgIHBhZGRpbmc6IDEwcHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCnNlY3Rp
b24gaDEgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxZW07Cn0KCnNl
Y3Rpb24gLnRvb2x0aXAgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1hbGlnbjog
Y2VudGVyOwogICAgYmFja2dyb3VuZDogI2ZmY2M2NjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsK
ICAgIHBhZGRpbmc6IDBweCA1cHg7Cn0KCmJvZHkgewogICAgcGFkZGluZzogMHB4OwogICAgbWFy
Z2luOiAwcHg7CiAgICBmb250LWZhbWlseTogc2Fucy1zZXJpZjsKfQoKdGFibGUgewogICAgYmFj
a2dyb3VuZDogd2hpdGU7CiAgICB3aWR0aDogMTAwJTsKfQoKdGFibGUsIHRkLCB0aCB7CiAgICBi
b3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgcGFkZGluZzogNXB4Owp9Cgp0ci5ldmVuIHsK
ICAgIGJhY2tncm91bmQ6ICNmNmY2ZjY7Cn0KCnRhYmxlIHRkIHsKICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7Cn0KCnRoLCB0ZCB7CiAgICBjdXJzb3I6
IHBvaW50ZXI7CiAgICBjdXJzb3I6IGhhbmQ7Cn0KCnRoIHsKICAgIGJhY2tncm91bmQ6ICNlNmVl
ZWU7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxl
ZnQgYm90dG9tLCBmcm9tKHJnYigyNDQsIDI0NCwgMjQ0KSksIHRvKHJnYigyMTcsIDIxNywgMjE3
KSkpOwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKdGg6YWZ0ZXIgewogICAgY29udGVu
dDogJyBcMjVCOCc7Cn0KCnRoLmhlYWRlclNvcnRVcDphZnRlciB7CiAgICBjb250ZW50OiAnIFwy
NUJFJzsKfQoKdGguaGVhZGVyU29ydERvd246YWZ0ZXIgewogICAgY29udGVudDogJyBcMjVCNCc7
Cn0KCnRkLmNvbXBhcmlzb24sIHRkLnJlc3VsdCB7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKfQoK
dGQuYmV0dGVyIHsKICAgIGNvbG9yOiAjNmM2Owp9Cgp0ZC53b3JzZSB7CiAgICBjb2xvcjogI2M2
NjsKfQoKLmNoZWNrYm94IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGJhY2tncm91
bmQ6ICNlZWU7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgbGVmdCBi
b3R0b20sIGxlZnQgdG9wLCBmcm9tKHJnYigyMjAsIDIyMCwgMjIwKSksIHRvKHJnYigyMDAsIDIw
MCwgMjAwKSkpOwogICAgYm9yZGVyOiBpbnNldCAxcHggI2RkZDsKICAgIGJvcmRlci1yYWRpdXM6
IDVweDsKICAgIG1hcmdpbjogMTBweDsKICAgIGZvbnQtc2l6ZTogc21hbGw7CiAgICBjdXJzb3I6
IHBvaW50ZXI7CiAgICBjdXJzb3I6IGhhbmQ7CiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25l
OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5jaGVja2JveCBzcGFuIHsKICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxMDAlOwogICAgcGFkZGluZzogNXB4IDhw
eDsKICAgIGJvcmRlcjogb3V0c2V0IDFweCB0cmFuc3BhcmVudDsKfQoKLmNoZWNrYm94IC5jaGVj
a2VkIHsKICAgIGJhY2tncm91bmQ6ICNlNmVlZWU7CiAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdy
YWRpZW50KGxpbmVhciwgbGVmdCB0b3AsIGxlZnQgYm90dG9tLCBmcm9tKHJnYigyNTUsIDI1NSwg
MjU1KSksIHRvKHJnYigyMzUsIDIzNSwgMjM1KSkpOwogICAgYm9yZGVyOiBvdXRzZXQgMXB4ICNl
ZWU7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7Cn0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cjxk
aXYgc3R5bGU9InBhZGRpbmc6IDAgMTBweDsiPgpSZXN1bHQgPHNwYW4gaWQ9InRpbWUtbWVtb3J5
IiBjbGFzcz0iY2hlY2tib3giPjxzcGFuIGNsYXNzPSJjaGVja2VkIj5UaW1lPC9zcGFuPjxzcGFu
Pk1lbW9yeTwvc3Bhbj48L3NwYW4+ClJlZmVyZW5jZSA8c3BhbiBpZD0icmVmZXJlbmNlIiBjbGFz
cz0iY2hlY2tib3giPjwvc3Bhbj4KPC9kaXY+CjxzY3JpcHQ+CgokKGRvY3VtZW50KS5yZWFkeShm
dW5jdGlvbiAoKSB7CiAgICAkKCcuY2hlY2tib3gnKS5lYWNoKGZ1bmN0aW9uIChpbmRleCwgY2hl
Y2tib3gpIHsKICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJlbignc3BhbicpLmNsaWNrKGZ1bmN0
aW9uIChldmVudCkgewogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnY2hlY2tlZCcp
KQogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAkKGNoZWNrYm94KS5jaGlsZHJl
bignc3BhbicpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7CiAgICAgICAgICAgICQodGhpcykuYWRk
Q2xhc3MoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJChjaGVja2JveCkudHJpZ2dlcignY2hhbmdl
JywgJCh0aGlzKSk7CiAgICAgICAgfSk7CiAgICB9KTsKfSkKCjwvc2NyaXB0Pgo8dGFibGUgaWQ9
ImNvbnRhaW5lciI+PC90YWJsZT4KPHNjcmlwdD4KCmZ1bmN0aW9uIFRlc3RSZXN1bHQoYXNzb2Np
YXRlZFRlc3QsIHJlc3VsdCwgYXNzb2NpYXRlZFJ1bikgewogICAgdmFyIHNjYWxlID0gYXNzb2Np
YXRlZFJ1bi5pbmRleCA8IDIgPyAxMDAwIDogMTsKICAgIHRoaXMudW5pdCA9IGZ1bmN0aW9uICgp
IHsgcmV0dXJuIHJlc3VsdC51bml0OyB9CiAgICB0aGlzLnRlc3QgPSBmdW5jdGlvbiAoKSB7IHJl
dHVybiBhc3NvY2lhdGVkVGVzdDsgfQogICAgdGhpcy51bnNjYWxlZE1lYW4gPSBmdW5jdGlvbiAo
KSB7IHJldHVybiByZXN1bHQuYXZnICogc2NhbGU7IH0KICAgIHRoaXMubWVhbiA9IGZ1bmN0aW9u
ICgpIHsgcmV0dXJuIGFzc29jaWF0ZWRUZXN0LnNjYWxpbmdGYWN0b3IoKSAqIHNjYWxlICogcmVz
dWx0LmF2ZzsgfQogICAgdGhpcy5taW4gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBhc3NvY2lhdGVk
VGVzdC5zY2FsaW5nRmFjdG9yKCkgKiBzY2FsZSAqIHJlc3VsdC5taW47IH0KICAgIHRoaXMubWF4
ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gYXNzb2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICog
c2NhbGUgKiByZXN1bHQubWF4OyB9CiAgICB0aGlzLnN0ZGV2ID0gZnVuY3Rpb24gKCkgeyByZXR1
cm4gYXNzb2NpYXRlZFRlc3Quc2NhbGluZ0ZhY3RvcigpICogc2NhbGUgKiByZXN1bHQuc3RkZXY7
IH0KICAgIHRoaXMuc3RkZXZSYXRpbyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlc3VsdC5zdGRl
diAvIHJlc3VsdC5hdmc7IH0KICAgIHRoaXMucGVyY2VudERpZmZlcmVuY2UgPSBmdW5jdGlvbihv
dGhlcikgeyByZXR1cm4gKG90aGVyLm1lYW4oKSAtIHRoaXMubWVhbigpKSAvIHRoaXMubWVhbigp
OyB9CiAgICB0aGlzLmlzU3RhdGlzdGljYWxseVNpZ25pZmljYW50ID0gZnVuY3Rpb24gKG90aGVy
KSB7CiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLmFicyhvdGhlci5tZWFuKCkgLSB0aGlzLm1lYW4o
KSk7CiAgICAgICAgcmV0dXJuIGRpZmYgPiB0aGlzLnN0ZGV2KCkgJiYgZGlmZiA+IG90aGVyLnN0
ZGV2KCk7CiAgICB9CiAgICB0aGlzLnJ1biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFzc29jaWF0
ZWRSdW47IH0KfQoKZnVuY3Rpb24gVGVzdFJ1bihlbnRyeSkgewogICAgdGhpcy5kZXNjcmlwdGlv
biA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGVudHJ5WydkZXNjcmlwdGlvbiddOyB9CiAgICB0aGlz
LndlYmtpdFJldmlzaW9uID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZW50cnlbJ3dlYmtpdC1yZXZp
c2lvbiddOyB9CiAgICB0aGlzLmxhYmVsID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBsYWJl
bCA9ICdyJyArIHRoaXMud2Via2l0UmV2aXNpb24oKTsKICAgICAgICBpZiAodGhpcy5kZXNjcmlw
dGlvbigpKQogICAgICAgICAgICBsYWJlbCArPSAnICZkYXNoOyAnICsgdGhpcy5kZXNjcmlwdGlv
bigpOwogICAgICAgIHJldHVybiBsYWJlbDsKICAgIH0KfQoKZnVuY3Rpb24gUGVyZlRlc3QobmFt
ZSkgewogICAgdmFyIHRlc3RSZXN1bHRzID0gW107CiAgICB2YXIgY2FjaGVkVW5pdCA9IG51bGw7
CiAgICB2YXIgY2FjaGVkU2NhbGluZ0ZhY3RvciA9IG51bGw7CgogICAgLy8gV2UgY2FuJ3QgZG8g
dGhpcyBpbiBUZXN0UmVzdWx0IGJlY2F1c2UgYWxsIHJlc3VsdHMgZm9yIGVhY2ggdGVzdCBuZWVk
IHRvIHNoYXJlIHRoZSBzYW1lIHVuaXQgYW5kIHRoZSBzYW1lIHNjYWxpbmcgZmFjdG9yLgogICAg
ZnVuY3Rpb24gY29tcHV0ZVNjYWxpbmdGYWN0b3JJZk5lZWRlZCgpIHsKICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGJlIGFkanVzdGluZyB1bml0cyBvbiBldmVyeSB0ZXN0IHJlc3VsdC4K
ICAgICAgICAvLyBXZSBjYW4gb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCB0ZXN0LgogICAgICAg
IGlmICghdGVzdFJlc3VsdHMubGVuZ3RoIHx8IGNhY2hlZFVuaXQpCiAgICAgICAgICAgIHJldHVy
bjsKCiAgICAgICAgdmFyIHVuaXQgPSB0ZXN0UmVzdWx0c1swXS51bml0KCk7IC8vIEZJWE1FOiBX
ZSBzaG91bGQgdmVyaWZ5IHRoYXQgYWxsIHJlc3VsdHMgaGF2ZSB0aGUgc2FtZSB1bml0LgogICAg
ICAgIHZhciBtZWFuID0gdGVzdFJlc3VsdHNbMF0udW5zY2FsZWRNZWFuKCk7IC8vIEZJWE1FOiBX
ZSBzaG91bGQgbG9vayBhdCBhbGwgdmFsdWVzLgogICAgICAgIHZhciBraWxvID0gdW5pdCA9PSAn
Ynl0ZXMnID8gMTAyNCA6IDEwMDA7CiAgICAgICAgaWYgKG1lYW4gPiAxMCAqIGtpbG8gKiBraWxv
ICYmIHVuaXQgIT0gJ21zJykgewogICAgICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gMSAv
IGtpbG8gLyBraWxvOwogICAgICAgICAgICBjYWNoZWRVbml0ID0gJ00gJyArIHVuaXQ7CiAgICAg
ICAgfSBlbHNlIGlmIChtZWFuID4gMTAgKiBraWxvKSB7CiAgICAgICAgICAgIGNhY2hlZFNjYWxp
bmdGYWN0b3IgPSAxIC8ga2lsbzsKICAgICAgICAgICAgY2FjaGVkVW5pdCA9IHVuaXQgPT0gJ21z
JyA/ICdzJyA6ICgnSyAnICsgdW5pdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY2Fj
aGVkU2NhbGluZ0ZhY3RvciA9IDE7CiAgICAgICAgICAgIGNhY2hlZFVuaXQgPSB1bml0OwogICAg
ICAgIH0KICAgIH0KCiAgICB0aGlzLm5hbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBuYW1lOyB9
CiAgICB0aGlzLmlzTWVtb3J5VGVzdCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hbWUuaW5kZXhP
ZignOicpID49IDA7IH0KICAgIHRoaXMuYWRkUmVzdWx0ID0gZnVuY3Rpb24gKG5ld1Jlc3VsdCkg
ewogICAgICAgIHRlc3RSZXN1bHRzLnB1c2gobmV3UmVzdWx0KTsKICAgICAgICBjYWNoZWRVbml0
ID0gbnVsbDsKICAgICAgICBjYWNoZWRTY2FsaW5nRmFjdG9yID0gbnVsbDsKICAgIH0KICAgIHRo
aXMucmVzdWx0cyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRlc3RSZXN1bHRzOyB9CiAgICB0aGlz
LnNjYWxpbmdGYWN0b3IgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb21wdXRlU2NhbGluZ0ZhY3Rv
cklmTmVlZGVkKCk7CiAgICAgICAgcmV0dXJuIGNhY2hlZFNjYWxpbmdGYWN0b3I7CiAgICB9CiAg
ICB0aGlzLnVuaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgY29tcHV0ZVNjYWxpbmdGYWN0b3JJ
Zk5lZWRlZCgpOwogICAgICAgIHJldHVybiBjYWNoZWRVbml0OwogICAgfQogICAgdGhpcy5zbWFs
bGVySXNCZXR0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnVuaXQoKSA9PSAnbXMnIHx8
IHRoaXMudW5pdCgpID09ICdieXRlcyc7IH0KfQoKdmFyIHBsb3RDb2xvciA9ICdyZ2IoMjMwLDUw
LDUwKSc7CnZhciBzdWJwb2ludHNQbG90T3B0aW9ucyA9IHsKICAgIGxpbmVzOiB7c2hvdzp0cnVl
LCBsaW5lV2lkdGg6IDB9LAogICAgY29sb3I6IHBsb3RDb2xvciwKICAgIHBvaW50czoge3Nob3c6
IHRydWUsIHJhZGl1czogMX0sCiAgICBiYXJzOiB7c2hvdzogZmFsc2V9fTsKCnZhciBtYWluUGxv
dE9wdGlvbnMgPSB7CiAgICB4YXhpczogewogICAgICAgIG1pbjogLTAuNSwKICAgICAgICB0aWNr
U2l6ZTogMSwKICAgIH0sCiAgICBjcm9zc2hhaXI6IHsgbW9kZTogJ3knIH0sCiAgICBzZXJpZXM6
IHsgc2hhZG93U2l6ZTogMCB9LAogICAgYmFyczoge3Nob3c6IHRydWUsIGFsaWduOiAnY2VudGVy
JywgYmFyV2lkdGg6IDAuNX0sCiAgICBsaW5lczogeyBzaG93OiBmYWxzZSB9LAogICAgcG9pbnRz
OiB7IHNob3c6IHRydWUgfSwKICAgIGdyaWQ6IHsKICAgICAgICBib3JkZXJXaWR0aDogMiwKICAg
ICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgICBob3ZlcmFibGU6IHRydWUsCiAg
ICAgICAgYXV0b0hpZ2hsaWdodDogZmFsc2UsCiAgICB9Cn07CgpmdW5jdGlvbiBjcmVhdGVQbG90
KGNvbnRhaW5lciwgdGVzdCkgewogICAgdmFyIHNlY3Rpb24gPSAkKCc8c2VjdGlvbj48ZGl2IGNs
YXNzPSJwbG90Ij48L2Rpdj4nCiAgICAgICAgKyAnPHNwYW4gY2xhc3M9InRvb2x0aXAiPjwvc3Bh
bj48L3NlY3Rpb24+Jyk7CiAgICBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpLmNzcyh7J3dpZHRo
JzogMTAwICogdGVzdC5yZXN1bHRzKCkubGVuZ3RoICsgJ3B4JywgJ2hlaWdodCc6ICczMDBweCd9
KTsKICAgICQoY29udGFpbmVyKS5hcHBlbmQoc2VjdGlvbik7CgogICAgdmFyIHBsb3RDb250YWlu
ZXIgPSBzZWN0aW9uLmNoaWxkcmVuKCcucGxvdCcpOwogICAgdmFyIG1pbklzWmVybyA9IHRydWU7
CiAgICBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIsIG1pbklzWmVybyk7CgogICAgdmFy
IHRvb2x0aXAgPSBzZWN0aW9uLmNoaWxkcmVuKCcudG9vbHRpcCcpOwogICAgcGxvdENvbnRhaW5l
ci5iaW5kKCdwbG90aG92ZXInLCBmdW5jdGlvbiAoZXZlbnQsIHBvc2l0aW9uLCBpdGVtKSB7CiAg
ICAgICAgaWYgKGl0ZW0pIHsKICAgICAgICAgICAgdmFyIHBvc3RmaXggPSBpdGVtLnNlcmllcy5p
ZCA/ICcgKCcgKyBpdGVtLnNlcmllcy5pZCArICcpJyA6ICcnOwogICAgICAgICAgICB0b29sdGlw
Lmh0bWwoaXRlbS5kYXRhcG9pbnRbMV0udG9QcmVjaXNpb24oNCkgKyBwb3N0Zml4KTsKICAgICAg
ICAgICAgdmFyIHNlY3Rpb25PZmZzZXQgPSAkKHNlY3Rpb24pLm9mZnNldCgpOwogICAgICAgICAg
ICB0b29sdGlwLmNzcyh7bGVmdDogaXRlbS5wYWdlWCAtIHNlY3Rpb25PZmZzZXQubGVmdCAtIHRv
b2x0aXAub3V0ZXJXaWR0aCgpIC8gMiwgdG9wOiBpdGVtLnBhZ2VZIC0gc2VjdGlvbk9mZnNldC50
b3AgKyAxMH0pOwogICAgICAgICAgICB0b29sdGlwLmZhZGVJbigyMDApOwogICAgICAgIH0gZWxz
ZQogICAgICAgICAgICB0b29sdGlwLmhpZGUoKTsKICAgIH0pOwogICAgcGxvdENvbnRhaW5lci5t
b3VzZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgdG9vbHRpcC5oaWRlKCk7CiAgICB9KTsKICAg
IHBsb3RDb250YWluZXIuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICBtaW5Jc1plcm8gPSAhbWluSXNaZXJvOwogICAgICAgIGF0
dGFjaFBsb3QodGVzdCwgcGxvdENvbnRhaW5lciwgbWluSXNaZXJvKTsKICAgIH0pOwoKICAgIHJl
dHVybiBzZWN0aW9uOwp9CgpmdW5jdGlvbiBhdHRhY2hQbG90KHRlc3QsIHBsb3RDb250YWluZXIs
IG1pbklzWmVybykgewogICAgdmFyIHJlc3VsdHMgPSB0ZXN0LnJlc3VsdHMoKTsKCiAgICBmdW5j
dGlvbiBtYWtlU3VicG9pbnRzKGlkLCBjYWxsYmFjaykgeyByZXR1cm4gJC5leHRlbmQodHJ1ZSwg
e30sIHN1YnBvaW50c1Bsb3RPcHRpb25zLCB7aWQ6IGlkLCBkYXRhOiByZXN1bHRzLm1hcChjYWxs
YmFjayl9KTsgfQogICAgdmFyIHBsb3REYXRhID0gWwogICAgICAgIG1ha2VTdWJwb2ludHMoJ21p
bicsIGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5taW4o
KV07IH0pLAogICAgICAgIG1ha2VTdWJwb2ludHMoJ21heCcsIGZ1bmN0aW9uIChyZXN1bHQsIGlu
ZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5tYXgoKV07IH0pLAogICAgICAgIG1ha2VTdWJw
b2ludHMoJy0mIzk2MzsnLCBmdW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gW2luZGV4
LCByZXN1bHQubWVhbigpIC0gcmVzdWx0LnN0ZGV2KCldOyB9KSwKICAgICAgICBtYWtlU3VicG9p
bnRzKCcrJiM5NjM7JywgZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIFtpbmRleCwg
cmVzdWx0Lm1lYW4oKSArIHJlc3VsdC5zdGRldigpXTsgfSksCiAgICAgICAge2RhdGE6IHJlc3Vs
dHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3VsdC5t
ZWFuKCldOyB9KSwgY29sb3I6IHBsb3RDb2xvcn1dOwoKICAgIHZhciBjdXJyZW50UGxvdE9wdGlv
bnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgbWFpblBsb3RPcHRpb25zLCB7eWF4aXM6IHsKICAgICAg
ICBtaW46IG1pbklzWmVybyA/IDAgOiBNYXRoLm1pbi5hcHBseShNYXRoLCByZXN1bHRzLm1hcChm
dW5jdGlvbiAocmVzdWx0LCBpbmRleCkgeyByZXR1cm4gcmVzdWx0Lm1pbigpOyB9KSkgKiAwLjk4
LAogICAgICAgIG1heDogTWF0aC5tYXguYXBwbHkoTWF0aCwgcmVzdWx0cy5tYXAoZnVuY3Rpb24g
KHJlc3VsdCwgaW5kZXgpIHsgcmV0dXJuIHJlc3VsdC5tYXgoKTsgfSkpICogKG1pbklzWmVybyA/
IDEuMSA6IDEuMDEpfX0pOwoKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy5tYXggPSByZXN1
bHRzLmxlbmd0aCAtIDAuNTsKICAgIGN1cnJlbnRQbG90T3B0aW9ucy54YXhpcy50aWNrcyA9IHJl
c3VsdHMubWFwKGZ1bmN0aW9uIChyZXN1bHQsIGluZGV4KSB7IHJldHVybiBbaW5kZXgsIHJlc3Vs
dC5ydW4oKS5sYWJlbCgpXTsgfSk7CgogICAgJC5wbG90KHBsb3RDb250YWluZXIsIHBsb3REYXRh
LCBjdXJyZW50UGxvdE9wdGlvbnMpOwp9CgpmdW5jdGlvbiB0b0ZpeGVkV2lkdGhQcmVjaXNpb24o
dmFsdWUpIHsKICAgIHZhciBkZWNpbWFsID0gdmFsdWUudG9GaXhlZCgyKTsKICAgIHJldHVybiBk
ZWNpbWFsOwp9CgpmdW5jdGlvbiBmb3JtYXRQZXJjZW50YWdlKGZyYWN0aW9uKSB7CiAgICB2YXIg
cGVyY2VudGFnZSA9IGZyYWN0aW9uICogMTAwOwogICAgcmV0dXJuIChmcmFjdGlvbiAqIDEwMCku
dG9GaXhlZCgyKSArICclJzsKfQoKZnVuY3Rpb24gY3JlYXRlVGFibGUodGVzdHMsIHJ1bnMsIHNo
b3VsZElnbm9yZU1lbW9yeSwgcmVmZXJlbmNlSW5kZXgpIHsKICAgICQoJyNjb250YWluZXInKS5o
dG1sKCc8dGhlYWQ+PHRyPjx0aD5UZXN0PC90aD48dGg+VW5pdDwvdGg+JyArIHJ1bnMubWFwKGZ1
bmN0aW9uIChydW4sIGluZGV4KSB7CiAgICAgICAgcmV0dXJuICc8dGggY29sc3Bhbj0iJyArIChp
bmRleCA9PSByZWZlcmVuY2VJbmRleCA/IDIgOiAzKSArICciIGNsYXNzPSJ7c29ydGVyOiBcJ2Nv
bXBhcmlzb25cJ30iPicgKyBydW4ubGFiZWwoKSArICc8L3RoPic7CiAgICB9KS5yZWR1Y2UoZnVu
Y3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1cm4gbWFya3VwICsgY2VsbDsgfSwgJycpICsgJzwv
dHI+PC9oZWFkPjx0Ym9keT48L3Rib2R5PicpOwoKICAgIHZhciB0ZXN0TmFtZXMgPSBbXTsKICAg
IGZvciAodGVzdE5hbWUgaW4gdGVzdHMpCiAgICAgICAgdGVzdE5hbWVzLnB1c2godGVzdE5hbWUp
OwoKICAgIHRlc3ROYW1lcy5zb3J0KCkubWFwKGZ1bmN0aW9uICh0ZXN0TmFtZSkgewogICAgICAg
IHZhciB0ZXN0ID0gdGVzdHNbdGVzdE5hbWVdOwogICAgICAgIGlmICh0ZXN0LmlzTWVtb3J5VGVz
dCgpICE9IHNob3VsZElnbm9yZU1lbW9yeSkKICAgICAgICAgICAgY3JlYXRlVGFibGVSb3codGVz
dCwgdGVzdC5yZXN1bHRzKClbcmVmZXJlbmNlSW5kZXhdKTsKICAgIH0pOwoKICAgICQoJyNjb250
YWluZXInKS50YWJsZXNvcnRlcih7d2lkZ2V0czogWyd6ZWJyYSddfSk7Cn0KCmZ1bmN0aW9uIGNy
ZWF0ZVRhYmxlUm93KHRlc3QsIHJlZmVyZW5jZVJlc3VsdCkgewogICAgdmFyIHRhYmxlUm93ID0g
JCgnPHRyPjx0ZCBjbGFzcz0idGVzdCI+JyArIHRlc3QubmFtZSgpICsgJzwvdGQ+PHRkIGNsYXNz
PSJ1bml0Ij4nICsgdGVzdC51bml0KCkgKyAnPC90ZD48L3RyPicpOwoKICAgIHRhYmxlUm93LmFw
cGVuZCh0ZXN0LnJlc3VsdHMoKS5tYXAoZnVuY3Rpb24gKHJlc3VsdCwgaW5kZXgpIHsKICAgICAg
ICB2YXIgc2Vjb25kQ2VsbCA9ICcnOwogICAgICAgIHZhciBoaWRkZW5WYWx1ZSA9ICcnOwogICAg
ICAgIGlmIChyZXN1bHQgIT09IHJlZmVyZW5jZVJlc3VsdCkgewogICAgICAgICAgICB2YXIgcGVy
Y2VudERpZmZlcmVuY2UgPSByZWZlcmVuY2VSZXN1bHQucGVyY2VudERpZmZlcmVuY2UocmVzdWx0
KTsKICAgICAgICAgICAgdmFyIGJldHRlciA9IHRlc3Quc21hbGxlcklzQmV0dGVyKCkgPyBwZXJj
ZW50RGlmZmVyZW5jZSA8IDAgOiBwZXJjZW50RGlmZmVyZW5jZSA+IDA7CiAgICAgICAgICAgIHZh
ciBjb21wYXJpc29uID0gJyc7CiAgICAgICAgICAgIHZhciBjbGFzc05hbWUgPSAnY29tcGFyaXNv
bic7CiAgICAgICAgICAgIGlmIChyZWZlcmVuY2VSZXN1bHQuaXNTdGF0aXN0aWNhbGx5U2lnbmlm
aWNhbnQocmVzdWx0KSkgewogICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGZvcm1hdFBlcmNl
bnRhZ2UoTWF0aC5hYnMocGVyY2VudERpZmZlcmVuY2UpKSArIChiZXR0ZXIgPyAnIEJldHRlcicg
OiAnIFdvcnNlJm5ic3A7Jyk7CiAgICAgICAgICAgICAgICBjbGFzc05hbWUgKz0gYmV0dGVyID8g
JyBiZXR0ZXInIDogJyB3b3JzZSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGlkZGVuVmFs
dWUgPSAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6IG5vbmUiPnwnICsgY29tcGFyaXNvbiArICc8L3Nw
YW4+JzsKICAgICAgICAgICAgc2Vjb25kQ2VsbCA9ICc8L3RkPjx0ZCBjbGFzcz0iJyArIGNsYXNz
TmFtZSArICciPicgKyBjb21wYXJpc29uOwogICAgICAgIH0KCiAgICAgICAgLy8gVGFibGVzb3J0
ZXIgZG9lc24ndCBrbm93IGFib3V0IHRoZSBzZWNvbmQgY2VsbCBzbyBwdXQgdGhlIGNvbXBhcmlz
b24gaW4gdGhlIGludmlzaWJsZSBlbGVtZW50LgogICAgICAgIHJldHVybiAnPHRkIGNsYXNzPSJy
ZXN1bHQiPicgKyB0b0ZpeGVkV2lkdGhQcmVjaXNpb24ocmVzdWx0Lm1lYW4oKSkgKyBoaWRkZW5W
YWx1ZSArICc8L3RkPjx0ZCBjbGFzcz0ic3RkZXYiPiZwbHVzbW47ICcKICAgICAgICAgICAgKyBm
b3JtYXRQZXJjZW50YWdlKHJlc3VsdC5zdGRldlJhdGlvKCkpICsgc2Vjb25kQ2VsbCArICc8L3Rk
Pic7CiAgICB9KS5yZWR1Y2UoZnVuY3Rpb24gKG1hcmt1cCwgY2VsbCkgeyByZXR1cm4gbWFya3Vw
ICsgY2VsbDsgfSwgJycpKTsKCiAgICAkKCcjY29udGFpbmVyJykuY2hpbGRyZW4oJ3Rib2R5Jyku
bGFzdCgpLmFwcGVuZCh0YWJsZVJvdyk7CgogICAgdGFibGVSb3cuY2xpY2soZnVuY3Rpb24gKGV2
ZW50KSB7CiAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPSB0YWJsZVJvd1swXSAmJiBldmVudC50
YXJnZXQucGFyZW50Tm9kZSAhPSB0YWJsZVJvd1swXSkKICAgICAgICAgICAgcmV0dXJuOwoKICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICB2YXIgZmlyc3RDZWxsID0gdGFi
bGVSb3cuY2hpbGRyZW4oJ3RkJykuZmlyc3QoKTsKICAgICAgICBpZiAoZmlyc3RDZWxsLmNoaWxk
cmVuKCdzZWN0aW9uJykubGVuZ3RoKSB7CiAgICAgICAgICAgIGZpcnN0Q2VsbC5jaGlsZHJlbign
c2VjdGlvbicpLnJlbW92ZSgpOwogICAgICAgICAgICB0YWJsZVJvdy5jaGlsZHJlbigndGQnKS5j
c3MoeydwYWRkaW5nLWJvdHRvbSc6ICcnfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
dmFyIHBsb3QgPSBjcmVhdGVQbG90KGZpcnN0Q2VsbCwgdGVzdCk7CiAgICAgICAgICAgIHBsb3Qu
Y3NzKHsncG9zaXRpb24nOiAnYWJzb2x1dGUnLCAnei1pbmRleCc6IDJ9KTsKICAgICAgICAgICAg
dmFyIG9mZnNldCA9IHRhYmxlUm93Lm9mZnNldCgpOwogICAgICAgICAgICBvZmZzZXQubGVmdCAr
PSAxOwogICAgICAgICAgICBvZmZzZXQudG9wICs9IHRhYmxlUm93Lm91dGVySGVpZ2h0KCk7CiAg
ICAgICAgICAgIHBsb3Qub2Zmc2V0KG9mZnNldCk7CiAgICAgICAgICAgIHRhYmxlUm93LmNoaWxk
cmVuKCd0ZCcpLmNzcyh7J3BhZGRpbmctYm90dG9tJzogcGxvdC5vdXRlckhlaWdodCgpICsgNX0p
OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSk7Cn0KCmZ1bmN0aW9uIGlu
aXQoKSB7CiAgICAkLnRhYmxlc29ydGVyLmFkZFBhcnNlcih7CiAgICAgICAgaWQ6ICdjb21wYXJp
c29uJywKICAgICAgICBpczogZnVuY3Rpb24ocykgewogICAgICAgICAgICByZXR1cm4gcy5pbmRl
eE9mKCd8JykgPj0gMDsKICAgICAgICB9LAogICAgICAgIGZvcm1hdDogZnVuY3Rpb24ocykgewog
ICAgICAgICAgICB2YXIgcGFyc2VkID0gcGFyc2VGbG9hdChzLnN1YnN0cmluZyhzLmluZGV4T2Yo
J3wnKSArIDEpKTsKICAgICAgICAgICAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyAwIDogcGFyc2Vk
OwogICAgICAgIH0sCiAgICAgICAgdHlwZTogJ251bWVyaWMnLAogICAgfSk7CgogICAgdmFyIHJ1
bnMgPSBbXTsKICAgIHZhciB0ZXN0cyA9IHt9OwogICAgJC5lYWNoKEpTT04ucGFyc2UoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2pzb24nKS50ZXh0Q29udGVudCksIGZ1bmN0aW9uIChpbmRleCwg
ZW50cnkpIHsKICAgICAgICB2YXIgcnVuID0gbmV3IFRlc3RSdW4oZW50cnkpOwogICAgICAgIHJ1
bi5pbmRleCA9IGluZGV4OwogICAgICAgIHJ1bnMucHVzaChydW4pOwogICAgICAgICQuZWFjaChl
bnRyeS5yZXN1bHRzLCBmdW5jdGlvbiAodGVzdCwgcmVzdWx0KSB7CiAgICAgICAgICAgIGlmICgh
dGVzdHNbdGVzdF0pCiAgICAgICAgICAgICAgICB0ZXN0c1t0ZXN0XSA9IG5ldyBQZXJmVGVzdCh0
ZXN0KTsKICAgICAgICAgICAgdGVzdHNbdGVzdF0uYWRkUmVzdWx0KG5ldyBUZXN0UmVzdWx0KHRl
c3RzW3Rlc3RdLCByZXN1bHQsIHJ1bikpOwogICAgICAgIH0pOwogICAgfSk7CgogICAgdmFyIHNo
b3VsZElnbm9yZU1lbW9yeT0gdHJ1ZTsKICAgIHZhciByZWZlcmVuY2VJbmRleCA9IDA7CiAgICBj
cmVhdGVUYWJsZSh0ZXN0cywgcnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRl
eCk7CgogICAgJCgnI3RpbWUtbWVtb3J5JykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKGV2ZW50
LCBjaGVja2VkRWxlbWVudCkgewogICAgICAgIHNob3VsZElnbm9yZU1lbW9yeSA9IGNoZWNrZWRF
bGVtZW50LnRleHRDb250ZW50ID09ICdUaW1lJzsKICAgICAgICBjcmVhdGVUYWJsZSh0ZXN0cywg
cnVucywgc2hvdWxkSWdub3JlTWVtb3J5LCByZWZlcmVuY2VJbmRleCk7CiAgICB9KTsKCiAgICBy
dW5zLm1hcChmdW5jdGlvbiAocnVuLCBpbmRleCkgewogICAgICAgICQoJyNyZWZlcmVuY2UnKS5h
cHBlbmQoJzxzcGFuIHZhbHVlPSInICsgaW5kZXggKyAnIicgKyAoaW5kZXggPT0gcmVmZXJlbmNl
SW5kZXggPyAnIGNsYXNzPSJjaGVja2VkIicgOiAnJykgKyAnPicgKyBydW4ubGFiZWwoKSArICc8
L3NwYW4+Jyk7CiAgICB9KQoKICAgICQoJyNyZWZlcmVuY2UnKS5iaW5kKCdjaGFuZ2UnLCBmdW5j
dGlvbiAoZXZlbnQsIGNoZWNrZWRFbGVtZW50KSB7CiAgICAgICAgcmVmZXJlbmNlSW5kZXggPSBw
YXJzZUludChjaGVja2VkRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJykpOwogICAgICAgIGNy
ZWF0ZVRhYmxlKHRlc3RzLCBydW5zLCBzaG91bGRJZ25vcmVNZW1vcnksIHJlZmVyZW5jZUluZGV4
KTsKICAgIH0pOwp9Cgppbml0KCk7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164654</attachid>
            <date>2012-09-18 21:02:54 -0700</date>
            <delta_ts>2012-11-03 23:16:00 -0700</delta_ts>
            <desc>Change used to generate the output</desc>
            <filename>bug-97063-20120918210218.patch</filename>
            <type>text/plain</type>
            <size>15319</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyODk2MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQyIEBACisyMDEyLTA5LTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFBhZ2UgbG9hZGluZyBwZXJmb3JtYW5jZSB0ZXN0cyBzaG91bGQgbWVhc3VyZSB0
aW1lIGluIEMrKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTcwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBNYWMgYW5kIENocm9taXVtIHBvcnRzJyBEdW1wUmVuZGVyVHJlZSBhYmlsaXR5IHRv
IG1lYXN1cmUgcGFnZSBsb2FkIHRpbWUsCisgICAgICAgIGFuZCBtYWRlIHdlYmtpdHB5IGNvZGUg
cGFyc2UgaXQuIFRoZSBuZXdseSBtZWFzdXJlZCB0aW1lIGlzIHJlcG9ydGVkIGFzIER1bXBUaW1l
CisgICAgICAgIGhlYWRlciBsaWtlIENvbnRlbnQtVHlwZSBhbmQgQ29udGVudC1MZW5ndGguCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0RXZlbnRQcmludGVyLmNwcDoK
KyAgICAgICAgKFRlc3RFdmVudFByaW50ZXI6OmhhbmRsZUR1bXBUaW1lSGVhZGVyKTogQWRkZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdEV2ZW50UHJpbnRlci5oOgor
ICAgICAgICAoVGVzdEV2ZW50UHJpbnRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6cnVuRmlsZVRlc3QpOiBT
dG9yZXMgdGhlIHN0YXJ0IHRpbWUuCisgICAgICAgIChUZXN0U2hlbGw6OmR1bXApOiBDYWxscyBo
YW5kbGVEdW1wVGltZUhlYWRlciB0byByZXBvcnQgdGhlIHBhZ2UgbG9hZCB0aW1lLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAoVGVzdFNo
ZWxsKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChkdW1wKTogUmVwb3J0cyB0aGUgcGFnZSBsb2FkIHRpbWUuCisgICAgICAgIChydW5U
ZXN0KTogU3RvcmVzIHRoZSBzdGFydCB0aW1lLgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13
ZWJraXQtdGVzdHM6CisgICAgICAgIChyZWFkRnJvbUR1bXBUb29sV2l0aFRpbWVyKTogSWdub3Jl
cyB0aGUgRHVtcFRpbWUgaGVhZGVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZHJpdmVyLnB5OgorICAgICAgICAoRHJpdmVyT3V0cHV0Ll9faW5pdF9fKTog
QWRkZWQgZHVtcF90aW1lLgorICAgICAgICAoRHJpdmVyLl9faW5pdF9fKTogSW5pdGlhbGl6ZXMg
X2R1bXBfdGltZS4KKyAgICAgICAgKERyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChEcml2ZXIu
X3JlYWRfZmlyc3RfYmxvY2spOiBTdG9yZXMgZHVtcF90aW1lLgorICAgICAgICAoRHJpdmVyLl9w
cm9jZXNzX3N0ZG91dF9saW5lKTogUHJvY2VzcyBEdW1wVGltZSBoYWRlci4KKyAgICAgICAgKENv
bnRlbnRCbG9jay5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAgICAgICAgKFBhZ2VMb2FkaW5nUGVyZlRlc3QucnVu
KTogVXNlcyBkdW1wX3RpbWUgd2hlbiBhdmFpbGFibGUuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weToKKyAgICAgICAgKFRl
c3RQYWdlTG9hZGluZ1BlcmZUZXN0Lk1vY2tEcml2ZXIuX19pbml0X18pOgorICAgICAgICAoVGVz
dFBhZ2VMb2FkaW5nUGVyZlRlc3QuTW9ja0RyaXZlci5ydW5fdGVzdCk6CisgICAgICAgIChUZXN0
UGFnZUxvYWRpbmdQZXJmVGVzdC50ZXN0X3J1bl93aXRob3V0X2R1bXBfdGltZSk6CisKIDIwMTIt
MDktMTggIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFRp
dGxlIHN0cmluZyBzaG91bGQgYmUgY2hhbmdlZCB3aGVuIGRvY3VtZW50LnRpdGxlIGlzIHNldCB0
byAnJy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RF
dmVudFByaW50ZXIuY3BwCShyZXZpc2lvbiAxMjg5MTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0RXZlbnRQcmludGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiAr
NTcsMTEgQEAgdm9pZCBUZXN0RXZlbnRQcmludGVyOjpoYW5kbGVUaW1lZE91dCgpIAogICAgIGZw
cmludGYoc3Rkb3V0LCAiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8g
YmUgY2FsbGVkXG4iKTsKIH0KIAordm9pZCBUZXN0RXZlbnRQcmludGVyOjpoYW5kbGVEdW1wVGlt
ZUhlYWRlcihkb3VibGUgdGltZSkgY29uc3QKK3sKKyAgICBwcmludGYoIkR1bXBUaW1lOiAlZlxu
IiwgdGltZSAqIDEwMDApOworfQorCiB2b2lkIFRlc3RFdmVudFByaW50ZXI6OmhhbmRsZVRleHRI
ZWFkZXIoKSBjb25zdAogewogICAgIHByaW50ZigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4i
KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RFdmVudFByaW50ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0RXZlbnRQ
cmludGVyLmgJKHJldmlzaW9uIDEyODkxOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RFdmVudFByaW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBw
dWJsaWM6CiAgICAgflRlc3RFdmVudFByaW50ZXIoKTsKICAgICB2b2lkIGhhbmRsZVRlc3RIZWFk
ZXIoY29uc3QgY2hhciogdXJsKSBjb25zdDsKICAgICB2b2lkIGhhbmRsZVRpbWVkT3V0KCkgY29u
c3Q7CisgICAgdm9pZCBoYW5kbGVEdW1wVGltZUhlYWRlcihkb3VibGUpIGNvbnN0OwogICAgIHZv
aWQgaGFuZGxlVGV4dEhlYWRlcigpIGNvbnN0OwogICAgIHZvaWQgaGFuZGxlVGV4dEZvb3Rlcigp
IGNvbnN0OwogICAgIHZvaWQgaGFuZGxlQXVkaW8oY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBzaXpl
X3QgYXVkaW9TaXplKSBjb25zdDsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcAkocmV2aXNpb24gMTI4OTE4KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBA
QAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjY3R5cGU+CiAjaW5jbHVkZSA8dmVj
dG9yPgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NRDUuaD4K
ICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KIApAQCAtMjY4LDYgKzI2OSw4IEBAIHZvaWQg
VGVzdFNoZWxsOjpydW5GaWxlVGVzdChjb25zdCBUZXN0UGEKIAogICAgIGlmIChtX2R1bXBXaGVu
RmluaXNoZWQpCiAgICAgICAgIG1fcHJpbnRlci5oYW5kbGVUZXN0SGVhZGVyKHRlc3RVcmwuY19z
dHIoKSk7CisKKyAgICBtX3Rlc3RTdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKICAgICBsb2FkVVJMKG1fcGFyYW1zLnRlc3RVcmwpOwogCiAgICAgbV90ZXN0SXNQcmVw
YXJpbmcgPSBmYWxzZTsKQEAgLTU0OCw2ICs1NTEsOCBAQCBzdHJpbmcgVGVzdFNoZWxsOjpkdW1w
QWxsQmFja0ZvcndhcmRMaXN0CiAKIHZvaWQgVGVzdFNoZWxsOjpkdW1wKCkKIHsKKyAgICBkb3Vi
bGUgdGVzdEVuZFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKwogICAgIFdl
YlNjcmlwdENvbnRyb2xsZXI6OmZsdXNoQ29uc29sZU1lc3NhZ2VzKCk7CiAKICAgICAvLyBEdW1w
IHRoZSByZXF1ZXN0ZWQgcmVwcmVzZW50YXRpb24uCkBAIC01NzQsNiArNTc5LDcgQEAgdm9pZCBU
ZXN0U2hlbGw6OmR1bXAoKQogICAgIGlmIChtX3BhcmFtcy5kdW1wVHJlZSkgewogICAgICAgICBk
dW1wZWRBbnl0aGluZyA9IHRydWU7CiAgICAgICAgIG1fcHJpbnRlci5oYW5kbGVUZXh0SGVhZGVy
KCk7CisgICAgICAgIG1fcHJpbnRlci5oYW5kbGVEdW1wVGltZUhlYWRlcih0ZXN0RW5kVGltZSAt
IG1fdGVzdFN0YXJ0VGltZSk7CiAgICAgICAgIC8vIFRleHQgb3V0cHV0OiB0aGUgdGVzdCBwYWdl
IGNhbiByZXF1ZXN0IGRpZmZlcmVudCB0eXBlcyBvZiBvdXRwdXQKICAgICAgICAgLy8gd2hpY2gg
d2UgaGFuZGxlIGhlcmUuCiAgICAgICAgIGlmICghc2hvdWxkRHVtcEFzVGV4dCkgewpJbmRleDog
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgJKHJldmlzaW9uIDEyODkx
OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAgcHJpdmF0ZToKIAogICAgIFRlc3RQYXJhbXMgbV9w
YXJhbXM7CiAgICAgYm9vbCBtX2R1bXBQaXhlbHNGb3JDdXJyZW50VGVzdDsKKyAgICBkb3VibGUg
bV90ZXN0U3RhcnRUaW1lOwogICAgIGludCBtX3RpbWVvdXQ7IC8vIHRpbWVvdXQgdmFsdWUgaW4g
bWlsbGlzZWNvbmQKICAgICBib29sIG1fYWxsb3dFeHRlcm5hbFBhZ2VzOwogICAgIGJvb2wgbV9h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yVmlkZW9FbmFibGVkOwpJbmRleDogVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gMTI4OTE4KQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04Nyw2ICs4Nyw3IEBACiAjaW1wb3J0IDxnZXRvcHQuaD4KICNpbXBvcnQgPG9iamMvb2JqYy1y
dW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2ltcG9ydCA8d3RmL0N1cnJl
bnRUaW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFk
aW5nLmg+CiAjaW1wb3J0IDx3dGYvT2JqY1J1bnRpbWVFeHRyYXMuaD4KQEAgLTEyMSw2ICsxMjIs
NyBAQCB2b2xhdGlsZSBib29sIGRvbmU7CiAKIE5hdmlnYXRpb25Db250cm9sbGVyKiBnTmF2aWdh
dGlvbkNvbnRyb2xsZXIgPSAwOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOworZG91
YmxlIGdUZXN0U3RhcnRUaW1lID0gMC4wOwogCiBXZWJGcmFtZSAqbWFpbkZyYW1lID0gMDsKIC8v
IFRoaXMgaXMgdGhlIHRvcG1vc3QgZnJhbWUgdGhhdCBpcyBsb2FkaW5nLCBkdXJpbmcgYSBnaXZl
biBsb2FkLCBvciBuaWwgd2hlbiBubyBsb2FkIGlzIApAQCAtMTEzOCw2ICsxMTQwLDggQEAgYm9v
bCBzaG91bGRTZXRXYWl0VG9EdW1wV2F0Y2hkb2coKQogCiB2b2lkIGR1bXAoKQogeworICAgIGRv
dWJsZSB0ZXN0RW5kVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCiAgICAg
aW52YWxpZGF0ZUFueVByZXZpb3VzV2FpdFRvRHVtcFdhdGNoZG9nKCk7CiAgICAgQVNTRVJUKCFn
VGVzdFJ1bm5lci0+aGFzUGVuZGluZ1dlYk5vdGlmaWNhdGlvbkNsaWNrKCkpOwogCkBAIC0xMTc3
LDYgKzExODEsOCBAQCB2b2lkIGR1bXAoKQogICAgICAgICBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBB
c0F1ZGlvKCkpCiAgICAgICAgICAgICBwcmludGYoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
IGJhc2U2NFxuIik7CiAKKyAgICAgICAgcHJpbnRmKCJEdW1wVGltZTogJWZcbiIsICh0ZXN0RW5k
VGltZSAtIGdUZXN0U3RhcnRUaW1lKSAqIDEwMDApOworCiAgICAgICAgIGlmIChyZXN1bHREYXRh
KSB7CiAgICAgICAgICAgICBmd3JpdGUoW3Jlc3VsdERhdGEgYnl0ZXNdLCAxLCBbcmVzdWx0RGF0
YSBsZW5ndGhdLCBzdGRvdXQpOwogCkBAIC0xMzA2LDcgKzEzMTIsNyBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgfQogCiAgICAgY29uc3Qgc3RyaW5nIHRl
c3RVUkwoW1t1cmwgYWJzb2x1dGVTdHJpbmddIFVURjhTdHJpbmddKTsKLSAgICAKKwogICAgIHJl
c2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZygpOwogCiAgICAgZ1Rlc3RS
dW5uZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUodGVzdFVSTCwgY29tbWFuZC5leHBlY3RlZFBpeGVs
SGFzaCk7CkBAIC0xMzUzLDYgKzEzNTksOCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0
cmluZyYgaW5wdXRMCiAgICAgaWYgKGlnbm9yZVdlYkNvcmVOb2RlTGVha3MpCiAgICAgICAgIFtX
ZWJDb3JlU3RhdGlzdGljcyBzdGFydElnbm9yaW5nV2ViQ29yZU5vZGVMZWFrc107CiAKKyAgICBn
VGVzdFN0YXJ0VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCiAgICAgTlNB
dXRvcmVsZWFzZVBvb2wgKnBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsK
ICAgICBbbWFpbkZyYW1lIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
dXJsXV07CiAgICAgW3Bvb2wgcmVsZWFzZV07CkBAIC0xMzkyLDYgKzE0MDAsOCBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KGNvbnN0IHN0cmluZyYgaW5wdXRMCiAgICAgICAgIGdUZXN0UnVubmVyLT5j
bG9zZVdlYkluc3BlY3RvcigpOwogICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChmYWxzZSk7CiAgICAgfQorICAgIAorICAgIC8vIE1lYXN1cmUgdGltZSBoZXJl
LgogCiAgICAgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nKCk7CiAK
SW5kZXg6IFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gMTI4OTE4KQorKysg
VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMjM3
Niw2ICsyMzc2LDggQEAgc3ViIHJlYWRGcm9tRHVtcFRvb2xXaXRoVGltZXIoKiopCiAgICAgICAg
ICAgICB9IGVsc2lmICghJGhhdmVTZWVuQ29udGVudFRyYW5zZmVyRW5jb2RpbmcgJiYgJGxpbmVJ
biA9fiAvXkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IChcUyspJC8pIHsKICAgICAgICAgICAg
ICAgICAkZW5jb2RpbmcgPSAkMTsKICAgICAgICAgICAgICAgICAkaGF2ZVNlZW5Db250ZW50VHJh
bnNmZXJFbmNvZGluZyA9IDE7CisgICAgICAgICAgICB9IGVsc2lmICgkbGluZUluID1+IC9eRHVt
cFRpbWU6IChcUyspJC8pIHsKKyAgICAgICAgICAgICAgICAjIElnbm9yZWQuIE9ubHkgdXNlZCBp
biBwZXJmb3JtYW5jZSB0ZXN0cy4KICAgICAgICAgICAgIH0gZWxzaWYgKCRsaW5lSW4gPX4gLygu
KikjRU9GJC8pIHsKICAgICAgICAgICAgICAgICBpZiAoJDEgbmUgIiIpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaCBAb3V0cHV0LCAkMTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZHJpdmVyLnB5CShyZXZpc2lvbiAxMjg5MTgpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQkod29y
a2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToK
ICAgICBzdHJpcF9wYXR0ZXJucy5hcHBlbmQoKHJlLmNvbXBpbGUoJ3Njcm9sbGVkIHRvIFswLTld
KyxbMC05XSsnKSwgJ3Njcm9sbGVkJykpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCwg
aW1hZ2UsIGltYWdlX2hhc2gsIGF1ZGlvLCBjcmFzaD1GYWxzZSwKLSAgICAgICAgICAgIHRlc3Rf
dGltZT0wLCB0aW1lb3V0PUZhbHNlLCBlcnJvcj0nJywgY3Jhc2hlZF9wcm9jZXNzX25hbWU9Jz8/
JywKKyAgICAgICAgICAgIHRlc3RfdGltZT0wLCBkdW1wX3RpbWU9Tm9uZSwgdGltZW91dD1GYWxz
ZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPSc/PycsCiAgICAgICAgICAgICBjcmFz
aGVkX3BpZD1Ob25lLCBjcmFzaF9sb2c9Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291
bGQgYmUgcmVuYW1lZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkgZG8uCiAgICAgICAgIHNl
bGYudGV4dCA9IHRleHQKQEAgLTg5LDYgKzg5LDcgQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9iamVj
dCk6CiAgICAgICAgIHNlbGYuY3Jhc2hlZF9waWQgPSBjcmFzaGVkX3BpZAogICAgICAgICBzZWxm
LmNyYXNoX2xvZyA9IGNyYXNoX2xvZwogICAgICAgICBzZWxmLnRlc3RfdGltZSA9IHRlc3RfdGlt
ZQorICAgICAgICBzZWxmLmR1bXBfdGltZSA9IGR1bXBfdGltZQogICAgICAgICBzZWxmLnRpbWVv
dXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXJyb3IgPSBlcnJvciAgIyBzdGRlcnIgb3V0cHV0
CiAKQEAgLTEzOCw2ICsxMzksOCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5lcnJfc2Vlbl9lb2YgPSBGYWxzZQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IE5v
bmUKIAorICAgICAgICBzZWxmLl9kdW1wX3RpbWUgPSBOb25lCisKICAgICBkZWYgX19kZWxfXyhz
ZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKIApAQCAtMTkzLDcgKzE5Niw3IEBAIGNsYXNzIERy
aXZlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICBjcmFzaF9sb2cgKz0gJ1xuc3Rkb3V0
OlxuJXNcbnN0ZGVycjpcbiVzXG4nICUgKHRleHQsIHNlbGYuZXJyb3JfZnJvbV90ZXN0KQogCiAg
ICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQodGV4dCwgaW1hZ2UsIGFjdHVhbF9pbWFnZV9oYXNo
LCBhdWRpbywKLSAgICAgICAgICAgIGNyYXNoPWNyYXNoZWQsIHRlc3RfdGltZT10aW1lLnRpbWUo
KSAtIHRlc3RfYmVnaW5fdGltZSwKKyAgICAgICAgICAgIGNyYXNoPWNyYXNoZWQsIHRlc3RfdGlt
ZT10aW1lLnRpbWUoKSAtIHRlc3RfYmVnaW5fdGltZSwgZHVtcF90aW1lPXNlbGYuX2R1bXBfdGlt
ZSwKICAgICAgICAgICAgIHRpbWVvdXQ9dGltZWRfb3V0LCBlcnJvcj1zZWxmLmVycm9yX2Zyb21f
dGVzdCwKICAgICAgICAgICAgIGNyYXNoZWRfcHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfcHJv
Y2Vzc19uYW1lLAogICAgICAgICAgICAgY3Jhc2hlZF9waWQ9c2VsZi5fY3Jhc2hlZF9waWQsIGNy
YXNoX2xvZz1jcmFzaF9sb2cpCkBAIC0zNjAsNiArMzYzLDggQEAgY2xhc3MgRHJpdmVyKG9iamVj
dCk6CiAgICAgZGVmIF9yZWFkX2ZpcnN0X2Jsb2NrKHNlbGYsIGRlYWRsaW5lKToKICAgICAgICAg
IyByZXR1cm5zICh0ZXh0X2NvbnRlbnQsIGF1ZGlvX2NvbnRlbnQpCiAgICAgICAgIGJsb2NrID0g
c2VsZi5fcmVhZF9ibG9jayhkZWFkbGluZSkKKyAgICAgICAgaWYgYmxvY2suZHVtcF90aW1lOgor
ICAgICAgICAgICAgc2VsZi5fZHVtcF90aW1lID0gZmxvYXQoYmxvY2suZHVtcF90aW1lKQogICAg
ICAgICBpZiBibG9jay5jb250ZW50X3R5cGUgPT0gJ2F1ZGlvL3dhdic6CiAgICAgICAgICAgICBy
ZXR1cm4gKE5vbmUsIGJsb2NrLmRlY29kZWRfY29udGVudCkKICAgICAgICAgcmV0dXJuIChibG9j
ay5kZWNvZGVkX2NvbnRlbnQsIE5vbmUpCkBAIC0zODQsNyArMzg5LDggQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgIGlmIChzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0Nv
bnRlbnQtVHlwZTogJywgJ2NvbnRlbnRfdHlwZScpCiAgICAgICAgICAgICBvciBzZWxmLl9yZWFk
X2hlYWRlcihibG9jaywgbGluZSwgJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcsICdlbmNv
ZGluZycpCiAgICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywgbGluZSwgJ0Nv
bnRlbnQtTGVuZ3RoOiAnLCAnX2NvbnRlbnRfbGVuZ3RoJywgaW50KQotICAgICAgICAgICAgb3Ig
c2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdBY3R1YWxIYXNoOiAnLCAnY29udGVudF9o
YXNoJykpOgorICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIoYmxvY2ssIGxpbmUsICdB
Y3R1YWxIYXNoOiAnLCAnY29udGVudF9oYXNoJykKKyAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRf
aGVhZGVyKGJsb2NrLCBsaW5lLCAnRHVtcFRpbWU6ICcsICdkdW1wX3RpbWUnKSk6CiAgICAgICAg
ICAgICByZXR1cm4KICAgICAgICAgIyBOb3RlLCB3ZSdyZSBub3QgcmVhZGluZyBFeHBlY3RlZEhh
c2g6IGhlcmUsIGJ1dCB3ZSBjb3VsZC4KICAgICAgICAgIyBJZiB0aGUgbGluZSB3YXNuJ3QgYSBo
ZWFkZXIsIHdlIGp1c3QgYXBwZW5kIGl0IHRvIHRoZSBjb250ZW50LgpAQCAtNDUwLDYgKzQ1Niw3
IEBAIGNsYXNzIENvbnRlbnRCbG9jayhvYmplY3QpOgogICAgICAgICAjIENvbnRlbnQgaXMgdHJl
YXRlZCBhcyBiaW5hcnkgZGF0YSBldmVuIHRob3VnaCB0aGUgdGV4dCBvdXRwdXQgaXMgdXN1YWxs
eSBVVEYtOC4KICAgICAgICAgc2VsZi5jb250ZW50ID0gc3RyKCkgICMgRklYTUU6IFNob3VsZCBi
ZSBieXRlYXJyYXkoKSBvbmNlIHdlIHJlcXVpcmUgUHl0aG9uIDIuNi4KICAgICAgICAgc2VsZi5k
ZWNvZGVkX2NvbnRlbnQgPSBOb25lCisgICAgICAgIHNlbGYuZHVtcF90aW1lID0gTm9uZQogCiAg
ICAgZGVmIGRlY29kZV9jb250ZW50KHNlbGYpOgogICAgICAgICBpZiBzZWxmLmVuY29kaW5nID09
ICdiYXNlNjQnIGFuZCBzZWxmLmNvbnRlbnQgaXMgbm90IE5vbmU6CkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkJKHJl
dmlzaW9uIDEyODkxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVz
dHMvcGVyZnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw2ICsxOTksNyBAQCBjbGFzcyBQ
YWdlTG9hZGluZ1BlcmZUZXN0KFBlcmZUZXN0KToKIAogICAgIGRlZiBydW4oc2VsZiwgZHJpdmVy
LCB0aW1lX291dF9tcyk6CiAgICAgICAgIHRlc3RfdGltZXMgPSBbXQorICAgICAgICB1c2VkX2Vz
dGltYXRpb24gPSBGYWxzZQogCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDIwKToKICAgICAg
ICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNlbGYucGF0aF9vcl91cmwo
KSwgdGltZV9vdXRfbXMpCkBAIC0yMDYsNyArMjA3LDEzIEBAIGNsYXNzIFBhZ2VMb2FkaW5nUGVy
ZlRlc3QoUGVyZlRlc3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAg
ICBpZiBpID09IDA6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHRlc3Rf
dGltZXMuYXBwZW5kKG91dHB1dC50ZXN0X3RpbWUgKiAxMDAwKQorICAgICAgICAgICAgaWYgb3V0
cHV0LmR1bXBfdGltZToKKyAgICAgICAgICAgICAgICB0ZXN0X3RpbWVzLmFwcGVuZChvdXRwdXQu
ZHVtcF90aW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBub3QgdXNl
ZF9lc3RpbWF0aW9uOgorICAgICAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIkR1bXBSZW5k
ZXJUcmVlIG9yIFdlYktpdFRlc3RSdW5uZXIgZGlkIG5vdCBwcm92aWRlIER1bXBUaW1lIGhlYWRl
ciB2YWx1ZS4gRXN0aW1hdGluZyB0aGUgcnVudGltZSBpbiBQeXRob24uIikKKyAgICAgICAgICAg
ICAgICB1c2VkX2VzdGltYXRpb24gPSBUcnVlCisgICAgICAgICAgICAgICAgdGVzdF90aW1lcy5h
cHBlbmQob3V0cHV0LnRlc3RfdGltZSAqIDEwMDApCiAKICAgICAgICAgdGVzdF90aW1lcyA9IHNv
cnRlZCh0ZXN0X3RpbWVzKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1h
bmNlX3Rlc3RzL3BlcmZ0ZXN0X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RfdW5pdHRlc3QucHkJKHJldmlz
aW9uIDEyODkxOCkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3RfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1LDEwIEBAIGNs
YXNzIE1haW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogY2xhc3MgVGVzdFBhZ2VMb2FkaW5n
UGVyZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGNsYXNzIE1vY2tEcml2ZXIob2JqZWN0
KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlcyk6CisgICAgICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCB2YWx1ZXMsIG91dHB1dF9kdW1wX3RpbWU9VHJ1ZSk6CiAgICAgICAgICAgICBz
ZWxmLl92YWx1ZXMgPSB2YWx1ZXMKICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAg
ICAgICAgc2VsZi5fb3V0cHV0X2R1bXBfdGltZSA9IG91dHB1dF9kdW1wX3RpbWUKIAogICAgICAg
ICBkZWYgcnVuX3Rlc3Qoc2VsZiwgaW5wdXQsIHN0b3Bfd2hlbl9kb25lKToKICAgICAgICAgICAg
IHZhbHVlID0gc2VsZi5fdmFsdWVzW3NlbGYuX2luZGV4XQpAQCAtMTA1LDcgKzEwNiw5IEBAIGNs
YXNzIFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0KHVuaXR0ZXN0LlQKICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsdWUsIHN0cik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIERyaXZlck91dHB1
dCgnc29tZSBvdXRwdXQnLCBpbWFnZT1Ob25lLCBpbWFnZV9oYXNoPU5vbmUsIGF1ZGlvPU5vbmUs
IGVycm9yPXZhbHVlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
RHJpdmVyT3V0cHV0KCdzb21lIG91dHB1dCcsIGltYWdlPU5vbmUsIGltYWdlX2hhc2g9Tm9uZSwg
YXVkaW89Tm9uZSwgdGVzdF90aW1lPXNlbGYuX3ZhbHVlc1tzZWxmLl9pbmRleCAtIDFdKQorICAg
ICAgICAgICAgICAgIHRpbWUgPSBzZWxmLl92YWx1ZXNbc2VsZi5faW5kZXggLSAxXQorICAgICAg
ICAgICAgICAgIHJldHVybiBEcml2ZXJPdXRwdXQoJ3NvbWUgb3V0cHV0JywgaW1hZ2U9Tm9uZSwg
aW1hZ2VfaGFzaD1Ob25lLCBhdWRpbz1Ob25lLCB0ZXN0X3RpbWU9dGltZSwKKyAgICAgICAgICAg
ICAgICAgICAgZHVtcF90aW1lPXRpbWUgKiAxMDAwIGlmIHNlbGYuX291dHB1dF9kdW1wX3RpbWUg
ZWxzZSBOb25lKQogCiAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgogICAgICAgICB0ZXN0ID0gUGFn
ZUxvYWRpbmdQZXJmVGVzdChOb25lLCAnc29tZS10ZXN0JywgJy9wYXRoL3NvbWUtZGlyL3NvbWUt
dGVzdCcpCkBAIC0xMzQsNiArMTM3LDIzIEBAIGNsYXNzIFRlc3RQYWdlTG9hZGluZ1BlcmZUZXN0
KHVuaXR0ZXN0LlQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywgJ2Vycm9yOiBzb21lLXRlc3Rc
bnNvbWUgZXJyb3JcbicpCiAKKyAgICBkZWYgdGVzdF9ydW5fd2l0aG91dF9kdW1wX3RpbWUoc2Vs
Zik6CisgICAgICAgIHRlc3QgPSBQYWdlTG9hZGluZ1BlcmZUZXN0KE5vbmUsICdzb21lLXRlc3Qn
LCAnL3BhdGgvc29tZS1kaXIvc29tZS10ZXN0JykKKyAgICAgICAgZHJpdmVyID0gVGVzdFBhZ2VM
b2FkaW5nUGVyZlRlc3QuTW9ja0RyaXZlcihbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAs
IDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwXSwgb3V0cHV0X2R1bXBfdGlt
ZT1GYWxzZSkKKyAgICAgICAgb3V0cHV0X2NhcHR1cmUgPSBPdXRwdXRDYXB0dXJlKCkKKyAgICAg
ICAgb3V0cHV0X2NhcHR1cmUuY2FwdHVyZV9vdXRwdXQoKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3QucnVuKGRyaXZlciwgTm9uZSksCisgICAgICAgICAg
ICAgICAgeydzb21lLXRlc3QnOiB7J21heCc6IDIwMDAwLCAnYXZnJzogMTEwMDAuMCwgJ21lZGlh
bic6IDExMDAwLCAnc3RkZXYnOiBtYXRoLnNxcnQoNTcwICogMTAwMCAqIDEwMDApLCAnbWluJzog
MjAwMCwgJ3VuaXQnOiAnbXMnfX0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBhY3R1
YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJl
c3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3Rkb3V0LCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RkZXJyLCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfbG9ncywKKyAgICAgICAgICAgICdEdW1wUmVuZGVyVHJl
ZSBvciBXZWJLaXRUZXN0UnVubmVyIGRpZCBub3QgcHJvdmlkZSBEdW1wVGltZSBoZWFkZXIgdmFs
dWUuIEVzdGltYXRpbmcgdGhlIHJ1bnRpbWUgaW4gUHl0aG9uLlxuJworICAgICAgICAgICAgJ1JF
U1VMVCBzb21lLXRlc3Q9IDExMDAwLjAgbXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSAyMzg3
NC42NzI3NzI2IG1zLCBtaW49IDIwMDAgbXMsIG1heD0gMjAwMDAgbXNcbicpCisKKwogCiBjbGFz
cyBUZXN0UmVwbGF5UGVyZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>