In Test/System:
[mono.git] / mcs / class / System / System / ChangeLog
1 2008-01-23  Robert Jordan  <robertj@gmx.net>
2
3         * Uri.cs (Parse): Handle uriString.Length == 1 as a valid relative URI.
4         Fixes #346432.
5
6 2007-12-04  Arina Itkes <arinai@mainsoft.com>
7
8         * Uri.cs: Unix absolute path should not be valid on Windows.
9
10 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11
12         * UriIdnScope.cs: Compile this in the 2.0 profile as well as this is a NET 3.5 type.
13
14 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
15
16         * Uri.cs: Revert monodoc hack from r53093 since bug #319550 (old
17         #76725) has been fixed (around 2006-05-21).
18
19 2007-11-06  Gert Driesen  <drieseng@users.sourceforge.net>
20
21         * UriBuilder.cs: Fixed regression introduced by patch for bug
22         #323247: always initialize UriBuilder.Query to zero-length string.
23         On 2.0 profile, do not initialize query to zero-length string when
24         Fragment is set. Remove extra tabs.
25
26 2007-11-04  Jensen Somers <jensen.somers@gmail.com>
27
28         * UriBuilder.cs (ToString): Added Fragment property to the
29         return string.
30         
31         (Fragment, Query): Properties are no longer set to an empty
32         string from version 2.0 and up.
33
34 2007-11-02  Miguel de Icaza  <miguel@novell.com>
35
36         * Uri.cs (AppendQueryAndFragment): Unescape the query with
37         excludeSpecial = false.  See bug #320614.
38
39         Unlike the patch on that bug, this only unescapes the query and
40         not the Path.   This keeps our existing tests working. 
41
42 2007-09-29  Miguel de Icaza  <miguel@novell.com>
43
44         * Uri.cs (ToString, MakeRelativeUri): refactor some code in
45         ToString to be reusable (to append the query string and the
46         fragment) by MakeRelativeUrl.
47
48         This fixes the MakeRelativeUrl stuff, but the tests can not be
49         used just yet because we fail with stuff like: 
50
51                 new Uri ("", UriKind.Relative)
52
53         (Parse): when parsing absolute filenames, check if the
54         UriKind is Relative, and if so, make the isAbsoluteUri false, to
55         ensure that the upper layers do not abort with relative Uris that
56         happen to be "/foo" for example.
57
58         Take an UriKind property to allow for proper checking and parsing
59         depending on the context requested by the caller. 
60
61         Allows empty strings to be relative Uris as well.
62
63         Do checking when we have schema:// that the parsing is not for a
64         UriKind.Relative, otherwise throw an exception. 
65
66         (Authority, HostNameType, IsDefaultPort, IsFile, IsLoopback,
67         PathAndQuery, DnsSafeHost): They all require absolute uris.
68
69         * UriKind.cs: make internal for 1.0
70         
71 2007-09-05  Marek Habersack  <mhabersack@novell.com>
72
73         * UriTypeConverter.cs: conversion from string should be possible
74         for both relative and absolute URIs.
75         Conversion to a string or an InstanceDescriptor must not assume
76         that the uri is absolute.
77         ConvertTo must pass the uri kind to the constructor used in
78         InstanceDescriptor.
79
80 2007-08-01  Atsushi Enomoto  <atsushi@ximian.com>
81
82         * Uri.cs, UriParser.cs : implemented InitializeAndValidate() and
83           IsWellFormedOriginalString().
84           IsWellFormedUriString() is already implemented.
85
86 2007-07-06  Alan McGovern  <amcgovern@novell.com>
87
88         * Uri.cs : The URI string should be whitespace trimmed before
89         parsing. The original string is untouched. Fixes #81960.
90
91 2007-07-06  Atsushi Enomoto  <atsushi@ximian.com>
92
93         * UriIdnScope.cs : new file (for net_2_1 profile).
94
95 2007-06-30  Miguel de Icaza  <miguel@novell.com>
96
97         * Uri.cs (GetLeftPart): If the URI is relative this method throws
98         InvalidOperationException. 
99
100         (ToString): do not use GetLeftPart here, instead escape the path. 
101
102         (Parse): For relative uris, keep the string as the path.
103
104 2007-06-30  Gert Driesen  <drieseng@users.sourceforge.net>
105
106         * Uri.cs: Canonicalize is only obsolete from 2.0 onward. Fixed line
107         endings.
108
109 2007-04-18  Igor Zelmanovich  <igorz@mainsoft.com>
110
111         * Uri.cs: added MonoNotSupported attributes.
112
113 2007-04-16  Atsushi Enomoto  <atsushi@ximian.com>
114
115         * Uri.cs : in Uri(baseUri,relativeUri,noEscape), relativeUri could
116           contain a URI scheme. In such cases the relativeUri could be still
117           relative (i.e. not always equivalent to absolute). Fixed bug #81382.
118
119 2007-03-05  Peter Dettman  <peter.dettman@iinet.net.au>
120
121         * Uri.cs: This patch straightens out Equals/GetHashCode for the
122         Uri class: 
123
124         - GetHashCode gives sensible values for relative Uri's.
125         - Uri's that compare equal will give same hashcode.  
126         - operator == now uses Equals.
127
128         All existing tests still pass, and I have added some extra test
129         cases specifically for Equals/GetHashCode on relative Uri's
130         (included in patch).
131
132 2007-01-22  Miguel de Icaza  <miguel@novell.com>
133
134         * Uri.cs (MakeRelativeUri): implement, copy most of the code from
135         MakeRelative. 
136         
137         (EscapeUriString, EscapeDataString): Implement stuff
138         needed by apps in Moma.
139
140 2006-12-07  Vladimir Krasnov  <vladimirk@mainsoft.com>
141
142         * Uri.cs: implemented UnescapeDataString method
143
144 2006-09-28  Andrew Skiba  <andrews@mainsoft.com>
145
146         * UriParser.cs: TARGET_JVM
147         * UriFormatException.cs: MonoTODO
148
149 2006-08-01  Atsushi Enomoto  <atsushi@ximian.com>
150
151         * Uri.cs : don't compare UserInfo in Equals() and op_Equality().
152           Fixed a bug commented in #78799.
153
154 2006-07-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
155
156         * Uri.cs: update Obsolete msg.
157
158 2006-06-05  Atsushi Enomoto  <atsushi@ximian.com>
159
160         * Uri.cs : revert the previous change as it caused UriTest.
161           Constructors(#rel2a). ToString() for SourceString should be
162           enough for lame users.
163
164 2006-05-13  Atsushi Enomoto  <atsushi@ximian.com>
165
166         * Uri.cs : sometimes OriginalString was null. Fixed bug #78374.
167           Actually this property is LAMESPEC. Never use it.
168
169 2006-04-28  Atsushi Enomoto  <atsushi@ximian.com>
170
171         * Uri.cs : Patch by pawel.sakowski@mind-breeze.com (bug #77382).
172           Reduce object allocation and avoid culture-sensitive comparison.
173
174 2006-03-11  Miguel de Icaza  <miguel@novell.com>
175
176         * Uri.cs: Pragma disable warning 612 (Obsolete methods are being
177         used by us internally).
178
179         Ponder: should we instead move our methods to use new versions of
180         the Obsoleted ones?
181
182 2006-02-21  Atsushi Enomoto  <atsushi@ximian.com>
183
184         * Uri.cs : seems like Uri opreator == and != are case sensitive.
185
186 2006-02-19  Raja R Harinath  <harinath@gmail.com>
187
188         * Uri.cs (InternalEquals): New helper.
189         (Equals, operator ==): Use it.
190         (operator !=): Likewise.  Fix to actually compare operands.
191
192 2006-02-14  Atsushi Enomoto  <atsushi@ximian.com>
193
194         * Uri.cs : implemented op_Equality and op_Inequality.
195
196 2006-02-14  Ankit Jain  <jankit@novell.com>
197
198         * Uri.cs (Uri.EnsureAbsoluteUri): New. Throws exception if its not an
199         absolute uri.
200         (Uri.Parse): Set isAbsoluteUri to false, if the address is not absolute.
201         All properties other than OriginalString, IsAbsoluteUri & UserEscaped
202         throw exception for relative address.
203
204 2005-11-25  Sebastien Pouliot  <sebastien@ximian.com> 
205
206         * DefaultUriParser.cs: Added an internal default parser because (a)
207         UriParser is abstract and (b) MS doesn't always use the new parser
208         classes :(
209         * Uri.cs: Implemented Compare method. Added some FIXME.
210         * UriParser.cs: Implemented GetComponents and IsBaseOf methods. 
211         Changed parsers to point to the new DefaultUriParser.
212
213 2005-11-15  Sebastien Pouliot  <sebastien@ximian.com> 
214  
215         * Uri.cs: Temporary fix for monodoc (which current Uri system won't
216         work under 2.0).
217
218 2005-11-15  Sebastien Pouliot  <sebastien@ximian.com>
219
220         * FileStyleUriParser.cs: New. 2.0 Uri parser class.
221         * FtpStyleUriParser.cs: New. 2.0 Uri parser class.
222         * GenericUriParser.cs: New. 2.0 Uri parser class.
223         * GopherStyleUriParser.cs: New. 2.0 Uri parser class.
224         * HttpStyleUriParser.cs: New. 2.0 Uri parser class.
225         * LdapStyleUriParser.cs: New. 2.0 Uri parser class.
226         * NetPipeStyleUriParser.cs: New. 2.0 Uri parser class.
227         * NetTcpStyleUriParser.cs: New. 2.0 Uri parser class.
228         * NewsStyleUriParser.cs: New. 2.0 Uri parser class.
229         * Uri.cs: Lots of small fixes for both 1.x and 2.0. Some *big* bugs
230         in 1.x (fixed in 2.0) aren't fixed for Mono (and probably never will).
231         This class still needs to be refactored to be usable with the new
232         parsers.
233         * UriParser.cs: New. 2.0 Uri parser base class.
234
235 2005-11-14  Atsushi Enomoto  <atsushi@ximian.com>
236
237         * Uri.cs : Unescape(string,bool) should also handle % and ?.
238           In ToString(), unescape query part as well. Fixed bug #76643.
239
240 2005-10-21  Atsushi Enomoto  <atsushi@ximian.com>
241
242         * UriBuilder.cs : ToString() should not add duplicate '/' before path.
243           Fixed bug #76501. Patch by Hubert Fongarnand + modified a bit.
244
245 2005-10-18  Sebastien Pouliot  <sebastien@ximian.com>
246
247         * UriTypeConverter.cs: New. Implemented (2.0).
248
249 2005-10-17  Sebastien Pouliot  <sebastien@ximian.com>
250
251         * GenericUriParserOptions.cs: New. 2.0 enum.
252         * UriBuilder.cs: Port == -1 is valid (default) in 2.0. Default name
253         is "localhhost" (not loopback) in 2.0. Fixed case where the Password
254         property could be null (instead of String.Empty).
255         * UriComponents.cs: New. 2.0 enum.
256         * UriFormat.cs: New. 2.0 enum.
257         * UriFormatException.cs: Added comments about GetObjectData.
258         * UriKind.cs: New. 2.0 enum.
259         * UriPartial.cs: Added Query value for 2.0.
260
261 2005-08-16  Daniel Drake  <dsd@gentoo.org>
262
263         * Uri.cs: Various parsing fixes from bug #75144.
264
265 2005-07-09  Gert Driesen  <drieseng@users.sourceforge.net>
266
267         * Uri.cs: Modified fix for bug #71053 to match both MS.NET 1.x and
268         2.0 behaviour. Parse method is no longer used on MS.NET 2.0, marked 
269         obsolete.
270
271 2005-07-09  Gert Driesen  <drieseng@users.sourceforge.net>
272
273         * Uri.cs: in .NET 2.0, port number should be valid UInt16 instead of
274         UInt32. If outcome of parsing is -1, do not consider this to be the
275         default port.
276
277 2005-07-08  Daniel Drake  <dsd@gentoo.org>
278
279         * Uri.cs: Allow descent multiple times below root. Fixes bug #71053.
280
281 2005-07-02  Daniel Drake  <dsd@gentoo.org>
282
283         * Uri.cs: HexUnescape() should only work on single-byte escape
284         sequences, ala HexEscape(). However, we still want to handle multi-byte
285         sequences internally, so introduce a more correct implementation of
286         multi-byte unescaping, HexUnescapeMultiByte(). Fixes bug #74872.
287
288 2005-06-11 Gert Driesen <drieseng@users.sourceforge.net>
289
290         * Uri.cs: Domain address might have trailing period to indicate
291         that the domain name is fully qualified. Fixes bug #75230.
292
293 2005-06-02 Gert Driesen <drieseng@users.sourceforge.net>
294
295         * Uri.cs: throw UriFormatException if URI starts with colon.
296         Fixed bug #75124.
297
298 2005-05-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
299
300         * Uri.cs:
301         (EscapeString): no need to turn the string into a char[] when calling
302         GetBytes.
303
304 2005-03-20 Joshua Tauberer <tauberer@for.net>
305
306         * Uri.cs: Some pedantic changes to the text of a few exceptions.
307
308 2005-03-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
309
310         * Uri.cs: when unescaping in stages, handle the case when the next
311         substring is not a escaped sequence or the string ends. Fixes bug
312         #73316.
313
314 2005-01-20  Miguel de Icaza  <miguel@ximian.com>
315
316         * Uri.cs: Set the UriSchemNews port default to 119 as well.
317         Fixes bug #71050.
318
319         When dealing with fragments use the `dontEscape' flag passed to
320         the Uri constructor to decide whether the fragment must or must
321         not be escaped, fixes 71051.
322
323 2004-06-22  Atsushi Enomoto  <atsushi@ximian.com>
324
325         * Uri.cs : Such ctor arg string that starts with "//" should be 
326           regarded as a local file path that will be condensed to single "/",
327           so handle such path differently under Windows and under *nix.
328           Since '\\' is a valid path character on Unix, so we should not
329           replace it with '/' in LocalPath.
330
331 2004-06-17  Jackson Harper  <jackson@ximian.com>
332
333         * Uri.cs: Use invariant culture.
334         
335 2004-06-16  Atsushi Enomoto  <atsushi@ximian.com>
336
337         * Uri.cs : Fixed LocalPath. In that condition, path is always UNC.
338
339 2004-06-16  Atsushi Enomoto  <atsushi@ximian.com>
340
341         * Uri.cs : Reimplemented HexUnescape() (It was too broken to handle
342           multi-byte utf-8 characters.)
343
344 2004-06-11  Atsushi Enomoto  <atsushi@ximian.com>
345
346         * Uri.cs :
347           - We don't have to mind '\\'.
348           - Fixed bug #58301. When path starts with "///" and not more than
349             "////" and not "///*:", handle it as unix path and set Host as
350             empty string. In absolute path case, port should not be parsed
351             and LocalPath should start with '/'.
352           - Handle fragment in prior to path. 
353
354 2004-06-11  Atsushi Enomoto  <atsushi@ximian.com>
355
356         * Uri.cs : Handle Windows UNC. Now we could simplify Parse(). Don't
357           escape windows path twice. Check scheme name as defined in RFC2396.
358
359 2004-06-11  Atsushi Enomoto  <atsushi@ximian.com>
360
361         * Uri.cs : Reverted some changes. '#' should be handled when the input
362           string is NOT raw file path. So handle raw file paths differently.
363           (right now except for Windows UNC).
364           Cache LocalPath and don't compute every time.
365
366 2004-06-10  Atsushi Enomoto  <atsushi@ximian.com>
367
368         * Uri.cs : Don't escape '#' in file URI paths. This fixes bug #47691.
369           Some code simplification.
370
371 2004-06-09  Atsushi Enomoto  <atsushi@ximian.com>
372
373         * Uri.cs : 
374           - Now Parse() is properly implemented. If overriden, the overriding
375             Parse() is used _instead of_ this class's parsing logic.
376           - AbsoluteUri does not escape URI string at all.
377           - ToString() should unescape Query. But should not unescape fragment.
378             And all all parts should be unescaped individually to keep ? and #.
379           - In relative .ctor(), handle Windows UNC as an absolute file URI.
380           - In some cases, hosts and paths were not properly escaped in
381             relative .ctor().
382           - Removed unused isWindowsPath.
383           - Escape Query.
384         * UriBuilder.cs : Fragment and Query aren't escaped when they are set.
385
386 2004-05-12  Dick Porter  <dick@ximian.com>
387
388         * Uri.cs: Reduce(string) is not in the public API.
389
390 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
391
392         * UriBuilder.cs: ignore empty Query. Fixes bug #57082.
393
394 2004-03-21  Jackson Harper  <jackson@ximian.com>
395
396         * Uri.cs: Equals should be case insensitive for all parts except
397         the path.
398
399 2004-02-11  Jackson Harper  <jackson@ximian.com>
400
401         * Uri.cs: If we are sure we have a windows path use \ instead of
402         / for directory separating.
403         
404 2004-02-11  Jackson Harper  <jackson@ximian.com>
405
406         * Uri.cs: If the relative uri passed to Uri (base_uri,
407         relative_uri) is an absolute uri do not combine the uris. The base
408         uri is dropped.
409         
410 2004-02-10  Jackson Harper  <jackson@ximian.com>
411
412         * Uri.cs: Preserve the trailing / if there is one when reducing
413         paths.
414         
415 2004-02-08  Jackson Harper  <jackson@ximian.com>
416
417         * Uri.cs: IsLoopback has different behavoir then
418         IPAddress::IsLoopback. It will only return true for ipv4 addresses
419         if they are 127.0.0.1, localhost, or loopback. 
420         
421 2004-02-06  Jackson Harper  <jackson@ximian.com>
422
423         * Uri.cs: Do not escape querys or fragements. Only reduce certain
424         schemes.
425         
426 2004-02-06  Jackson Harper  <jackson@ximian.com>
427
428         * Uri.cs: Use UTF8 characters when escaping. Reduce paths. This
429         method is taken from System.Web.Utils.UrlUtils.
430         * UriBuilder.cs: Do not escape fragments or queries, but do a utf8
431         switch on them. Do not prepend a "/" to Paths. Do not use
432         IPEndPoint to determine if a port is valid, UriBuilder allows
433         ports to be any positive integer, IPEndPoint does not. Use the
434         ToString () method for generate a uri in get_Uri. Only set the
435         port in ToString () if it is greater then 0.
436         
437 2004-02-05  Jackson Harper  <jackson@ximian.com>
438
439         * UriBuilder.cs: Do not call Uri::ToString for uri builders
440         ToString. UriBuilder's ToString is a little more primitive.
441         
442 2004-01-12  Atsushi Enomoto  <atsushi@ximian.com>
443
444         * Uri.cs : should not escape already-escaped string (Patch by 
445           Boris Kirzner).  File LocalPath should unespace return value.
446           ToString() should be unescaped only when it is not an UNC path.
447           (UNC looks not to be unescaped).
448
449 2004-01-06  Atsushi Enomoto  <atsushi@ximian.com>
450
451         * Uri.cs : quick fix on local file relative uri.
452
453 2004-01-06  Atsushi Enomoto  <atsushi@ximian.com>
454
455         * Uri.cs : Fixed Parse(). Should not allow relative URIs.
456
457 2004-01-05  Atsushi Enomoto  <atsushi@ximian.com>
458
459         * Uri.cs : fixed IsBadFileSystemCharacter() to reject more characters
460           based on MS.NET experiment.
461
462 2003-12-08  Atsushi Enomoto  <atsushi@ximian.com>
463
464         * Uri.cs : more fixes. More presice UNC handling, opaque part 
465           handling for non-standard uri (e.g. urn:go-mono.com), ToString()
466           fix (that returns AbsoluteUri, which is not escaped any more),
467           and so on.
468
469 2003-12-08  Atsushi Enomoto  <atsushi@ximian.com>
470
471         * Uri.cs : Several fixes, including Unc problem, Host and LocalPath
472           fixes, null reference check for .ctor(Uri, string). This fixes
473           bug #51844.
474
475 2003-12-04  John Luke  <jluke@cfl.rr.com>
476         
477         * Uri.cs: applied patch from Chris Masters <neeeeeep@bigpond.com>
478         fixes bug #51510.  ftp uses port 21, https uses 443 and 
479         parse the host name properly for UNC path.
480         
481 2003-10-10  Pedro Martínez Juliá  <yoros@wanadoo.es>
482
483         * Uri.cs: fixed a problem with some URIs like file://some_file.txt
484         It used to return "/some_file.txt/" instead of "some_file.txt" in
485         LocalPath. Fix handling of full path files and SMB addresses.
486
487 2003-08-12  Duncan Mak  <duncan@ximian.com>
488
489         * Uri.cs (constructor): Properly implement RFC 2396, Par. 5.2,
490         part 6a, which says:
491         
492                 In other words, any characters after the last (right-most)
493                 slash character, if any, are excluded.
494
495         Previously, when merging "a://foo.com/foo" with "bar", we yield
496         the result "a://foo.com/foobar", instead of the correct
497         "a://foo.com/bar".
498
499         This fixes bug #45614.
500
501 2003-07-27  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
502
503         * SRDescriptionAttribute.cs: Moved from System.Diagnostics directory
504
505 2003-07-18  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
506
507         * Uri.cs: Added MonoTODO'd members, implemented member, fixed signature
508
509 2003-05-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
510
511         * TempFileCollection.cs: fixed the build under windows.
512         
513 2003-05-07  Ben Maurer <bmaurer@users.sourceforge.net>
514         * Uri.cs: Checked in code to fix bug #41998. Some
515         code from Ian MacLean.
516         
517 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
518
519         * Uri.cs: reworked Segment. Small fix in MakeRelative. Throw exception
520         in Parse when host length is 0 and the Uri is not a file.
521
522 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
523
524         * Uri.cs:
525         (CheckSchemeName): fixed bug #28549. Thanks to Eric Runquist.
526
527 2003-02-01  Miguel de Icaza  <miguel@ximian.com>
528
529         * Uri.cs (LocalPath): Local path should return un-escaped
530         strings.  Patch from tum@veridicus.com (Thong (Tum) Nguyen)
531
532 2002-09-16  Duncan Mak  <duncan@ximian.com>
533
534         * Uri.cs (GetObjectData):
535         (Uri): The key should be "AbsoluteUri", not "Uri".
536
537 2002-09-16  Miguel de Icaza  <miguel@ximian.com>
538
539         * Uri.cs: Implemented a few of the protected methods. 
540
541 Mon Jun 17 15:05:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
542
543         * Uri.cs: workaround for mcs bug.
544
545 2002-05-28  Lawrence Pit <loz@cable.a2000.nl>
546
547         * Uri.cs: Implemented ctor UriTest (baseUri, relativeUri)
548         * Uri.cs: Fixed bug in internal method GetSchemeDelimiter
549
550 2002-05-22  Lawrence Pit <loz@cable.a2000.nl>
551
552         * Uri.cs: implemented MakeRelative, improved GetLeftPart
553         * UriBuilder.cs: removed Serializable attribute
554         * UriHostNameType.cs: added Basic
555
556 2002-05-12  Lawrence Pit <loz@cable.a2000.nl>
557
558         * Uri.LocalPath and Uri.AbsoluteUri modified to support both w32 
559         and *nix filepaths
560
561 2002-05-09  Lawrence Pit <loz@cable.a2000.nl>
562
563         * Uri.GetLeftPart fixed for mailto and news schemes.
564
565 2002-05-05  Lawrence Pit <loz@cable.a2000.nl>
566
567         * UriBuilder.cs: Implemented.
568         
569         * Uri.cs: Complete new reimplementation. 
570
571 2002-02-08  Duncan Mak  <duncan@ximian.com>
572
573         * UriFormatException.cs: Removed TODO attribute, the docs are
574         probably wrong here. In any case, this code compiles and should work.
575
576 2002-01-31  Duncan Mak  <duncan@ximian.com>
577
578         * UriFormatException.cs: Added bits for serialization.
579
580 2002-01-05  Ravi Pratap  <ravi@ximian.com>
581
582         * ChangeLog : Add to this directory.
583
584         * Uri.cs, UriFormatException.cs : Decorate bits with MonoTODO attribute.