License Fees, Warranties & Disclaimers, Copyright and Trademarks

 By using Shoutcast.com, you agree to the following terms concerning usability and liability of Nullsoft, Inc. 
 
 Nullsoft, Inc. grants a revokable, no-charge license for use of Shoutcast Server for any use. 

 Unless explicitly stated in writing, Nullsoft, Inc. does not grant permission to distribute any of its software in any form, including but not limited to, electronic 
information service distribution, bulletin board distribution, and magnetic or optical medium distribution. 

 Nullsoft, Inc. is not responsible for any damage to the purchaser's computer system or data and in no event will Nullsoft, Inc., its officers, directors, employees or 
agents be responsible to the purchaser for any consequential, incidental, or indirect damages (including damages for loss of business profits, business interruption, loss 
of business information and the like) arising out of the use or inability to use the Nullsoft, Inc. products, or the Shoutcast.com server, even if Nullsoft, Inc. has been 
advised of the possibility of such damages. Because some states do not allow the exclusion or limitation of liability for consequential or incidental damages, the above 
limitations may not apply to you. 

 You can participate in Shoutcast.com broadcasts that we index on our sites, but please remember that Nullsoft does not create, endorse, or sponsor said broadcasts. If 
you download any third-party materials that we index or support, you do so completely at your own risk. If you plan to download any software, please be sure to read the 
copyright and licensing information first. 

 Nullsoft, Inc. is not responsible for the content of what is broadcast utilizing Shoutcast.com. Nullsoft, Inc. believes in the First Amendment to the US Constitution and 
will not review or censor any broadcast. Those who listen to any broadcast listed or served herein assume all risk of being offended or suffering any other form of 
damage. 

 "Winamp," "Nitrane," "Shoutcast" are Copyright ) 1998-2002 by Nullsoft, Inc. 

 Among the trademarks and service marks owned by Nullsoft, Inc. are Nullsoft, the Nullsoft logo, Winamp, winamp.com, Nitrane, Shoutcast.com, the respective logos of the 
sites and the curious Winamp motto, "Winamp, it really whips the llama's ass!" 

 The "look" and "feel" of our sites also are Nullsoft trademarks. This includes our color combinations, button shapes, layout, and all other graphical elements.
