<?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>19229</bug_id>
          
          <creation_ts>2008-05-23 17:20:08 -0700</creation_ts>
          <short_desc>JSProfiler: Find more descriptive information to display than (Anonymous Function)</short_desc>
          <delta_ts>2013-10-04 10:18:09 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin McCullough">kmccullough</reporter>
          <assigned_to name="Kevin McCullough">kmccullough</assigned_to>
          <cc>achicu</cc>
    
    <cc>emacemac7</cc>
    
    <cc>keishi</cc>
    
    <cc>mjs</cc>
    
    <cc>oliver</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tom</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>81363</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2008-05-23 17:20:08 -0700</bug_when>
    <thetext>If a called function is a FunctionImp but doesn&apos;t have a function name, it is displayed in the profiler as &quot;(Anonymous Function)&quot; but this is true for prototypes and many sites use prototypes for the majority of their development.  It would be better if we had a way to display more useful information.

&lt;rdar://problem/5958825&gt; JSProfiler: Find more descriptive information to display than (Anonymous Function)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92813</commentid>
    <comment_count>1</comment_count>
      <attachid>23824</attachid>
    <who name="Kevin McCullough">kmccullough</who>
    <bug_when>2008-09-25 15:21:36 -0700</bug_when>
    <thetext>Created attachment 23824
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92909</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-09-26 05:14:35 -0700</bug_when>
    <thetext>Kevin and I spent some time discussing this today :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127893</commentid>
    <comment_count>3</comment_count>
      <attachid>31781</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-24 05:03:13 -0700</bug_when>
    <thetext>Created attachment 31781
patch

Made AssignDotNode, PropertyNode, AssignResolveNode propagate the identifier to the child node if it is a FuncExprNode. The name is saved on the FuncBodyNode. The JSFunction::calculatedDisplayName will try to use that one only if InternalFunction::calculatedDisplayName() returns an empty String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127894</commentid>
    <comment_count>4</comment_count>
      <attachid>31781</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-24 05:10:19 -0700</bug_when>
    <thetext>Comment on attachment 31781
patch

Have you run performance numbers on this patch? (adding a virtual call to every normal assignment scares me a little) and i am concerned about the increase in size to FunctionBodyNode, although i don&apos;t have a really good solution that would avoid it.  In general the patch looks fine but i&apos;m too tired to do a proper review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127903</commentid>
    <comment_count>5</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-24 06:32:36 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 31781 [review])
&gt; Have you run performance numbers on this patch? (adding a virtual call to every
&gt; normal assignment scares me a little) and i am concerned about the increase in
&gt; size to FunctionBodyNode, although i don&apos;t have a really good solution that
&gt; would avoid it.  In general the patch looks fine but i&apos;m too tired to do a
&gt; proper review.
&gt; 
It should affect the parse only and I don&apos;t know if SunSpider catches the parser speed. I&apos;ve pasted the Sunspider results on http://pastebin.com/m76a3ee44 (&quot;From&quot; is CL @45069 build with release and &quot;To&quot; is @45069 with this patch)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128417</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-26 00:38:38 -0700</bug_when>
    <thetext>Results of WebKitTools/Scripts/run-sunspider on macosx: http://pastebin.com/m21b4f477</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128418</commentid>
    <comment_count>7</comment_count>
      <attachid>31781</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-26 00:48:25 -0700</bug_when>
    <thetext>Comment on attachment 31781
patch

clearing review as i think i misread the perf numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128419</commentid>
    <comment_count>8</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-06-26 00:51:30 -0700</bug_when>
    <thetext>A 1% regression isn&apos;t really something we can land :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128468</commentid>
    <comment_count>9</comment_count>
      <attachid>31925</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-26 03:42:33 -0700</bug_when>
    <thetext>Created attachment 31925
patch with unlikely

Added UNLIKELY to ifs. It seems to improve speed.

(&quot;From&quot; is the unchanged code): http://pastebin.com/m3a17662d</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128470</commentid>
    <comment_count>10</comment_count>
      <attachid>31925</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-26 04:07:36 -0700</bug_when>
    <thetext>Comment on attachment 31925
patch with unlikely

It doesn&apos;t propagate the name to the new body when the functions are recompiled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128477</commentid>
    <comment_count>11</comment_count>
      <attachid>31929</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-06-26 05:35:59 -0700</bug_when>
    <thetext>Created attachment 31929
patch fix

- added setContextualName calls in JavaScriptDebugServer.cpp when it recompiles all the js functions;
- changed getContextualName() to contextualName()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129845</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-07-05 04:14:28 -0700</bug_when>
    <thetext>Are there fresh performance numbers on this? Does it still cause a 1% regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129854</commentid>
    <comment_count>13</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2009-07-05 05:51:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Are there fresh performance numbers on this? Does it still cause a 1%
&gt; regression?

&quot;patch fix&quot; performance result are at http://pastebin.com/m3a17662d.

I&apos;ve just added UNLIKELY in the last patch and it seems faster. I don&apos;t know how it works on Windows. 

At the moment when those script nodes are created the profiler might not be enabled yet, so this change cannot be activated only when the profiler is enabled.  Is there any way to determine if the &quot;Show develop menu in menubar&quot; option is checked, so that the code could bypass the useless virtual call to isFuncExprNode?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132165</commentid>
    <comment_count>14</comment_count>
      <attachid>31929</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-07-15 23:59:54 -0700</bug_when>
    <thetext>Comment on attachment 31929
patch fix

Have you actually tested performance? You can simply use the run-sunspider script on the commandline to test this; &quot;run-sunspider --runs 30&quot; should give you a stable number.  &quot;run-sunspider --runs 30 &gt; baseTimes&quot;, etc for before and after numbers then &quot;sunspider-compare-results baseTimes newTimes&quot; will give you actual performance comparison</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>137921</commentid>
    <comment_count>15</comment_count>
      <attachid>31929</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-08-07 09:23:10 -0700</bug_when>
    <thetext>Comment on attachment 31929
patch fix

Please put this up for review again one performance has been tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936228</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-10-04 10:18:09 -0700</bug_when>
    <thetext>We did this a while ago in another patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23824</attachid>
            <date>2008-09-25 15:21:36 -0700</date>
            <delta_ts>2008-09-25 15:21:36 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>anonymous-function-test.zip</filename>
            <type>application/zip</type>
            <size>2924</size>
            <attacher name="Kevin McCullough">kmccullough</attacher>
            
              <data encoding="base64">UEsDBBQACAAIAMx5OTkAAAAAAAAAAAAAAAAdABAAbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0
bWxVWAwA6Q3cSD8N3Ej1ARQAjVXbbuIwEH3PV4zyQpAgbG8gbQGJfVhp+7IrFWmfTTJp3BoPsh1Y
VPHva+diwqVtkCBkLufMObEm09ysxTyY5shSe9GJ4hsDWiWzUKGmQiWoRxtFGReohga1GT49D30q
ftXhfDqq2nz/PEhIahIY151RuNCwZnIPKc8yVCgN7Nheww4hYRJMzuUbUAaGQLI1go0xSXK/pkJD
VsjEcJJx2H8MmhvQhimztANF/eA9APvxHT/rmsjWuwRumYjCK2kHWFZsmXJfzlYClzkzf4hLo5e0
kIvzLpj5gaI+VMxfkriCg6fqQhO1R1vvf69eMTGW+72U6aq+fW/PAY3lgl6inq/p9R/hAIdqggYm
9unGoYvMzZnM6/A3JfxHEA24U9AEbzvh3n6Ge7sQnGmL4wOfFp4Y2aTuOo1x1xrDxzyePbTac913
ArxvAZ62e9QLFQ+dkB9ayPWJMTmq47E5unmMHzkaSy/Zv267bsi409jjjwwZN4fnMjXphDw5M8TH
G6mnmKcPeXIqDGVaLRp7fwha625Urc1guqJ0DyQFsXQWtjZTOA+Wlgc27AV7Gp7Ylj1XKzZhQujr
ew4yRevWprT6DP4zOrY8al79LAkKjaUIcFt5AI4buAHu1inCStFOo3L/ZZVz0b+4+iX1xj5Ecpak
NkNvwEzgkvWyjgF+oERm8lpRWehFOQ6dUyFSd9lZWIV2i+dcpHbagS0OLiUNoH6z1FoGJaYjrb0t
/bACU74Fbj2kwmwK494tNuKcdg6Xjrv31X9QSwcIhr9zNEICAAC2BgAAUEsDBAoAAAAAACd6OTkA
AAAAAAAAAAAAAAAJABAAX19NQUNPU1gvVVgMAOkN3EjpDdxI9QEUAFBLAwQUAAgACADMeTk5AAAA
AAAAAAAAAAAAKAAQAF9fTUFDT1NYLy5fbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWxVWAwA
6Q3cSD8N3Ej1ARQAY2AVY2dgYmDwTUxW8A9WiFCAApAYAycQGwFxJRCD+KsZiAKOISFBDKlRkVAd
c4CYH00JI0JcPDk/Vy+xoCAnVS8ktaLENS85PyUzLx0oGRripmthbWhsYmRobmlhAgBQSwcIvklq
NF8AAACrAAAAUEsDBAoAAAAAAERzOTkAAAAAAAAAAAAAAAAKABAAcmVzb3VyY2VzL1VYDADoAdxI
8AHcSPUB9QFQSwMEFAAIAAgARHM5OQAAAAAAAAAAAAAAABMAEAByZXNvdXJjZXMvLkRTX1N0b3Jl
VVgMAOkN3EjwAdxI9QH1Ae2YO2rDQBCG/5FVCNJs6cawF3AgN1iM07j1BYIfAQeBgh+9utSB3Mbn
8TmclebHlpENduXgzAejb4V2RqtmHwIgg83sBXAAMqjxhbNkjBYJLRqxxgI55liij/X5Wi2q3B4+
Y06B95P8OVbx2scI43hd1vcFNrE1rdvP+MBqtsink7yYxCq+rpcC+yPbGN/a3P1cOSLDMAzDeGxE
lT3ddxiGYfxBqvnB04Eu1cLnCZ02chzt6UCXamG/hE7pjHa0pwNdqjlpCQ8fwjcLTyjiaE+Hmz7Z
MP4NHZWr1v9XXDz/G4bxwEg6HA8HOBwIWlRrrY/x1ky6sAlI9Gdht9HP04Eu1bYRMIx78QtQSwcI
rHEVMQkBAAAEGAAAUEsDBAoAAAAAACd6OTkAAAAAAAAAAAAAAAATABAAX19NQUNPU1gvcmVzb3Vy
Y2VzL1VYDADpDdxI6Q3cSPUBFABQSwMEFAAIAAgARHM5OQAAAAAAAAAAAAAAAB4AEABfX01BQ09T
WC9yZXNvdXJjZXMvLl8uRFNfU3RvcmVVWAwA6Q3cSPAB3Ej1AfUBY2AVY2dgYmDwTUxW8A9WiFCA
ApAYAycQGwGxAhCD+EEMSMCBATsAAFBLBwjckY+4KAAAAFIAAABQSwMEFAAIAAgA9aO0OAAAAAAA
AAAAAAAAACcAEAByZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanNVWAwA6Q3c
SJ6XM0j1ARQAxVPNasMwDL7nKUROLoPediq5bLSjl66HvICJ1dWQ2pkstwuj7z47sUOb7jpmgsGS
vh8p9sGbhrU1gEbV6Fgs4LuAsBprnG1x2ZE96BbXRonFqrgWxSEjtHFI/KbPaGr8YsFhy+izJDB4
2UMFyjb+hIaXDaFkXLcYT6LsysCXayN2ZxVCNSuvU2JkHwGReCm7Llh+PepWiYy+IbSeO8+38h/I
Sful3ypRjhXZxHi6Y40yv7a8w8vQ8N81W9ZH7SB+gyAqiKny3/uXRLJ/75AkW9qkqBiiiTvPhJA9
JUBKwRM8D3TRnzTW9CfrXWYJVieZONn5rFdwXd39CUY6odKS+snIohjFH8gfrq5bf3rZ1nYTbq/Q
JrSescn4EIOqqpLnCepYEu/HRyFYc4sZOXsxKRnRP1BLBwhjtZhBMwEAAGUDAABQSwMEFAAIAAgA
9aO0OAAAAAAAAAAAAAAAADIAEABfX01BQ09TWC9yZXNvdXJjZXMvLl9wcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qc1VYDADpDdxInpczSPUBFABjYBVjZ2BiYPBNTFbwD1aIUIACkBgDJxAbAXEl
EIP4qxmIAo4hIUEM4VNtoDrmADE/mhJGhLh4cn6uXmJBQU6qXkhqRYlrXnJ+SmZeOlAyNMRN18La
0NjEyNDc0sIEAFBLBwhCo/u3XwAAAKsAAABQSwECFQMUAAgACADMeTk5hr9zNEICAAC2BgAAHQAM
AAAAAAAAAABA7YEAAAAAbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWxVWAgA6Q3cSD8N3EhQ
SwECFQMKAAAAAAAnejk5AAAAAAAAAAAAAAAACQAMAAAAAAAAAABA/UGdAgAAX19NQUNPU1gvVVgI
AOkN3EjpDdxIUEsBAhUDFAAIAAgAzHk5Ob5JajRfAAAAqwAAACgADAAAAAAAAAAAQKSB1AIAAF9f
TUFDT1NYLy5fbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWxVWAgA6Q3cSD8N3EhQSwECFQMK
AAAAAABEczk5AAAAAAAAAAAAAAAACgAMAAAAAAAAAABA7UGZAwAAcmVzb3VyY2VzL1VYCADoAdxI
8AHcSFBLAQIVAxQACAAIAERzOTmscRUxCQEAAAQYAAATAAwAAAAAAAAAAECkgdEDAAByZXNvdXJj
ZXMvLkRTX1N0b3JlVVgIAOkN3EjwAdxIUEsBAhUDCgAAAAAAJ3o5OQAAAAAAAAAAAAAAABMADAAA
AAAAAAAAQP1BKwUAAF9fTUFDT1NYL3Jlc291cmNlcy9VWAgA6Q3cSOkN3EhQSwECFQMUAAgACABE
czk53JGPuCgAAABSAAAAHgAMAAAAAAAAAABApIFsBQAAX19NQUNPU1gvcmVzb3VyY2VzLy5fLkRT
X1N0b3JlVVgIAOkN3EjwAdxIUEsBAhUDFAAIAAgA9aO0OGO1mEEzAQAAZQMAACcADAAAAAAAAAAA
QKSB8AUAAHJlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qc1VYCADpDdxInpcz
SFBLAQIVAxQACAAIAPWjtDhCo/u3XwAAAKsAAAAyAAwAAAAAAAAAAECkgYgHAABfX01BQ09TWC9y
ZXNvdXJjZXMvLl9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qc1VYCADpDdxInpczSFBLBQYA
AAAACQAJAP8CAABXCAAAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31781</attachid>
            <date>2009-06-24 05:03:13 -0700</date>
            <delta_ts>2009-06-26 03:42:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug19229.patch</filename>
            <type>text/plain</type>
            <size>19844</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MDc5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMjQgIEFsZXhhbmRy
dSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjI5CisgICAgICAgIAorICAgICAgICBQcm9wYWdhdGUgaWRlbnRp
ZmllciBmcm9tIEFzc2lnbkRvdE5vZGUsIAorICAgICAgICBQcm9wZXJ0eU5vZGUsIEFzc2lnblJl
c29sdmVOb2RlIHRvIGFub255bW91cyBmdW5jdGlvbiBub2Rlcy4KKworICAgICAgICAqIHBhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5Tm9kZTo6UHJvcGVy
dHlOb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnNl
dENvbnRleHR1YWxOYW1lKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Z2V0Q29u
dGV4dHVhbE5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisKIDIwMDktMDYtMjQgIFpvbHRhbiBIb3J2YXRoICA8aHpvbHRh
bkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dp
YWsuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlz
aW9uIDQ1MDY5KQorKysgSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgeworICAg
ICAgICBpZiAoYXNzaWduLT5pc0Z1bmNFeHByTm9kZSgpKSB7CisgICAgICAgICAgICBGdW5jRXhw
ck5vZGUqIGZ1bmNFeHByTm9kZSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGFzc2lnbik7
CisgICAgICAgICAgICBmdW5jRXhwck5vZGUtPmJvZHkoKS0+c2V0Q29udGV4dHVhbE5hbWUobmFt
ZS51c3RyaW5nKCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaW5saW5lIFByb3BlcnR5TGlz
dE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5vZGUqIG5vZGUpCkBAIC02MDIsNiArNjA2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgeworICAgICAgICBpZiAocmlnaHQtPmlzRnVuY0V4cHJOb2Rl
KCkpIHsKKyAgICAgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHJOb2RlID0gc3RhdGljX2Nh
c3Q8RnVuY0V4cHJOb2RlKj4ocmlnaHQpOworICAgICAgICAgICAgZnVuY0V4cHJOb2RlLT5ib2R5
KCktPnNldENvbnRleHR1YWxOYW1lKGlkZW50LnVzdHJpbmcoKSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQpAQCAtNjM1LDYgKzY0MywyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3JpZ2h0
KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1l
bnRzKQogICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0LT5pc0Z1bmNFeHByTm9kZSgpKSB7CisgICAg
ICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNFeHByTm9kZSA9IHN0YXRpY19jYXN0PEZ1bmNFeHBy
Tm9kZSo+KHJpZ2h0KTsKKworICAgICAgICAgICAgVVN0cmluZyBuYW1lKGlkZW50LnVzdHJpbmco
KSk7CisgICAgICAgICAgICBjb25zdCBVU3RyaW5nIGRvdFN0cmluZygiLiIpOworCisgICAgICAg
ICAgICBFeHByZXNzaW9uTm9kZSogYmFzZUl0ZXJhdG9yID0gYmFzZTsKKyAgICAgICAgICAgIHdo
aWxlIChiYXNlSXRlcmF0b3IgJiYgYmFzZUl0ZXJhdG9yLT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7
CisgICAgICAgICAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3RBY2Nlc3Nvck5vZGUgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihiYXNlSXRlcmF0b3IpOworICAgICAgICAgICAgICAg
IG5hbWUgPSBkb3RBY2Nlc3Nvck5vZGUtPmlkZW50aWZpZXIoKS51c3RyaW5nKCkgKyBkb3RTdHJp
bmcgKyBuYW1lOworCisgICAgICAgICAgICAgICAgYmFzZUl0ZXJhdG9yID0gZG90QWNjZXNzb3JO
b2RlLT5iYXNlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChiYXNlSXRlcmF0
b3IgJiYgYmFzZUl0ZXJhdG9yLT5pc1Jlc29sdmVOb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBS
ZXNvbHZlTm9kZSogY29uc3QgcmVzb2x2ZU5vZGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGJhc2VJdGVyYXRvcik7CisgICAgICAgICAgICAgICAgbmFtZSA9IHJlc29sdmVOb2RlLT5pZGVu
dGlmaWVyKCkudXN0cmluZygpICsgZG90U3RyaW5nICsgbmFtZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZnVuY0V4cHJOb2RlLT5ib2R5KCktPnNldENvbnRleHR1YWxOYW1lKG5hbWUp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFk
TW9kaWZ5RG90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQpJbmRleDogSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgJKHJldmlzaW9uIDQ1MDY5KQorKysgSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNyArMTU4NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIEFTU0VSVChtX2NvZGUpOwogICAgICAgICAgICAgcmV0dXJuICptX2NvZGU7CiAg
ICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgdm9pZCBzZXRDb250ZXh0dWFsTmFtZShjb25z
dCBVU3RyaW5nJiBuYW1lKSB7IG1fY29udGV4dHVhbE5hbWUgPSBuYW1lOyB9CisgICAgICAgIFVT
dHJpbmcgZ2V0Q29udGV4dHVhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHR1YWxOYW1l
OyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0
YSopOwogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CkBAIC0xNTk3LDYgKzE2MDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogICAgICAgICBJZGVudGlmaWVyKiBtX3BhcmFtZXRlcnM7CiAgICAg
ICAgIHNpemVfdCBtX3BhcmFtZXRlckNvdW50OworICAgICAgICBVU3RyaW5nIG1fY29udGV4dHVh
bE5hbWU7CiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fY29kZTsKICAgICB9OwogCkBAIC0x
NjA3LDcgKzE2MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNGdW5jdGlvbiogbWFr
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAKICAgICAgICAgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keS5nZXQoKTsgfQotCisgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIApJbmRleDogSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiA0NTA2OSkKKysrIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw0ICsyMTIsMTQg
QEAgSlNPYmplY3QqIEpTRnVuY3Rpb246OmNvbnN0cnVjdChFeGVjU3RhdAogICAgIHJldHVybiBh
c09iamVjdChyZXN1bHQpOwogfQogCitjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0
ZWREaXNwbGF5TmFtZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgY29uc3QgVVN0
cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVk
RGlzcGxheU5hbWUoZ2xvYmFsRGF0YSk7CisKKyAgICBpZiAobV9ib2R5LmdldCgpICYmIGNhbGN1
bGF0ZWREaXNwbGF5TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBtX2JvZHktPmdldENv
bnRleHR1YWxOYW1lKCk7CisgICAgCisgICAgcmV0dXJuIGNhbGN1bGF0ZWREaXNwbGF5TmFtZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAkocmV2aXNpb24gNDUwNjkpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3RE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsK
KyAgICAgICAgCisgICAgICAgIGNvbnN0IFVTdHJpbmcgY2FsY3VsYXRlZERpc3BsYXlOYW1lKEpT
R2xvYmFsRGF0YSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0NTA3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDI3IEBACisyMDA5LTA2LTI0ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFk
b2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIyOQor
ICAgICAgICAKKyAgICAgICAgUHJvcGFnYXRlIGlkZW50aWZpZXIgZnJvbSBBc3NpZ25Eb3ROb2Rl
LCAKKyAgICAgICAgUHJvcGVydHlOb2RlLCBBc3NpZ25SZXNvbHZlTm9kZSB0byBhbm9ueW1vdXMg
ZnVuY3Rpb24gbm9kZXMuCisgICAgICAgIAorICAgICAgICBVcGRhdGVkIHRoZSBwcm9maWxlciB0
ZXN0cyB0byBmb3JjZSB1c2FnZSBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zLgorCisgICAgICAgICog
ZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMt
ZXZhbC5odG1sOgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2Fs
bHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2J1aWx0
LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sOgorICAgICAgICAqIGZhc3QvcHJvZmls
ZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9wcm9maWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0
bWw6CisgICAgICAgICogZmFzdC9wcm9maWxlci9yZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanM6CisgICAgICAgICh2YXIpOgorICAgICAgICAoKToKKwogMjAwOS0wNi0yNCAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoRGlzYWJsaW5nIGZhaWxpbmcgdGVzdCEpLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDQ1MDY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9h
bm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcs
NyArNyw3IEBAIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwKQogICAgc3RhcnRUZXN0IGFub255
bW91cy1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTEpCiAgICAgICBnZXRFbGVtZW50QnlJZCAo
bm8gZmlsZSkgKGxpbmUgMCkKICAgICAgIGNsaWNrIChubyBmaWxlKSAobGluZSAwKQotICAgICAg
ICAgKGFub255bW91cyBmdW5jdGlvbikgYW5vbnltb3VzLWV2ZW50LWhhbmRsZXIuaHRtbCAobGlu
ZSAxNSkKKyAgICAgICAgIGJ1dHRvbldpdGhBbm9ueW1vdXNIYW5kbGVyLm9uY2xpY2sgYW5vbnlt
b3VzLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxNSkKICAgICAgICAgICAgIGluc2VydE5ld1Rl
eHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTcpCiAgICAgICAgICAgICAg
ICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwKQogICAgICAgICAgICAgICAgY3JlYXRl
VGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDApCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1l
dmFsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBp
dCBpbiB0aAogUHJvZmlsZSB0aXRsZTogQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFsCiBU
aHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMCkKICAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rp
b24tY2FsbHMtZXZhbC5odG1sIChsaW5lIDExKQorICAgICAgbWFrZUZ1bmN0aW9uQW5vbnltb3Vz
IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDEwNCkKICAgICAgIChhbm9ueW1v
dXMgZnVuY3Rpb24pIGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTQp
CiAgICAgICAgICBldmFsIChubyBmaWxlKSAobGluZSAwKQogICAgICAgICAgICAgKHByb2dyYW0p
IChubyBmaWxlKSAobGluZSAxKQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9u
eW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbAkocmV2aXNp
b24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlv
bi1jYWxscy1ldmFsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rp
b24gc3RhcnRUZXN0KCkKIHsKICAgICBjb25zb2xlLnByb2ZpbGUoIkFub255bW91cyBmdW5jdGlv
biBjYWxsZXMgZXZhbCIpOwogCi0gICAgdmFyIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1v
dXNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB2YXJpYWJsZVRoYXRQb2ludHNUb0Fu
QW5vbnltb3VzRnVuY3Rpb24gPSBtYWtlRnVuY3Rpb25Bbm9ueW1vdXMoZnVuY3Rpb24oKSB7CiAg
ICAgICAgIGV2YWwoImluc2VydE5ld1RleHQoKSIpOwotICAgIH0KKyAgICB9KTsKIAogICAgIHZh
cmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbigpOwogICAgIGVuZFRlc3QoKTsK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMt
YW5vbnltb3VzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDQ1MDY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5j
dGlvbi1jYWxscy1hbm9ueW1vdXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYg
KzUsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiBQcm9maWxl
IHRpdGxlOiBCdWlsdC1pbiBmdW5jdGlvbiBjYWxscyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwKQogICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9u
LWNhbGxzLWFub255bW91cy5odG1sIChsaW5lIDExKQorICAgICAgbWFrZUZ1bmN0aW9uQW5vbnlt
b3VzIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDEwNCkKICAgICAgIEFycmF5
IChubyBmaWxlKSAobGluZSAwKQogICAgICAgbWFwIChubyBmaWxlKSAobGluZSAwKQogICAgICAg
ICAgKGFub255bW91cyBmdW5jdGlvbikgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3Vz
Lmh0bWwgKGxpbmUgMTQpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWlu
LWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwJKHJl
dmlzaW9uIDQ1MDY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5j
dGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBA
QCBmdW5jdGlvbiBzdGFydFRlc3QoKQogewogICAgIGNvbnNvbGUucHJvZmlsZSgiQnVpbHQtaW4g
ZnVuY3Rpb24gY2FsbHMgYW4gYW5vbnltb3VzIGZ1bmN0aW9uIik7CiAKLSAgICB2YXIgbXlGdW5j
dGlvbiA9IGZ1bmN0aW9uKGFycmF5RWxlbWVudCkgeworICAgIHZhciBteUZ1bmN0aW9uID0gbWFr
ZUZ1bmN0aW9uQW5vbnltb3VzKGZ1bmN0aW9uKGFycmF5RWxlbWVudCkgewogICAgICAgICByZXR1
cm4gYXJyYXlPcGVyYXRvckZ1bmN0aW9uKGFycmF5RWxlbWVudCk7Ci0gICAgfQorICAgIH0pOwog
CiAgICAgdmFyIG15QXJyYXkgPSBuZXcgQXJyYXkgKDAsIDEsIDIpOwogICAgIG15QXJyYXkubWFw
KG15RnVuY3Rpb24pOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uYW1lLWFub255
bW91cy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rp
b25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDIzOiBhbm9uRnVuYzAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNTogYW5v
bkZ1bmMxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjc6IGFub25GdW5jMgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDMxOiBhbm9uRnVuYzMKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNDogYW5vbkZ1
bmM0CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzc6IGFub25GdW5jNQorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDQyOiBhbm9uRnVuYzYKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA0NTogYW5vbkZ1bmM3
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDk6IGFub25DbGFzczgKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA1MDogYW5vbkZ1bmM5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNTQ6IG5vbkFub255bW91
c0NsYXNzMTAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1NjogYW5vbkZ1bmMxMQorVGhpcyBwYWdl
J3MgSmF2YVNjcmlwdCBjYWxscyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24gZnJvbSBkaWZmZXJlbnQg
Y29udGV4dHMuIAorCitUbyB1c2UgdGhpcyB0ZXN0LCBsb2FkIGl0IGluIHRoZSBicm93c2VyIHRo
ZW4gbG9hZCB0aGUgV2ViSW5zcGVjdG9yIGFuZCBsb29rIGF0IHRoZSBwcm9maWxlLiBCZW5lYXRo
IG9ubG9hZCBhbmQgc3RhcnRUZXN0IGl0IHNob3VsZCBzaG93IHRocmVlIGNoaWxkcmVuLCBhbiBh
bm9ueW1vdXMgZnVuY3Rpb24sIHNjcmlwdCBjb250ZXh0LCBhbmQgdGhlIGVuZFRlc3QgY2FsbC4K
KworUHJvZmlsZSB0aXRsZTogQXMgbWFueSBkaWZmZXJlbnQgd2F5cyB3ZSBjYW4gdGhpbmsgb2Yg
dG8gbmFtZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24uCitUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUg
MCkKKyAgIHN0YXJ0VGVzdCBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSAxMSkK
KyAgICAgIChhbm9ueW1vdXMgZnVuY3Rpb24pIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpz
IChsaW5lIDI5KQorICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcyAobGluZSAxNykKKyAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChs
aW5lIDApCisgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMCkKKyAg
ICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGluZSAwKQorICAgICAgICAgICAgZ2V0
RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBldmFsIChubyBmaWxlKSAobGlu
ZSAwKQorICAgICAgICAgKHByb2dyYW0pIChubyBmaWxlKSAobGluZSAxKQorICAgICAgICAgICAg
KGFub255bW91cyBmdW5jdGlvbikgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MjkpCisgICAgICAgICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDE3KQorICAgICAgICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmls
ZSkgKGxpbmUgMCkKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAo
bGluZSAwKQorICAgICAgICAgICAgICAgICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDAp
CisgICAgICAgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMCkKKyAg
ICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbiBuYW1lLWFub255bW91
cy1mdW5jdGlvbnMuaHRtbCAobGluZSAxNykKKyAgICAgICAgIGV2YWwgKG5vIGZpbGUpIChsaW5l
IDApCisgICAgICAgICAgICAocHJvZ3JhbSkgKG5vIGZpbGUpIChsaW5lIDEpCisgICAgICAgICAg
ICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAo
bGluZSAyOSkKKyAgICAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1K
Uy1yZXNvdXJjZXMuanMgKGxpbmUgMTcpCisgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVt
ZW50IChubyBmaWxlKSAobGluZSAwKQorICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5v
ZGUgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAo
bm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChu
byBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmMwIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9u
cy5odG1sIChsaW5lIDIzKQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAg
bXlPYmplY3QuYW5vbkZ1bmMxIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDI1
KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmMyIG5hbWUt
YW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDI3KQorICAgICAgICAgbG9nIChubyBmaWxl
KSAobGluZSAwKQorICAgICAgYW5vbkZ1bmMzIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1s
IChsaW5lIDMxKQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1
bmM0IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDM0KQorICAgICAgICAgbG9n
IChubyBmaWxlKSAobGluZSAwKQorICAgICAgbXlPYmplY3QuYW5vbkZ1bmM1IG5hbWUtYW5vbnlt
b3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDM3KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGlu
ZSAwKQorICAgICAgYW5vbkZ1bmM2IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5l
IDQyKQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmM3IG5h
bWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDQ1KQorICAgICAgICAgbG9nIChubyBm
aWxlKSAobGluZSAwKQorICAgICAgYW5vbkNsYXNzOCBuYW1lLWFub255bW91cy1mdW5jdGlvbnMu
aHRtbCAobGluZSA0OSkKKyAgICAgICAgIGxvZyAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIGFu
b25DbGFzczgucHJvdG90eXBlLmFub25GdW5jOSBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRt
bCAobGluZSA1MCkKKyAgICAgICAgIGxvZyAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIG5vbkFu
b255bW91c0NsYXNzMTAgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgNTQpCisg
ICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBhbm9uRnVuYzExIG5hbWUtYW5v
bnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDU2KQorICAgICAgICAgbG9nIChubyBmaWxlKSAo
bGluZSAwKQorICAgICAgZW5kVGVzdCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGlu
ZSAxKQorCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMt
ZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9u
YW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3Byb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEphdmFTY3JpcHRQcm9m
aWxpbmdFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIGNv
bnNvbGUucHJvZmlsZSgiQXMgbWFueSBkaWZmZXJlbnQgd2F5cyB3ZSBjYW4gdGhpbmsgb2YgdG8g
bmFtZSBhbiBhbm9ueW1vdXMgZnVuY3Rpb24uIik7CisKKyAgICBhbm9ueW1vdXNGdW5jdGlvbigp
OworICAgIGV2YWwoImFub255bW91c0Z1bmN0aW9uKCkiKTsKKworICAgIHZhciB2YXJpYWJsZVRo
YXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZh
bCgiYW5vbnltb3VzRnVuY3Rpb24oKSIpOworICAgIH0KKworICAgIHZhcmlhYmxlVGhhdFBvaW50
c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbigpOworCisgICAgdmFyIG15T2JqZWN0ID0geyBhbm9uRnVu
YzA6ZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhbm9uRnVuYzAnKTsgfSB9OworICAgIG15T2Jq
ZWN0LmFub25GdW5jMCgpOworICAgIG15T2JqZWN0LmFub25GdW5jMSA9IGZ1bmN0aW9uKCkgeyBj
b25zb2xlLmxvZygnYW5vbkZ1bmMxJyk7IH07CisgICAgbXlPYmplY3QuYW5vbkZ1bmMxKCk7Cisg
ICAgdmFyIGFub25GdW5jMiA9IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmMyJyk7
IH07CisgICAgbXlPYmplY3QuYW5vbkZ1bmMyQWxpYXMgPSBhbm9uRnVuYzI7CisgICAgbXlPYmpl
Y3QuYW5vbkZ1bmMyQWxpYXMoKTsKKworICAgIHZhciBhbm9uRnVuYzMgPSBmdW5jdGlvbigpIHsg
Y29uc29sZS5sb2coJ2Fub25GdW5jMycpOyB9OworICAgIGFub25GdW5jMygpOworCisgICAgdGhp
cy5hbm9uRnVuYzQgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2Fub25GdW5jNCcpOyB9Owor
ICAgIHRoaXMuYW5vbkZ1bmM0KCk7CisKKyAgICBteU9iamVjdC5hbm9uRnVuYzUgPSBmdW5jdGlv
bigpIHsgY29uc29sZS5sb2coJ2Fub25GdW5jNScpOyB9OworICAgIHZhciBteU90aGVyT2JqZWN0
ID0ge307CisgICAgbXlPdGhlck9iamVjdC5hbm9uRnVuYzVBbGlhcyA9IG15T2JqZWN0LmFub25G
dW5jNTsKKyAgICBteU90aGVyT2JqZWN0LmFub25GdW5jNUFsaWFzKCk7CisKKyAgICB0aGlzLmFu
b25GdW5jNiA9IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmM2Jyk7IH07CisgICAg
dGhpcy5hbm9uRnVuYzYoKTsKKyAgICAKKyAgICB0aGlzLmFub25GdW5jNyA9IGZ1bmN0aW9uKCkg
eyBjb25zb2xlLmxvZygnYW5vbkZ1bmM3Jyk7IH07CisgICAgdmFyIGFub25GdW5jN0FsaWFzID0g
dGhpcy5hbm9uRnVuYzc7CisgICAgYW5vbkZ1bmM3QWxpYXMoKTsKKworICAgIHZhciBhbm9uQ2xh
c3M4ID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhbm9uQ2xhc3M4Jyk7IH07CisgICAgYW5v
bkNsYXNzOC5wcm90b3R5cGUuYW5vbkZ1bmM5ID0gZnVuY3Rpb24oKXsgY29uc29sZS5sb2coJ2Fu
b25GdW5jOScpOyB9CisgICAgdmFyIGFub25PYmplY3Q4ID0gbmV3IGFub25DbGFzczgoKTsKKyAg
ICBhbm9uT2JqZWN0OC5hbm9uRnVuYzkoKTsKKworICAgIGZ1bmN0aW9uIG5vbkFub255bW91c0Ns
YXNzMTAoKXsgY29uc29sZS5sb2coJ25vbkFub255bW91c0NsYXNzMTAnKTsgfQorICAgIG5vbkFu
b255bW91c0NsYXNzMTAucHJvdG90eXBlID0geworICAgICAgICBhbm9uRnVuYzExOiBmdW5jdGlv
bigpeyBjb25zb2xlLmxvZygnYW5vbkZ1bmMxMScpOyB9CisgICAgfTsKKyAgICB2YXIgbm9uQW5v
bnltb3VzT2JqZWN0MTAgPSBuZXcgbm9uQW5vbnltb3VzQ2xhc3MxMCgpOworICAgIG5vbkFub255
bW91c09iamVjdDEwLmFub25GdW5jMTEoKTsKKworICAgIGVuZFRlc3QoKTsKKworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKSI+CitUaGlzIHBhZ2Un
cyBKYXZhU2NyaXB0IGNhbGxzIGFuIGFub255bW91cyBmdW5jdGlvbiBmcm9tIGRpZmZlcmVudCBj
b250ZXh0cy4KKzxicj4KKzxicj4KK1RvIHVzZSB0aGlzIHRlc3QsIGxvYWQgaXQgaW4gdGhlIGJy
b3dzZXIgdGhlbiBsb2FkIHRoZSBXZWJJbnNwZWN0b3IgYW5kIGxvb2sgYXQKK3RoZSBwcm9maWxl
LiAgQmVuZWF0aCBvbmxvYWQgYW5kIHN0YXJ0VGVzdCBpdCBzaG91bGQgc2hvdyB0aHJlZSBjaGls
ZHJlbiwgYW4KK2Fub255bW91cyBmdW5jdGlvbiwgc2NyaXB0IGNvbnRleHQsIGFuZCB0aGUgZW5k
VGVzdCBjYWxsLgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0NTA2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVk
LWFub255bW91cy1mdW5jdG9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1
LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0
aXRsZTogTmVzdGVkIGFub255bW91cyBmdW5jdGlvbnMgY2FsbGVkCiBUaHJlYWRfMSAobm8gZmls
ZSkgKGxpbmUgMCkKICAgIHN0YXJ0VGVzdCBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAo
bGluZSAxMSkKKyAgICAgIG1ha2VGdW5jdGlvbkFub255bW91cyBwcm9maWxlci10ZXN0LUpTLXJl
c291cmNlcy5qcyAobGluZSAxMDQpCiAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSBuZXN0ZWQt
YW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxNCkKICAgICAgICAgIChhbm9ueW1vdXMgZnVu
Y3Rpb24pIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5KQogICAgICAgICAg
ICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNykK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5jdG9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5v
bnltb3VzLWZ1bmN0b24uaHRtbAkocmV2aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCiB7CiAgICAgY29uc29sZS5wcm9m
aWxlKCJOZXN0ZWQgYW5vbnltb3VzIGZ1bmN0aW9ucyBjYWxsZWQiKTsKIAotICAgIHZhciBBbm9u
eW1vdXNGdW5jdGlvbldpY2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gPSBmdW5jdGlvbigpIHsK
KyAgICB2YXIgQW5vbnltb3VzRnVuY3Rpb25XaWNoQ2FsbHNBbkFub255bW91c0Z1bmN0aW9uID0g
bWFrZUZ1bmN0aW9uQW5vbnltb3VzKGZ1bmN0aW9uKCkgewogICAgICAgICBhbm9ueW1vdXNGdW5j
dGlvbigpOwotICAgIH0KKyAgICB9KTsKIAogICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxz
QW5Bbm9ueW1vdXNGdW5jdGlvbigpOwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcwkocmV2aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jl
c291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsOCBAQCBmdW5jdGlvbiBhcnJheU9wZXJhdG9yRnVuY3Rpb24oYXJyYXlFbGVtCiAg
ICAgcmV0dXJuIGFycmF5RWxlbWVudCArIDU7CiB9CiAKLXZhciBhbm9ueW1vdXNGdW5jdGlvbiA9
IGZ1bmN0aW9uICgpIHsgaW5zZXJ0TmV3VGV4dCgpOyB9OwotdmFyIGFub3RoZXJBbm9ueW1vdXNG
dW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgaW5zZXJ0R2l2ZW5UZXh0KCJBbm90aGVyIGFub255bW91
cyBmdW5jdGlvbiB3YXMgY2FsbGVkLiIpIH07Cit2YXIgYW5vbnltb3VzRnVuY3Rpb24gPSBtYWtl
RnVuY3Rpb25Bbm9ueW1vdXMoZnVuY3Rpb24gKCkgeyBpbnNlcnROZXdUZXh0KCk7IH0pOwordmFy
IGFub3RoZXJBbm9ueW1vdXNGdW5jdGlvbiA9IG1ha2VGdW5jdGlvbkFub255bW91cyhmdW5jdGlv
biAoKSB7IGluc2VydEdpdmVuVGV4dCgiQW5vdGhlciBhbm9ueW1vdXMgZnVuY3Rpb24gd2FzIGNh
bGxlZC4iKSB9KTsKIAogZnVuY3Rpb24gaW50ZXJtZWRpYXJ5RnVuY3Rpb24oKQogewpAQCAtOTks
MyArOTksOCBAQCBmdW5jdGlvbiBwcmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUocHJlCiAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgcHJpbnRQ
cm9maWxlTm9kZVdpdGhvdXRUaW1lKHByZUVsZW1lbnQsIGNoaWxkcmVuW2ldLCBpbmRlbnRMZXZl
bCk7CiB9CisKK2Z1bmN0aW9uIG1ha2VGdW5jdGlvbkFub255bW91cyhmKQoreworICAgIHJldHVy
biBmOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31925</attachid>
            <date>2009-06-26 03:42:33 -0700</date>
            <delta_ts>2009-06-26 05:35:59 -0700</delta_ts>
            <desc>patch with unlikely</desc>
            <filename>bug19229_2.patch</filename>
            <type>text/plain</type>
            <size>19603</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MDc5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMjQgIEFsZXhhbmRy
dSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjI5CisgICAgICAgIAorICAgICAgICBQcm9wYWdhdGUgaWRlbnRp
ZmllciBmcm9tIEFzc2lnbkRvdE5vZGUsIAorICAgICAgICBQcm9wZXJ0eU5vZGUsIEFzc2lnblJl
c29sdmVOb2RlIHRvIGFub255bW91cyBmdW5jdGlvbiBub2Rlcy4KKworICAgICAgICAqIHBhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5Tm9kZTo6UHJvcGVy
dHlOb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OnNl
dENvbnRleHR1YWxOYW1lKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Z2V0Q29u
dGV4dHVhbE5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZSk6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisKIDIwMDktMDYtMjQgIFpvbHRhbiBIb3J2YXRoICA8aHpvbHRh
bkBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dp
YWsuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlz
aW9uIDQ1MDY5KQorKysgSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgLCBtX2Fzc2lnbihhc3NpZ24pCiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgeworICAg
ICAgICBpZiAoVU5MSUtFTFkoYXNzaWduLT5pc0Z1bmNFeHByTm9kZSgpKSkgeworICAgICAgICAg
ICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwck5vZGUgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUq
Pihhc3NpZ24pOworICAgICAgICAgICAgZnVuY0V4cHJOb2RlLT5ib2R5KCktPnNldENvbnRleHR1
YWxOYW1lKG5hbWUudXN0cmluZygpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlubGluZSBQ
cm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgUHJvcGVydHlOb2RlKiBub2RlKQpAQCAtNjAyLDYgKzYwNiwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25t
ZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJp
Z2h0LT5pc0Z1bmNFeHByTm9kZSgpKSkgeworICAgICAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5j
RXhwck5vZGUgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaWdodCk7CisgICAgICAgICAg
ICBmdW5jRXhwck5vZGUtPmJvZHkoKS0+c2V0Q29udGV4dHVhbE5hbWUoaWRlbnQudXN0cmluZygp
KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6
OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCkBAIC02MzUsNiArNjQzLDI3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1l
bnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgeworICAgICAgICBpZiAoVU5MSUtFTFkocmln
aHQtPmlzRnVuY0V4cHJOb2RlKCkpKSB7CisgICAgICAgICAgICBGdW5jRXhwck5vZGUqIGZ1bmNF
eHByTm9kZSA9IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KHJpZ2h0KTsKKworICAgICAgICAg
ICAgVVN0cmluZyBuYW1lKGlkZW50LnVzdHJpbmcoKSk7CisgICAgICAgICAgICBjb25zdCBVU3Ry
aW5nIGRvdFN0cmluZygiLiIpOworCisgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZUl0
ZXJhdG9yID0gYmFzZTsKKyAgICAgICAgICAgIHdoaWxlIChiYXNlSXRlcmF0b3IgJiYgYmFzZUl0
ZXJhdG9yLT5pc0RvdEFjY2Vzc29yTm9kZSgpKSB7CisgICAgICAgICAgICAgICAgRG90QWNjZXNz
b3JOb2RlKiBkb3RBY2Nlc3Nvck5vZGUgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihi
YXNlSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIG5hbWUgPSBkb3RBY2Nlc3Nvck5vZGUtPmlk
ZW50aWZpZXIoKS51c3RyaW5nKCkgKyBkb3RTdHJpbmcgKyBuYW1lOworCisgICAgICAgICAgICAg
ICAgYmFzZUl0ZXJhdG9yID0gZG90QWNjZXNzb3JOb2RlLT5iYXNlKCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmIChiYXNlSXRlcmF0b3IgJiYgYmFzZUl0ZXJhdG9yLT5pc1Jlc29s
dmVOb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBSZXNvbHZlTm9kZSogY29uc3QgcmVzb2x2ZU5v
ZGUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGJhc2VJdGVyYXRvcik7CisgICAgICAgICAg
ICAgICAgbmFtZSA9IHJlc29sdmVOb2RlLT5pZGVudGlmaWVyKCkudXN0cmluZygpICsgZG90U3Ry
aW5nICsgbmFtZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY0V4cHJOb2RlLT5i
b2R5KCktPnNldENvbnRleHR1YWxOYW1lKG5hbWUpOworICAgICAgICB9CiAgICAgfQogCiAgICAg
aW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQpJbmRleDogSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDQ1MDY5KQorKysg
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNyAr
MTU4NiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFTU0VSVChtX2NvZGUpOwog
ICAgICAgICAgICAgcmV0dXJuICptX2NvZGU7CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAg
ICAgdm9pZCBzZXRDb250ZXh0dWFsTmFtZShjb25zdCBVU3RyaW5nJiBuYW1lKSB7IG1fY29udGV4
dHVhbE5hbWUgPSBuYW1lOyB9CisgICAgICAgIFVTdHJpbmcgZ2V0Q29udGV4dHVhbE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHR1YWxOYW1lOyB9CisKICAgICBwcml2YXRlOgogICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSopOwogICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0
YWNrKiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CkBAIC0xNTk3LDYgKzE2MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAgICAgICBJ
ZGVudGlmaWVyKiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIHNpemVfdCBtX3BhcmFtZXRlckNvdW50
OworICAgICAgICBVU3RyaW5nIG1fY29udGV4dHVhbE5hbWU7CiAgICAgICAgIE93blB0cjxDb2Rl
QmxvY2s+IG1fY29kZTsKICAgICB9OwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAJKHJldmlzaW9uIDQ1MDY5KQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDQgKzIxMiwxNCBAQCBKU09iamVjdCog
SlNGdW5jdGlvbjo6Y29uc3RydWN0KEV4ZWNTdGF0CiAgICAgcmV0dXJuIGFzT2JqZWN0KHJlc3Vs
dCk7CiB9CiAKK2NvbnN0IFVTdHJpbmcgSlNGdW5jdGlvbjo6Y2FsY3VsYXRlZERpc3BsYXlOYW1l
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBjb25zdCBVU3RyaW5nIGNhbGN1bGF0
ZWREaXNwbGF5TmFtZSA9IEludGVybmFsRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShn
bG9iYWxEYXRhKTsKKworICAgIGlmIChtX2JvZHkuZ2V0KCkgJiYgY2FsY3VsYXRlZERpc3BsYXlO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1fYm9keS0+Z2V0Q29udGV4dHVhbE5hbWUo
KTsKKyAgICAKKyAgICByZXR1cm4gY2FsY3VsYXRlZERpc3BsYXlOYW1lOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lv
biA0NTA2OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC04OSw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOworICAgICAgICAKKyAg
ICAgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUoSlNHbG9iYWxEYXRhKik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MDc5KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAK
KzIwMDktMDYtMjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjI5CisgICAgICAgIAorICAg
ICAgICBQcm9wYWdhdGUgaWRlbnRpZmllciBmcm9tIEFzc2lnbkRvdE5vZGUsIAorICAgICAgICBQ
cm9wZXJ0eU5vZGUsIEFzc2lnblJlc29sdmVOb2RlIHRvIGFub255bW91cyBmdW5jdGlvbiBub2Rl
cy4KKyAgICAgICAgCisgICAgICAgIFVwZGF0ZWQgdGhlIHByb2ZpbGVyIHRlc3RzIHRvIGZvcmNl
IHVzYWdlIG9mIGFub255bW91cyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVy
L2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3By
b2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBmYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWw6Cisg
ICAgICAgICogZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24t
Y2FsbHMtYW5vbnltb3VzLmh0bWw6CisgICAgICAgICogZmFzdC9wcm9maWxlci9uYW1lLWFub255
bW91cy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Byb2Zp
bGVyL25hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbDoKKyAgICAgICAg
KiBmYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qczoK
KyAgICAgICAgKHZhcik6CisgICAgICAgICgpOgorCiAyMDA5LTA2LTI0ICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChEaXNhYmxp
bmcgZmFpbGluZyB0ZXN0ISkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255
bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1ldmVu
dC1oYW5kbGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAgVGhy
ZWFkXzEgKG5vIGZpbGUpIChsaW5lIDApCiAgICBzdGFydFRlc3QgYW5vbnltb3VzLWV2ZW50LWhh
bmRsZXIuaHRtbCAobGluZSAxMSkKICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGlu
ZSAwKQogICAgICAgY2xpY2sgKG5vIGZpbGUpIChsaW5lIDApCi0gICAgICAgICAoYW5vbnltb3Vz
IGZ1bmN0aW9uKSBhbm9ueW1vdXMtZXZlbnQtaGFuZGxlci5odG1sIChsaW5lIDE1KQorICAgICAg
ICAgYnV0dG9uV2l0aEFub255bW91c0hhbmRsZXIub25jbGljayBhbm9ueW1vdXMtZXZlbnQtaGFu
ZGxlci5odG1sIChsaW5lIDE1KQogICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10
ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNykKICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1l
bnQgKG5vIGZpbGUpIChsaW5lIDApCiAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8g
ZmlsZSkgKGxpbmUgMCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA0NTA2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnlt
b3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01
LDYgKzUsNyBAQCBUbyBydW4gdGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiBQcm9m
aWxlIHRpdGxlOiBBbm9ueW1vdXMgZnVuY3Rpb24gY2FsbGVzIGV2YWwKIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwKQogICAgc3RhcnRUZXN0IGFub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFs
Lmh0bWwgKGxpbmUgMTEpCisgICAgICBtYWtlRnVuY3Rpb25Bbm9ueW1vdXMgcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTA0KQogICAgICAgKGFub255bW91cyBmdW5jdGlvbikg
YW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbCAobGluZSAxNCkKICAgICAgICAgIGV2
YWwgKG5vIGZpbGUpIChsaW5lIDApCiAgICAgICAgICAgICAocHJvZ3JhbSkgKG5vIGZpbGUpIChs
aW5lIDEpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlv
bi1jYWxscy1ldmFsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sCShyZXZpc2lvbiA0NTA2OSkKKysr
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3VzLWZ1bmN0aW9uLWNhbGxzLWV2YWwu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiBzdGFydFRlc3Qo
KQogewogICAgIGNvbnNvbGUucHJvZmlsZSgiQW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFs
Iik7CiAKLSAgICB2YXIgdmFyaWFibGVUaGF0UG9pbnRzVG9BbkFub255bW91c0Z1bmN0aW9uID0g
ZnVuY3Rpb24oKSB7CisgICAgdmFyIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5j
dGlvbiA9IG1ha2VGdW5jdGlvbkFub255bW91cyhmdW5jdGlvbigpIHsKICAgICAgICAgZXZhbCgi
aW5zZXJ0TmV3VGV4dCgpIik7Ci0gICAgfQorICAgIH0pOwogCiAgICAgdmFyaWFibGVUaGF0UG9p
bnRzVG9BbkFub255bW91c0Z1bmN0aW9uKCk7CiAgICAgZW5kVGVzdCgpOwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQt
aW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNDUwNjkp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFu
b255bW91cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBAIFRvIHJ1
biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIFByb2ZpbGUgdGl0bGU6IEJ1aWx0
LWluIGZ1bmN0aW9uIGNhbGxzIGFuIGFub255bW91cyBmdW5jdGlvbgogVGhyZWFkXzEgKG5vIGZp
bGUpIChsaW5lIDApCiAgICBzdGFydFRlc3QgYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnlt
b3VzLmh0bWwgKGxpbmUgMTEpCisgICAgICBtYWtlRnVuY3Rpb25Bbm9ueW1vdXMgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTA0KQogICAgICAgQXJyYXkgKG5vIGZpbGUpIChs
aW5lIDApCiAgICAgICBtYXAgKG5vIGZpbGUpIChsaW5lIDApCiAgICAgICAgICAoYW5vbnltb3Vz
IGZ1bmN0aW9uKSBidWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbCAobGluZSAx
NCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2Fs
bHMtYW5vbnltb3VzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRtbAkocmV2aXNpb24gNDUwNjkp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFu
b255bW91cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9uIHN0
YXJ0VGVzdCgpCiB7CiAgICAgY29uc29sZS5wcm9maWxlKCJCdWlsdC1pbiBmdW5jdGlvbiBjYWxs
cyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24iKTsKIAotICAgIHZhciBteUZ1bmN0aW9uID0gZnVuY3Rp
b24oYXJyYXlFbGVtZW50KSB7CisgICAgdmFyIG15RnVuY3Rpb24gPSBtYWtlRnVuY3Rpb25Bbm9u
eW1vdXMoZnVuY3Rpb24oYXJyYXlFbGVtZW50KSB7CiAgICAgICAgIHJldHVybiBhcnJheU9wZXJh
dG9yRnVuY3Rpb24oYXJyYXlFbGVtZW50KTsKLSAgICB9CisgICAgfSk7CiAKICAgICB2YXIgbXlB
cnJheSA9IG5ldyBBcnJheSAoMCwgMSwgMik7CiAgICAgbXlBcnJheS5tYXAobXlGdW5jdGlvbik7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWUtYW5vbnltb3VzLWZ1bmN0aW9u
cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9u
YW1lLWFub255bW91cy1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjM6IGFub25GdW5jMAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDI1OiBhbm9uRnVuYzEKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAyNzogYW5vbkZ1bmMyCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMzE6
IGFub25GdW5jMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDM0OiBhbm9uRnVuYzQKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAzNzogYW5vbkZ1bmM1CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNDI6IGFu
b25GdW5jNgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQ1OiBhbm9uRnVuYzcKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA0OTogYW5vbkNsYXNzOAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDUwOiBhbm9u
RnVuYzkKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1NDogbm9uQW5vbnltb3VzQ2xhc3MxMAorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDU2OiBhbm9uRnVuYzExCitUaGlzIHBhZ2UncyBKYXZhU2NyaXB0
IGNhbGxzIGFuIGFub255bW91cyBmdW5jdGlvbiBmcm9tIGRpZmZlcmVudCBjb250ZXh0cy4gCisK
K1RvIHVzZSB0aGlzIHRlc3QsIGxvYWQgaXQgaW4gdGhlIGJyb3dzZXIgdGhlbiBsb2FkIHRoZSBX
ZWJJbnNwZWN0b3IgYW5kIGxvb2sgYXQgdGhlIHByb2ZpbGUuIEJlbmVhdGggb25sb2FkIGFuZCBz
dGFydFRlc3QgaXQgc2hvdWxkIHNob3cgdGhyZWUgY2hpbGRyZW4sIGFuIGFub255bW91cyBmdW5j
dGlvbiwgc2NyaXB0IGNvbnRleHQsIGFuZCB0aGUgZW5kVGVzdCBjYWxsLgorCitQcm9maWxlIHRp
dGxlOiBBcyBtYW55IGRpZmZlcmVudCB3YXlzIHdlIGNhbiB0aGluayBvZiB0byBuYW1lIGFuIGFu
b255bW91cyBmdW5jdGlvbi4KK1RocmVhZF8xIChubyBmaWxlKSAobGluZSAwKQorICAgc3RhcnRU
ZXN0IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDExKQorICAgICAgKGFub255
bW91cyBmdW5jdGlvbikgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjkpCisg
ICAgICAgICBpbnNlcnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5l
IDE3KQorICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwKQorICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAgICAgICBnZXRFbGVtZW50QnlJZCAo
bm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIGV2YWwgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAg
ICAocHJvZ3JhbSkgKG5vIGZpbGUpIChsaW5lIDEpCisgICAgICAgICAgICAoYW5vbnltb3VzIGZ1
bmN0aW9uKSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOSkKKyAgICAgICAg
ICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUg
MTcpCisgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwKQor
ICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDApCisgICAg
ICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgICAgICAg
ICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwKQorICAgICAgdmFyaWFibGVU
aGF0UG9pbnRzVG9BbkFub255bW91c0Z1bmN0aW9uIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5o
dG1sIChsaW5lIDE3KQorICAgICAgICAgZXZhbCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgICAg
ICAgIChwcm9ncmFtKSAobm8gZmlsZSkgKGxpbmUgMSkKKyAgICAgICAgICAgICAgIChhbm9ueW1v
dXMgZnVuY3Rpb24pIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5KQorICAg
ICAgICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAxNykKKyAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUp
IChsaW5lIDApCisgICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZXh0Tm9kZSAobm8gZmlsZSkg
KGxpbmUgMCkKKyAgICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkIChubyBmaWxlKSAobGlu
ZSAwKQorICAgICAgICAgICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChsaW5l
IDApCisgICAgICBhbm9uRnVuYzAgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUg
MjMpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBteU9iamVjdC5hbm9u
RnVuYzEgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgMjUpCisgICAgICAgICBs
b2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBhbm9uRnVuYzIgbmFtZS1hbm9ueW1vdXMtZnVu
Y3Rpb25zLmh0bWwgKGxpbmUgMjcpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisg
ICAgICBhbm9uRnVuYzMgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgMzEpCisg
ICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBhbm9uRnVuYzQgbmFtZS1hbm9u
eW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgMzQpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChs
aW5lIDApCisgICAgICBteU9iamVjdC5hbm9uRnVuYzUgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25z
Lmh0bWwgKGxpbmUgMzcpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBh
bm9uRnVuYzYgbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgNDIpCisgICAgICAg
ICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICBhbm9uRnVuYzcgbmFtZS1hbm9ueW1vdXMt
ZnVuY3Rpb25zLmh0bWwgKGxpbmUgNDUpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDAp
CisgICAgICBhbm9uQ2xhc3M4IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDQ5
KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkNsYXNzOC5wcm90
b3R5cGUuYW5vbkZ1bmM5IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDUwKQor
ICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgbm9uQW5vbnltb3VzQ2xhc3Mx
MCBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSA1NCkKKyAgICAgICAgIGxvZyAo
bm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIGFub25GdW5jMTEgbmFtZS1hbm9ueW1vdXMtZnVuY3Rp
b25zLmh0bWwgKGxpbmUgNTYpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChsaW5lIDApCisgICAg
ICBlbmRUZXN0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDEpCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25hbWUtYW5vbnltb3Vz
LWZ1bmN0aW9ucy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcHJvZmlsZXItdGVz
dC1KUy1yZXNvdXJjZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQo
dHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHN0YXJ0VGVzdCgpCit7CisgICAgY29uc29sZS5wcm9maWxl
KCJBcyBtYW55IGRpZmZlcmVudCB3YXlzIHdlIGNhbiB0aGluayBvZiB0byBuYW1lIGFuIGFub255
bW91cyBmdW5jdGlvbi4iKTsKKworICAgIGFub255bW91c0Z1bmN0aW9uKCk7CisgICAgZXZhbCgi
YW5vbnltb3VzRnVuY3Rpb24oKSIpOworCisgICAgdmFyIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5B
bm9ueW1vdXNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgICAgICBldmFsKCJhbm9ueW1vdXNG
dW5jdGlvbigpIik7CisgICAgfQorCisgICAgdmFyaWFibGVUaGF0UG9pbnRzVG9BbkFub255bW91
c0Z1bmN0aW9uKCk7CisKKyAgICB2YXIgbXlPYmplY3QgPSB7IGFub25GdW5jMDpmdW5jdGlvbigp
IHsgY29uc29sZS5sb2coJ2Fub25GdW5jMCcpOyB9IH07CisgICAgbXlPYmplY3QuYW5vbkZ1bmMw
KCk7CisgICAgbXlPYmplY3QuYW5vbkZ1bmMxID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdh
bm9uRnVuYzEnKTsgfTsKKyAgICBteU9iamVjdC5hbm9uRnVuYzEoKTsKKyAgICB2YXIgYW5vbkZ1
bmMyID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhbm9uRnVuYzInKTsgfTsKKyAgICBteU9i
amVjdC5hbm9uRnVuYzJBbGlhcyA9IGFub25GdW5jMjsKKyAgICBteU9iamVjdC5hbm9uRnVuYzJB
bGlhcygpOworCisgICAgdmFyIGFub25GdW5jMyA9IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygn
YW5vbkZ1bmMzJyk7IH07CisgICAgYW5vbkZ1bmMzKCk7CisKKyAgICB0aGlzLmFub25GdW5jNCA9
IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmM0Jyk7IH07CisgICAgdGhpcy5hbm9u
RnVuYzQoKTsKKworICAgIG15T2JqZWN0LmFub25GdW5jNSA9IGZ1bmN0aW9uKCkgeyBjb25zb2xl
LmxvZygnYW5vbkZ1bmM1Jyk7IH07CisgICAgdmFyIG15T3RoZXJPYmplY3QgPSB7fTsKKyAgICBt
eU90aGVyT2JqZWN0LmFub25GdW5jNUFsaWFzID0gbXlPYmplY3QuYW5vbkZ1bmM1OworICAgIG15
T3RoZXJPYmplY3QuYW5vbkZ1bmM1QWxpYXMoKTsKKworICAgIHRoaXMuYW5vbkZ1bmM2ID0gZnVu
Y3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhbm9uRnVuYzYnKTsgfTsKKyAgICB0aGlzLmFub25GdW5j
NigpOworICAgIAorICAgIHRoaXMuYW5vbkZ1bmM3ID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9n
KCdhbm9uRnVuYzcnKTsgfTsKKyAgICB2YXIgYW5vbkZ1bmM3QWxpYXMgPSB0aGlzLmFub25GdW5j
NzsKKyAgICBhbm9uRnVuYzdBbGlhcygpOworCisgICAgdmFyIGFub25DbGFzczggPSBmdW5jdGlv
bigpIHsgY29uc29sZS5sb2coJ2Fub25DbGFzczgnKTsgfTsKKyAgICBhbm9uQ2xhc3M4LnByb3Rv
dHlwZS5hbm9uRnVuYzkgPSBmdW5jdGlvbigpeyBjb25zb2xlLmxvZygnYW5vbkZ1bmM5Jyk7IH0K
KyAgICB2YXIgYW5vbk9iamVjdDggPSBuZXcgYW5vbkNsYXNzOCgpOworICAgIGFub25PYmplY3Q4
LmFub25GdW5jOSgpOworCisgICAgZnVuY3Rpb24gbm9uQW5vbnltb3VzQ2xhc3MxMCgpeyBjb25z
b2xlLmxvZygnbm9uQW5vbnltb3VzQ2xhc3MxMCcpOyB9CisgICAgbm9uQW5vbnltb3VzQ2xhc3Mx
MC5wcm90b3R5cGUgPSB7CisgICAgICAgIGFub25GdW5jMTE6IGZ1bmN0aW9uKCl7IGNvbnNvbGUu
bG9nKCdhbm9uRnVuYzExJyk7IH0KKyAgICB9OworICAgIHZhciBub25Bbm9ueW1vdXNPYmplY3Qx
MCA9IG5ldyBub25Bbm9ueW1vdXNDbGFzczEwKCk7CisgICAgbm9uQW5vbnltb3VzT2JqZWN0MTAu
YW5vbkZ1bmMxMSgpOworCisgICAgZW5kVGVzdCgpOworCit9CisKKzwvc2NyaXB0PgorPC9oZWFk
PgorCis8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KK1RoaXMgcGFnZSdzIEphdmFTY3JpcHQg
Y2FsbHMgYW4gYW5vbnltb3VzIGZ1bmN0aW9uIGZyb20gZGlmZmVyZW50IGNvbnRleHRzLgorPGJy
PgorPGJyPgorVG8gdXNlIHRoaXMgdGVzdCwgbG9hZCBpdCBpbiB0aGUgYnJvd3NlciB0aGVuIGxv
YWQgdGhlIFdlYkluc3BlY3RvciBhbmQgbG9vayBhdAordGhlIHByb2ZpbGUuICBCZW5lYXRoIG9u
bG9hZCBhbmQgc3RhcnRUZXN0IGl0IHNob3VsZCBzaG93IHRocmVlIGNoaWxkcmVuLCBhbgorYW5v
bnltb3VzIGZ1bmN0aW9uLCBzY3JpcHQgY29udGV4dCwgYW5kIHRoZSBlbmRUZXN0IGNhbGwuCis8
ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255
bW91cy1mdW5jdG9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDQ1MDY5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1
bmN0b24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCBUbyBydW4g
dGhpcyB0ZXN0IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiBQcm9maWxlIHRpdGxlOiBOZXN0ZWQg
YW5vbnltb3VzIGZ1bmN0aW9ucyBjYWxsZWQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwKQog
ICAgc3RhcnRUZXN0IG5lc3RlZC1hbm9ueW1vdXMtZnVuY3Rvbi5odG1sIChsaW5lIDExKQorICAg
ICAgbWFrZUZ1bmN0aW9uQW5vbnltb3VzIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChs
aW5lIDEwNCkKICAgICAgIChhbm9ueW1vdXMgZnVuY3Rpb24pIG5lc3RlZC1hbm9ueW1vdXMtZnVu
Y3Rvbi5odG1sIChsaW5lIDE0KQogICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikgcHJvZmls
ZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjkpCiAgICAgICAgICAgICBpbnNlcnROZXdU
ZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3KQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rv
bi5odG1sCShyZXZpc2lvbiA0NTA2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVz
dGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDkgKzExLDkg
QEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKIHsKICAgICBjb25zb2xlLnByb2ZpbGUoIk5lc3RlZCBh
bm9ueW1vdXMgZnVuY3Rpb25zIGNhbGxlZCIpOwogCi0gICAgdmFyIEFub255bW91c0Z1bmN0aW9u
V2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBBbm9u
eW1vdXNGdW5jdGlvbldpY2hDYWxsc0FuQW5vbnltb3VzRnVuY3Rpb24gPSBtYWtlRnVuY3Rpb25B
bm9ueW1vdXMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFub255bW91c0Z1bmN0aW9uKCk7Ci0gICAg
fQorICAgIH0pOwogCiAgICAgQW5vbnltb3VzRnVuY3Rpb25XaWNoQ2FsbHNBbkFub255bW91c0Z1
bmN0aW9uKCk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcmVzb3VyY2VzL3By
b2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvcmVzb3VyY2VzL3Byb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzCShyZXZp
c2lvbiA0NTA2OSkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvcmVzb3VyY2VzL3Byb2Zp
bGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw4IEBA
IGZ1bmN0aW9uIGFycmF5T3BlcmF0b3JGdW5jdGlvbihhcnJheUVsZW0KICAgICByZXR1cm4gYXJy
YXlFbGVtZW50ICsgNTsKIH0KIAotdmFyIGFub255bW91c0Z1bmN0aW9uID0gZnVuY3Rpb24gKCkg
eyBpbnNlcnROZXdUZXh0KCk7IH07Ci12YXIgYW5vdGhlckFub255bW91c0Z1bmN0aW9uID0gZnVu
Y3Rpb24gKCkgeyBpbnNlcnRHaXZlblRleHQoIkFub3RoZXIgYW5vbnltb3VzIGZ1bmN0aW9uIHdh
cyBjYWxsZWQuIikgfTsKK3ZhciBhbm9ueW1vdXNGdW5jdGlvbiA9IG1ha2VGdW5jdGlvbkFub255
bW91cyhmdW5jdGlvbiAoKSB7IGluc2VydE5ld1RleHQoKTsgfSk7Cit2YXIgYW5vdGhlckFub255
bW91c0Z1bmN0aW9uID0gbWFrZUZ1bmN0aW9uQW5vbnltb3VzKGZ1bmN0aW9uICgpIHsgaW5zZXJ0
R2l2ZW5UZXh0KCJBbm90aGVyIGFub255bW91cyBmdW5jdGlvbiB3YXMgY2FsbGVkLiIpIH0pOwog
CiBmdW5jdGlvbiBpbnRlcm1lZGlhcnlGdW5jdGlvbigpCiB7CkBAIC05OSwzICs5OSw4IEBAIGZ1
bmN0aW9uIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZShwcmUKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICBwcmludFByb2ZpbGVOb2RlV2l0
aG91dFRpbWUocHJlRWxlbWVudCwgY2hpbGRyZW5baV0sIGluZGVudExldmVsKTsKIH0KKworZnVu
Y3Rpb24gbWFrZUZ1bmN0aW9uQW5vbnltb3VzKGYpCit7CisgICAgcmV0dXJuIGY7Cit9Cg==
</data>
<flag name="review"
          id="16474"
          type_id="1"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31929</attachid>
            <date>2009-06-26 05:35:59 -0700</date>
            <delta_ts>2010-06-10 17:59:47 -0700</delta_ts>
            <desc>patch fix</desc>
            <filename>bug19229_3.patch</filename>
            <type>text/plain</type>
            <size>20960</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ1MjU5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDYtMjYgIEFsZXhhbmRy
dSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjI5CisKKyAgICAgICAgUHJvcGFnYXRlIGlkZW50aWZpZXIgZnJv
bSBBc3NpZ25Eb3ROb2RlLCAKKyAgICAgICAgUHJvcGVydHlOb2RlLCBBc3NpZ25SZXNvbHZlTm9k
ZSB0byBhbm9ueW1vdXMgZnVuY3Rpb24gbm9kZXMuCisKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6
CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpzZXRDb250ZXh0
dWFsTmFtZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNvbnRleHR1YWxOYW1l
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1
bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5oOgorCiAyMDA5LTA2LTI2ICBab2x0YW4gSG9ydmF0aCAgPGh6b2x0YW5AaW5mLnUtc3pl
Z2VkLmh1PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiA0NTA2OSkKKysrIEph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE0Nyw2ICsxNDcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV9hc3NpZ24oYXNz
aWduKQogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZ
KGFzc2lnbi0+aXNGdW5jRXhwck5vZGUoKSkpIHsKKyAgICAgICAgICAgIEZ1bmNFeHByTm9kZSog
ZnVuY0V4cHJOb2RlID0gc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oYXNzaWduKTsKKyAgICAg
ICAgICAgIGZ1bmNFeHByTm9kZS0+Ym9keSgpLT5zZXRDb250ZXh0dWFsTmFtZShuYW1lLnVzdHJp
bmcoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6
UHJvcGVydHlMaXN0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFByb3BlcnR5Tm9kZSog
bm9kZSkKQEAgLTYwMiw2ICs2MDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV9y
aWdodChyaWdodCkKICAgICAgICAgLCBtX3JpZ2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CisgICAgICAgIGlmIChVTkxJS0VMWShyaWdodC0+aXNGdW5jRXhwck5v
ZGUoKSkpIHsKKyAgICAgICAgICAgIEZ1bmNFeHByTm9kZSogZnVuY0V4cHJOb2RlID0gc3RhdGlj
X2Nhc3Q8RnVuY0V4cHJOb2RlKj4ocmlnaHQpOworICAgICAgICAgICAgZnVuY0V4cHJOb2RlLT5i
b2R5KCktPnNldENvbnRleHR1YWxOYW1lKGlkZW50LnVzdHJpbmcoKSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQpAQCAtNjM1LDYgKzY0MywyNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3Jp
Z2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKHJpZ2h0LT5pc0Z1bmNFeHByTm9k
ZSgpKSkgeworICAgICAgICAgICAgRnVuY0V4cHJOb2RlKiBmdW5jRXhwck5vZGUgPSBzdGF0aWNf
Y2FzdDxGdW5jRXhwck5vZGUqPihyaWdodCk7CisKKyAgICAgICAgICAgIFVTdHJpbmcgbmFtZShp
ZGVudC51c3RyaW5nKCkpOworICAgICAgICAgICAgY29uc3QgVVN0cmluZyBkb3RTdHJpbmcoIi4i
KTsKKworICAgICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2VJdGVyYXRvciA9IGJhc2U7Cisg
ICAgICAgICAgICB3aGlsZSAoYmFzZUl0ZXJhdG9yICYmIGJhc2VJdGVyYXRvci0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSkgeworICAgICAgICAgICAgICAgIERvdEFjY2Vzc29yTm9kZSogZG90QWNjZXNz
b3JOb2RlID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oYmFzZUl0ZXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICBuYW1lID0gZG90QWNjZXNzb3JOb2RlLT5pZGVudGlmaWVyKCkudXN0cmlu
ZygpICsgZG90U3RyaW5nICsgbmFtZTsKKworICAgICAgICAgICAgICAgIGJhc2VJdGVyYXRvciA9
IGRvdEFjY2Vzc29yTm9kZS0+YmFzZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoYmFzZUl0ZXJhdG9yICYmIGJhc2VJdGVyYXRvci0+aXNSZXNvbHZlTm9kZSgpKSB7CisgICAg
ICAgICAgICAgICAgUmVzb2x2ZU5vZGUqIGNvbnN0IHJlc29sdmVOb2RlID0gc3RhdGljX2Nhc3Q8
UmVzb2x2ZU5vZGUqPihiYXNlSXRlcmF0b3IpOworICAgICAgICAgICAgICAgIG5hbWUgPSByZXNv
bHZlTm9kZS0+aWRlbnRpZmllcigpLnVzdHJpbmcoKSArIGRvdFN0cmluZyArIG5hbWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmNFeHByTm9kZS0+Ym9keSgpLT5zZXRDb250ZXh0
dWFsTmFtZShuYW1lKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlubGluZSBSZWFkTW9kaWZ5
RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiA0NTA2OSkKKysrIEphdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg2LDcgKzE1ODYsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBBU1NFUlQobV9jb2RlKTsKICAgICAgICAgICAgIHJldHVy
biAqbV9jb2RlOwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgc2V0Q29udGV4
dHVhbE5hbWUoY29uc3QgVVN0cmluZyYgbmFtZSkgeyBtX2NvbnRleHR1YWxOYW1lID0gbmFtZTsg
fQorICAgICAgICBVU3RyaW5nIGNvbnRleHR1YWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZXh0dWFsTmFtZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShK
U0dsb2JhbERhdGEqKTsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwpAQCAtMTU5Nyw2ICsxNjAwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgSWRlbnRpZmllciogbV9wYXJhbWV0
ZXJzOwogICAgICAgICBzaXplX3QgbV9wYXJhbWV0ZXJDb3VudDsKKyAgICAgICAgVVN0cmluZyBt
X2NvbnRleHR1YWxOYW1lOwogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2NvZGU7CiAgICAg
fTsKIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCShyZXZpc2lvbiA0
NTA2OSkKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMiw0ICsyMTIsMTQgQEAgSlNPYmplY3QqIEpTRnVuY3Rpb246OmNvbnN0cnVj
dChFeGVjU3RhdAogICAgIHJldHVybiBhc09iamVjdChyZXN1bHQpOwogfQogCitjb25zdCBVU3Ry
aW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgY29uc3QgVVN0cmluZyBjYWxjdWxhdGVkRGlzcGxheU5hbWUgPSBJbnRl
cm5hbEZ1bmN0aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoZ2xvYmFsRGF0YSk7CisKKyAgICBp
ZiAobV9ib2R5LmdldCgpICYmIGNhbGN1bGF0ZWREaXNwbGF5TmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBtX2JvZHktPmNvbnRleHR1YWxOYW1lKCk7CisgICAgCisgICAgcmV0dXJuIGNh
bGN1bGF0ZWREaXNwbGF5TmFtZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gNDUwNjkpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29u
c3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0
Q2FsbERhdGEoQ2FsbERhdGEmKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IFVTdHJpbmcgY2Fs
Y3VsYXRlZERpc3BsYXlOYW1lKEpTR2xvYmFsRGF0YSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZp
bmZvOyB9CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gNDUyNTkpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA2LTI2ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8
YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMjkK
KworICAgICAgICBQcm9wYWdhdGUgaWRlbnRpZmllciBmcm9tIEFzc2lnbkRvdE5vZGUsIAorICAg
ICAgICBQcm9wZXJ0eU5vZGUsIEFzc2lnblJlc29sdmVOb2RlIHRvIGFub255bW91cyBmdW5jdGlv
biBub2Rlcy4KKworICAgICAgICBUZXN0OiBmYXN0L3Byb2ZpbGVyL25hbWUtYW5vbnltb3VzLWZ1
bmN0aW9ucy5odG1sCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxl
QWxsSlNGdW5jdGlvbnMpOgorCiAyMDA5LTA2LTI2ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bi56
aGFuZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4
OiBXZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAJKHJldmlzaW9u
IDQ1MDY5KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgzLDYgKzU4Myw3IEBAIHZvaWQgSmF2YVNjcmlwdERlYnVnU2Vy
dmVyOjpyZWNvbXBpbGVBbGwKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5ld0Jv
ZHkgPSBnbG9iYWxEYXRhLT5wYXJzZXItPnBhcnNlPEZ1bmN0aW9uQm9keU5vZGU+KGV4ZWMsIDAs
IHNvdXJjZUNvZGUpOwogICAgICAgICBBU1NFUlQobmV3Qm9keSk7CiAgICAgICAgIG5ld0JvZHkt
PmZpbmlzaFBhcnNpbmcob2xkQm9keS0+Y29weVBhcmFtZXRlcnMoKSwgb2xkQm9keS0+cGFyYW1l
dGVyQ291bnQoKSk7CisgICAgICAgIG5ld0JvZHktPnNldENvbnRleHR1YWxOYW1lKG9sZEJvZHkt
PmNvbnRleHR1YWxOYW1lKCkpOwogCiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kID0gbmV3
Qm9keTsKICAgICAgICAgZnVuY3Rpb24tPnNldEJvZHkobmV3Qm9keS5yZWxlYXNlKCkpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gNDUyNTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyNyBAQAorMjAwOS0wNi0yNiAgQWxleGFuZHJ1IENoaWN1bGl0YSAg
PGFjaGljdUBhZG9iZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjI5
CisKKyAgICAgICAgUHJvcGFnYXRlIGlkZW50aWZpZXIgZnJvbSBBc3NpZ25Eb3ROb2RlLCAKKyAg
ICAgICAgUHJvcGVydHlOb2RlLCBBc3NpZ25SZXNvbHZlTm9kZSB0byBhbm9ueW1vdXMgZnVuY3Rp
b24gbm9kZXMuCisgICAgICAgIAorICAgICAgICBDaGFuZ2VkIG9sZCB0ZXN0cyB0byBmb3JjZSB1
c2UgYW5vbnltb3VzIGZ1bmN0aW9ucy4gICAgICAgIAorCisgICAgICAgICogZmFzdC9wcm9maWxl
ci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9w
cm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sOgor
ICAgICAgICAqIGZhc3QvcHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3Vz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9u
LWNhbGxzLWFub255bW91cy5odG1sOgorICAgICAgICAqIGZhc3QvcHJvZmlsZXIvbmFtZS1hbm9u
eW1vdXMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9wcm9m
aWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWw6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9yZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanM6
CisgICAgICAgICh2YXIpOgorICAgICAgICAoKToKKwogMjAwOS0wNi0yNiAgWW9uZ2p1biBaaGFu
ZyAgPHlvbmdqdW4uemhhbmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQt
aGFuZGxlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9m
aWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ1MDY5
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZXZlbnQtaGFuZGxlci1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBAIFRocmVhZF8xIChubyBm
aWxlKSAobGluZSAwKQogICAgc3RhcnRUZXN0IGFub255bW91cy1ldmVudC1oYW5kbGVyLmh0bWwg
KGxpbmUgMTEpCiAgICAgICBnZXRFbGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMCkKICAgICAg
IGNsaWNrIChubyBmaWxlKSAobGluZSAwKQotICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikg
YW5vbnltb3VzLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAxNSkKKyAgICAgICAgIGJ1dHRvbldp
dGhBbm9ueW1vdXNIYW5kbGVyLm9uY2xpY2sgYW5vbnltb3VzLWV2ZW50LWhhbmRsZXIuaHRtbCAo
bGluZSAxNSkKICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNv
dXJjZXMuanMgKGxpbmUgMTcpCiAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxl
KSAobGluZSAwKQogICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5l
IDApCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1j
YWxscy1ldmFsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3By
b2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlv
bi1jYWxscy1ldmFsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAg
VG8gcnVuIHRoaXMgdGVzdCBtYW51YWxseSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0aXRsZTog
QW5vbnltb3VzIGZ1bmN0aW9uIGNhbGxlcyBldmFsCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUg
MCkKICAgIHN0YXJ0VGVzdCBhbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZhbC5odG1sIChsaW5l
IDExKQorICAgICAgbWFrZUZ1bmN0aW9uQW5vbnltb3VzIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIChsaW5lIDEwNCkKICAgICAgIChhbm9ueW1vdXMgZnVuY3Rpb24pIGFub255bW91cy1m
dW5jdGlvbi1jYWxscy1ldmFsLmh0bWwgKGxpbmUgMTQpCiAgICAgICAgICBldmFsIChubyBmaWxl
KSAobGluZSAwKQogICAgICAgICAgICAgKHByb2dyYW0pIChubyBmaWxlKSAobGluZSAxKQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9hbm9ueW1vdXMtZnVuY3Rpb24tY2FsbHMtZXZh
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYW5vbnltb3Vz
LWZ1bmN0aW9uLWNhbGxzLWV2YWwuaHRtbAkocmV2aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3Byb2ZpbGVyL2Fub255bW91cy1mdW5jdGlvbi1jYWxscy1ldmFsLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTExLDkgKzExLDkgQEAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKIHsKICAgICBj
b25zb2xlLnByb2ZpbGUoIkFub255bW91cyBmdW5jdGlvbiBjYWxsZXMgZXZhbCIpOwogCi0gICAg
dmFyIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbiA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVuY3Rpb24gPSBtYWtl
RnVuY3Rpb25Bbm9ueW1vdXMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGV2YWwoImluc2VydE5ld1Rl
eHQoKSIpOwotICAgIH0KKyAgICB9KTsKIAogICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9u
eW1vdXNGdW5jdGlvbigpOwogICAgIGVuZFRlc3QoKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvYnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9u
LWNhbGxzLWFub255bW91cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDQ1MDY5KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQCBUbyBydW4gdGhpcyB0ZXN0
IG1hbnVhbGx5LCBsb2FkIGl0IGluIHRoCiBQcm9maWxlIHRpdGxlOiBCdWlsdC1pbiBmdW5jdGlv
biBjYWxscyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAw
KQogICAgc3RhcnRUZXN0IGJ1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91cy5odG1sIChs
aW5lIDExKQorICAgICAgbWFrZUZ1bmN0aW9uQW5vbnltb3VzIHByb2ZpbGVyLXRlc3QtSlMtcmVz
b3VyY2VzLmpzIChsaW5lIDEwNCkKICAgICAgIEFycmF5IChubyBmaWxlKSAobGluZSAwKQogICAg
ICAgbWFwIChubyBmaWxlKSAobGluZSAwKQogICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikg
YnVpbHQtaW4tZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwgKGxpbmUgMTQpCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2J1aWx0LWluLWZ1bmN0aW9uLWNhbGxzLWFub255bW91
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvYnVpbHQtaW4t
ZnVuY3Rpb24tY2FsbHMtYW5vbnltb3VzLmh0bWwJKHJldmlzaW9uIDQ1MDY5KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9wcm9maWxlci9idWlsdC1pbi1mdW5jdGlvbi1jYWxscy1hbm9ueW1vdXMuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMTEsOSArMTEsOSBAQCBmdW5jdGlvbiBzdGFydFRlc3QoKQog
ewogICAgIGNvbnNvbGUucHJvZmlsZSgiQnVpbHQtaW4gZnVuY3Rpb24gY2FsbHMgYW4gYW5vbnlt
b3VzIGZ1bmN0aW9uIik7CiAKLSAgICB2YXIgbXlGdW5jdGlvbiA9IGZ1bmN0aW9uKGFycmF5RWxl
bWVudCkgeworICAgIHZhciBteUZ1bmN0aW9uID0gbWFrZUZ1bmN0aW9uQW5vbnltb3VzKGZ1bmN0
aW9uKGFycmF5RWxlbWVudCkgewogICAgICAgICByZXR1cm4gYXJyYXlPcGVyYXRvckZ1bmN0aW9u
KGFycmF5RWxlbWVudCk7Ci0gICAgfQorICAgIH0pOwogCiAgICAgdmFyIG15QXJyYXkgPSBuZXcg
QXJyYXkgKDAsIDEsIDIpOwogICAgIG15QXJyYXkubWFwKG15RnVuY3Rpb24pOwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1v
dXMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2OSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiBhbm9uRnVu
YzAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNTogYW5vbkZ1bmMxCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgMjc6IGFub25GdW5jMgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMxOiBhbm9uRnVuYzMK
K0NPTlNPTEUgTUVTU0FHRTogbGluZSAzNDogYW5vbkZ1bmM0CitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMzc6IGFub25GdW5jNQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDQyOiBhbm9uRnVuYzYKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA0NTogYW5vbkZ1bmM3CitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
NDk6IGFub25DbGFzczgKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA1MDogYW5vbkZ1bmM5CitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNTQ6IG5vbkFub255bW91c0NsYXNzMTAKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA1NjogYW5vbkZ1bmMxMQorVGhpcyBwYWdlJ3MgSmF2YVNjcmlwdCBjYWxscyBhbiBh
bm9ueW1vdXMgZnVuY3Rpb24gZnJvbSBkaWZmZXJlbnQgY29udGV4dHMuIAorCitUbyB1c2UgdGhp
cyB0ZXN0LCBsb2FkIGl0IGluIHRoZSBicm93c2VyIHRoZW4gbG9hZCB0aGUgV2ViSW5zcGVjdG9y
IGFuZCBsb29rIGF0IHRoZSBwcm9maWxlLiBCZW5lYXRoIG9ubG9hZCBhbmQgc3RhcnRUZXN0IGl0
IHNob3VsZCBzaG93IHRocmVlIGNoaWxkcmVuLCBhbiBhbm9ueW1vdXMgZnVuY3Rpb24sIHNjcmlw
dCBjb250ZXh0LCBhbmQgdGhlIGVuZFRlc3QgY2FsbC4KKworUHJvZmlsZSB0aXRsZTogQXMgbWFu
eSBkaWZmZXJlbnQgd2F5cyB3ZSBjYW4gdGhpbmsgb2YgdG8gbmFtZSBhbiBhbm9ueW1vdXMgZnVu
Y3Rpb24uCitUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMCkKKyAgIHN0YXJ0VGVzdCBuYW1lLWFu
b255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSAxMSkKKyAgICAgIChhbm9ueW1vdXMgZnVuY3Rp
b24pIHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDI5KQorICAgICAgICAgaW5z
ZXJ0TmV3VGV4dCBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNykKKyAgICAg
ICAgICAgIGNyZWF0ZUVsZW1lbnQgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAgICAgICBjcmVh
dGVUZXh0Tm9kZSAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgICAgICAgIGFwcGVuZENoaWxkIChu
byBmaWxlKSAobGluZSAwKQorICAgICAgICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChs
aW5lIDApCisgICAgICBldmFsIChubyBmaWxlKSAobGluZSAwKQorICAgICAgICAgKHByb2dyYW0p
IChubyBmaWxlKSAobGluZSAxKQorICAgICAgICAgICAgKGFub255bW91cyBmdW5jdGlvbikgcHJv
ZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMjkpCisgICAgICAgICAgICAgICBpbnNl
cnROZXdUZXh0IHByb2ZpbGVyLXRlc3QtSlMtcmVzb3VyY2VzLmpzIChsaW5lIDE3KQorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRWxlbWVudCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVRleHROb2RlIChubyBmaWxlKSAobGluZSAwKQorICAgICAgICAgICAgICAg
ICAgYXBwZW5kQ2hpbGQgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAgICAgICAgICAgICBnZXRF
bGVtZW50QnlJZCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIHZhcmlhYmxlVGhhdFBvaW50c1Rv
QW5Bbm9ueW1vdXNGdW5jdGlvbiBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSAx
NykKKyAgICAgICAgIGV2YWwgKG5vIGZpbGUpIChsaW5lIDApCisgICAgICAgICAgICAocHJvZ3Jh
bSkgKG5vIGZpbGUpIChsaW5lIDEpCisgICAgICAgICAgICAgICAoYW5vbnltb3VzIGZ1bmN0aW9u
KSBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAyOSkKKyAgICAgICAgICAgICAg
ICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTcp
CisgICAgICAgICAgICAgICAgICAgICBjcmVhdGVFbGVtZW50IChubyBmaWxlKSAobGluZSAwKQor
ICAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGV4dE5vZGUgKG5vIGZpbGUpIChsaW5lIDApCisg
ICAgICAgICAgICAgICAgICAgICBhcHBlbmRDaGlsZCAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAg
ICAgICAgICAgICAgICAgIGdldEVsZW1lbnRCeUlkIChubyBmaWxlKSAobGluZSAwKQorICAgICAg
YW5vbkZ1bmMwIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDIzKQorICAgICAg
ICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgbXlPYmplY3QuYW5vbkZ1bmMxIG5hbWUt
YW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDI1KQorICAgICAgICAgbG9nIChubyBmaWxl
KSAobGluZSAwKQorICAgICAgYW5vbkZ1bmMyIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1s
IChsaW5lIDI3KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1
bmMzIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDMxKQorICAgICAgICAgbG9n
IChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmM0IG5hbWUtYW5vbnltb3VzLWZ1bmN0
aW9ucy5odG1sIChsaW5lIDM0KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAg
ICAgbXlPYmplY3QuYW5vbkZ1bmM1IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5l
IDM3KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmM2IG5h
bWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChsaW5lIDQyKQorICAgICAgICAgbG9nIChubyBm
aWxlKSAobGluZSAwKQorICAgICAgYW5vbkZ1bmM3IG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5o
dG1sIChsaW5lIDQ1KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgYW5v
bkNsYXNzOCBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSA0OSkKKyAgICAgICAg
IGxvZyAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIGFub25DbGFzczgucHJvdG90eXBlLmFub25G
dW5jOSBuYW1lLWFub255bW91cy1mdW5jdGlvbnMuaHRtbCAobGluZSA1MCkKKyAgICAgICAgIGxv
ZyAobm8gZmlsZSkgKGxpbmUgMCkKKyAgICAgIG5vbkFub255bW91c0NsYXNzMTAgbmFtZS1hbm9u
eW1vdXMtZnVuY3Rpb25zLmh0bWwgKGxpbmUgNTQpCisgICAgICAgICBsb2cgKG5vIGZpbGUpIChs
aW5lIDApCisgICAgICBhbm9uRnVuYzExIG5hbWUtYW5vbnltb3VzLWZ1bmN0aW9ucy5odG1sIChs
aW5lIDU2KQorICAgICAgICAgbG9nIChubyBmaWxlKSAobGluZSAwKQorICAgICAgZW5kVGVzdCBw
cm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxKQorCisKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9ueW1vdXMtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uYW1lLWFub255bW91cy1mdW5jdGlvbnMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmFtZS1hbm9u
eW1vdXMtZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Byb2ZpbGVyLXRlc3QtSlMtcmVzb3Vy
Y2VzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLnNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKHRydWUpOworfQor
CitmdW5jdGlvbiBzdGFydFRlc3QoKQoreworICAgIGNvbnNvbGUucHJvZmlsZSgiQXMgbWFueSBk
aWZmZXJlbnQgd2F5cyB3ZSBjYW4gdGhpbmsgb2YgdG8gbmFtZSBhbiBhbm9ueW1vdXMgZnVuY3Rp
b24uIik7CisKKyAgICBhbm9ueW1vdXNGdW5jdGlvbigpOworICAgIGV2YWwoImFub255bW91c0Z1
bmN0aW9uKCkiKTsKKworICAgIHZhciB2YXJpYWJsZVRoYXRQb2ludHNUb0FuQW5vbnltb3VzRnVu
Y3Rpb24gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgZXZhbCgiYW5vbnltb3VzRnVuY3Rpb24oKSIp
OworICAgIH0KKworICAgIHZhcmlhYmxlVGhhdFBvaW50c1RvQW5Bbm9ueW1vdXNGdW5jdGlvbigp
OworCisgICAgdmFyIG15T2JqZWN0ID0geyBhbm9uRnVuYzA6ZnVuY3Rpb24oKSB7IGNvbnNvbGUu
bG9nKCdhbm9uRnVuYzAnKTsgfSB9OworICAgIG15T2JqZWN0LmFub25GdW5jMCgpOworICAgIG15
T2JqZWN0LmFub25GdW5jMSA9IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmMxJyk7
IH07CisgICAgbXlPYmplY3QuYW5vbkZ1bmMxKCk7CisgICAgdmFyIGFub25GdW5jMiA9IGZ1bmN0
aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmMyJyk7IH07CisgICAgbXlPYmplY3QuYW5vbkZ1
bmMyQWxpYXMgPSBhbm9uRnVuYzI7CisgICAgbXlPYmplY3QuYW5vbkZ1bmMyQWxpYXMoKTsKKwor
ICAgIHZhciBhbm9uRnVuYzMgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2Fub25GdW5jMycp
OyB9OworICAgIGFub25GdW5jMygpOworCisgICAgdGhpcy5hbm9uRnVuYzQgPSBmdW5jdGlvbigp
IHsgY29uc29sZS5sb2coJ2Fub25GdW5jNCcpOyB9OworICAgIHRoaXMuYW5vbkZ1bmM0KCk7CisK
KyAgICBteU9iamVjdC5hbm9uRnVuYzUgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2Fub25G
dW5jNScpOyB9OworICAgIHZhciBteU90aGVyT2JqZWN0ID0ge307CisgICAgbXlPdGhlck9iamVj
dC5hbm9uRnVuYzVBbGlhcyA9IG15T2JqZWN0LmFub25GdW5jNTsKKyAgICBteU90aGVyT2JqZWN0
LmFub25GdW5jNUFsaWFzKCk7CisKKyAgICB0aGlzLmFub25GdW5jNiA9IGZ1bmN0aW9uKCkgeyBj
b25zb2xlLmxvZygnYW5vbkZ1bmM2Jyk7IH07CisgICAgdGhpcy5hbm9uRnVuYzYoKTsKKyAgICAK
KyAgICB0aGlzLmFub25GdW5jNyA9IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYW5vbkZ1bmM3
Jyk7IH07CisgICAgdmFyIGFub25GdW5jN0FsaWFzID0gdGhpcy5hbm9uRnVuYzc7CisgICAgYW5v
bkZ1bmM3QWxpYXMoKTsKKworICAgIHZhciBhbm9uQ2xhc3M4ID0gZnVuY3Rpb24oKSB7IGNvbnNv
bGUubG9nKCdhbm9uQ2xhc3M4Jyk7IH07CisgICAgYW5vbkNsYXNzOC5wcm90b3R5cGUuYW5vbkZ1
bmM5ID0gZnVuY3Rpb24oKXsgY29uc29sZS5sb2coJ2Fub25GdW5jOScpOyB9CisgICAgdmFyIGFu
b25PYmplY3Q4ID0gbmV3IGFub25DbGFzczgoKTsKKyAgICBhbm9uT2JqZWN0OC5hbm9uRnVuYzko
KTsKKworICAgIGZ1bmN0aW9uIG5vbkFub255bW91c0NsYXNzMTAoKXsgY29uc29sZS5sb2coJ25v
bkFub255bW91c0NsYXNzMTAnKTsgfQorICAgIG5vbkFub255bW91c0NsYXNzMTAucHJvdG90eXBl
ID0geworICAgICAgICBhbm9uRnVuYzExOiBmdW5jdGlvbigpeyBjb25zb2xlLmxvZygnYW5vbkZ1
bmMxMScpOyB9CisgICAgfTsKKyAgICB2YXIgbm9uQW5vbnltb3VzT2JqZWN0MTAgPSBuZXcgbm9u
QW5vbnltb3VzQ2xhc3MxMCgpOworICAgIG5vbkFub255bW91c09iamVjdDEwLmFub25GdW5jMTEo
KTsKKworICAgIGVuZFRlc3QoKTsKKworfQorCis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkg
b25sb2FkPSJzdGFydFRlc3QoKSI+CitUaGlzIHBhZ2UncyBKYXZhU2NyaXB0IGNhbGxzIGFuIGFu
b255bW91cyBmdW5jdGlvbiBmcm9tIGRpZmZlcmVudCBjb250ZXh0cy4KKzxicj4KKzxicj4KK1Rv
IHVzZSB0aGlzIHRlc3QsIGxvYWQgaXQgaW4gdGhlIGJyb3dzZXIgdGhlbiBsb2FkIHRoZSBXZWJJ
bnNwZWN0b3IgYW5kIGxvb2sgYXQKK3RoZSBwcm9maWxlLiAgQmVuZWF0aCBvbmxvYWQgYW5kIHN0
YXJ0VGVzdCBpdCBzaG91bGQgc2hvdyB0aHJlZSBjaGlsZHJlbiwgYW4KK2Fub255bW91cyBmdW5j
dGlvbiwgc2NyaXB0IGNvbnRleHQsIGFuZCB0aGUgZW5kVGVzdCBjYWxsLgorPGRpdiBpZD0ib3V0
cHV0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1vdXMtZnVuY3Rv
bi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9u
ZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NTA2OSkKKysr
IExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5jdG9uLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgVG8gcnVuIHRoaXMgdGVzdCBt
YW51YWxseSwgbG9hZCBpdCBpbiB0aAogUHJvZmlsZSB0aXRsZTogTmVzdGVkIGFub255bW91cyBm
dW5jdGlvbnMgY2FsbGVkCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMCkKICAgIHN0YXJ0VGVz
dCBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAobGluZSAxMSkKKyAgICAgIG1ha2VGdW5j
dGlvbkFub255bW91cyBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxMDQpCiAg
ICAgICAoYW5vbnltb3VzIGZ1bmN0aW9uKSBuZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbCAo
bGluZSAxNCkKICAgICAgICAgIChhbm9ueW1vdXMgZnVuY3Rpb24pIHByb2ZpbGVyLXRlc3QtSlMt
cmVzb3VyY2VzLmpzIChsaW5lIDI5KQogICAgICAgICAgICAgaW5zZXJ0TmV3VGV4dCBwcm9maWxl
ci10ZXN0LUpTLXJlc291cmNlcy5qcyAobGluZSAxNykKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cHJvZmlsZXIvbmVzdGVkLWFub255bW91cy1mdW5jdG9uLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wcm9maWxlci9uZXN0ZWQtYW5vbnltb3VzLWZ1bmN0b24uaHRtbAkocmV2
aXNpb24gNDUwNjkpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL25lc3RlZC1hbm9ueW1v
dXMtZnVuY3Rvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw5ICsxMSw5IEBAIGZ1bmN0aW9u
IHN0YXJ0VGVzdCgpCiB7CiAgICAgY29uc29sZS5wcm9maWxlKCJOZXN0ZWQgYW5vbnltb3VzIGZ1
bmN0aW9ucyBjYWxsZWQiKTsKIAotICAgIHZhciBBbm9ueW1vdXNGdW5jdGlvbldpY2hDYWxsc0Fu
QW5vbnltb3VzRnVuY3Rpb24gPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgQW5vbnltb3VzRnVuY3Rp
b25XaWNoQ2FsbHNBbkFub255bW91c0Z1bmN0aW9uID0gbWFrZUZ1bmN0aW9uQW5vbnltb3VzKGZ1
bmN0aW9uKCkgewogICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbigpOwotICAgIH0KKyAgICB9KTsK
IAogICAgIEFub255bW91c0Z1bmN0aW9uV2ljaENhbGxzQW5Bbm9ueW1vdXNGdW5jdGlvbigpOwog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0
LUpTLXJlc291cmNlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwkocmV2aXNpb24gNDUwNjkp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpT
LXJlc291cmNlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQCBmdW5jdGlvbiBh
cnJheU9wZXJhdG9yRnVuY3Rpb24oYXJyYXlFbGVtCiAgICAgcmV0dXJuIGFycmF5RWxlbWVudCAr
IDU7CiB9CiAKLXZhciBhbm9ueW1vdXNGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgaW5zZXJ0TmV3
VGV4dCgpOyB9OwotdmFyIGFub3RoZXJBbm9ueW1vdXNGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsg
aW5zZXJ0R2l2ZW5UZXh0KCJBbm90aGVyIGFub255bW91cyBmdW5jdGlvbiB3YXMgY2FsbGVkLiIp
IH07Cit2YXIgYW5vbnltb3VzRnVuY3Rpb24gPSBtYWtlRnVuY3Rpb25Bbm9ueW1vdXMoZnVuY3Rp
b24gKCkgeyBpbnNlcnROZXdUZXh0KCk7IH0pOwordmFyIGFub3RoZXJBbm9ueW1vdXNGdW5jdGlv
biA9IG1ha2VGdW5jdGlvbkFub255bW91cyhmdW5jdGlvbiAoKSB7IGluc2VydEdpdmVuVGV4dCgi
QW5vdGhlciBhbm9ueW1vdXMgZnVuY3Rpb24gd2FzIGNhbGxlZC4iKSB9KTsKIAogZnVuY3Rpb24g
aW50ZXJtZWRpYXJ5RnVuY3Rpb24oKQogewpAQCAtOTksMyArOTksOCBAQCBmdW5jdGlvbiBwcmlu
dFByb2ZpbGVOb2RlV2l0aG91dFRpbWUocHJlCiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGls
ZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgcHJpbnRQcm9maWxlTm9kZVdpdGhvdXRUaW1lKHBy
ZUVsZW1lbnQsIGNoaWxkcmVuW2ldLCBpbmRlbnRMZXZlbCk7CiB9CisKK2Z1bmN0aW9uIG1ha2VG
dW5jdGlvbkFub255bW91cyhmKQoreworICAgIHJldHVybiBmOworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>