News | Mail Archive | OS Software Downloads Ad Info ::
Subject: Databases | Java | Linux | Open Source | XML | Data | Tech

 Remember me

 Become a Member!
 Login Problems?

Recently Updated Mail Archives
NameLast Updated
Popular Mail Lists: Daily Proxies VPN OpenStack Hadoop nginx modpagespeed Android windows linux solaris osx ubuntu fedora enterprise crm ruby python java xml perl php cvs subversion version contol db
database mysql postgresql mobile telephony voip apple apache
sitemap (mail)

Posted Jan 05, 2005

Open Source Alternatives to Dreamweaver Templating

by Mark Stosberg

If you have at least two pages on a website you maintain, you can benefit from a tool to help manage the design and content independently. The best tool I've seen for this is Macromedia's commercial Dreamweaver software, available for Macintosh and Windows. The key thing that Dreamweaver gets right is its use of templates.

As an open source enthusiast and Linux desktop user, I went in search of a free, open source alternative. This article explains the value of Dreamweaver's template system, and presents the results of my search.

Dreamweaver Templates: The Killer Feature

Here's how they work: You design a page which will serve as a template for several similar pages. You define some parts as "Editable Regions", which can vary from page to page. When you edit a page that uses a template in Dreamweaver, it 'locks' the un-editable regions so you can't alter them.
<DIV class="sidebar" style="border: 1px solid black; float: right; width: 20em; padding: 9px; margin: 9px">OSDir is very interested in hearing from other developers who've made a switch to an open source solution in their day to day work. If you're interested in writing up an article of this nature email us a brief outline of what you were using, what was important about it, what you looked at and what you finally decided upon.</div>
The best part is that you can update the design of the template, and then run a tool which updates the design of all the pages that use this template.

For a Linux desktop solution, the popular alternative seems to be 'include files', such as relaying on Apache's Server Side Include system on the server. The Dreamweaver solution is better for a couple of important reasons. First, in the template I can see my complete page design in one file. This makes it easy to visualize the entire design at once.

It also means I can use most any graphical HTML tool to make further adjustments to a complete page design. By contrast, with an 'include file' based system, it's typical to have a header in one file, a footer in another, and content
and third. You can't see the big picture without using some tool to render the three parts together. If you have nested includes files, this may even more painful to manage.

Second, Dreamweaver pre-processes the files, producing a result that is standard HTML that can be served directly on the web. There is no additional penalty for parsing the include files each time a web page is loaded.

Include files can also create more difficult maintenance. Say you have the common case of having header and footer include files. What happens when you want to add another standard piece of HTML in the middle of the page? You would have to visit each file that uses the include files and add a token for a third include file. In a Dreamweaver style template system this isn't a problem-- You
just update the template and re-run the update tool.

Dreamweaver templates turn the concept of traditional include files inside out. The result is easier maintenance.

Using the template concept without Dreamweaver

As I've just explained, the template system is the killer feature of Dreamweaver. However, there are a number reasons to seek a similar solution without using Dreamweaver: Dreamweaver doesn't run on Linux, is not open source and costs nearly $400.

What's important about Dreamweaver templates is the concept of how they work, no so much how they are implemented. There a number of free HTML pre-processors that provide features like this, and can run on a Linux, Mac OS X or Windows desktop system. Only a minimal knowledge of the command line world is needed.

As a class of software, HTML pre-processors do various kinds of heavy lifting to make generating HTML code easier. Besides performing template-style tasks, they may also add in the width and height attributes of image tags, clean up HTML, and help build navigation systems.

HTML Pre-processors are good fit for those managing small to medium size websites. For large and complex needs, a database-driven content-management system is likely a better solution.

As I researched pre-processors recently, I was dismayed not to find any good surveys of the various options available. I looked at several, and will recommend one in particular. I'll give quick summaries of others I reviewed, to some save some trouble for those who wish to do more thorough digging.

ttree, an easy to use template manager

ttree comes as part of the Perl Template-Toolkit distribution. It keeps a low profile as a pre-processing solution-- Template-Toolkit is better known as a popular templating engine for Perl CGI scripts.

This other life for the software has produced a stable and mature code base that has fostered many plug-ins and extensions that can be used for pre-processing as well as in CGI scripts.

A template example with ttree

Here's a link to a template I'm using. I intentionally linked to a rendered version rather than some source code. That's the point--with a template system you get to see the whole design at once. It's fairly clear even without looking at the source what's going on, and it's easy to envision touching up the design in a visual
tool like NVU, a free visual editor for Linux.

Here's a sample content file I'm using. The kit bit to see is at the top and looks like this:
[% content = PROCESS body %][% INCLUDE TEMPLATE.htmlswitcher_name="Hopi"content = content%][% BLOCK body %] thrilling content...[% END %]

It just provides a path to template it uses, and defines a simple 'switcher_name' string value to fill in, as well as as referencing a larger block of text, which requires an extra hoop jump.

Finally, here's the result. To generate that, I ran ttree.

If your desktop OS already has Perl installed, as Linux and Mac OS X typically do, installing ttree should be as easy as running this command, preferably as root:
cpan Template
The first time you run ttree, it will ask you if you want to create a .ttreerc file. By reviewing this generated file, it should be straightforward to create a configuration appropriate for your situation. Once that's done, simply running ttree will Just Do the Right Thing to update your templates. Complex cases can be handled through additional options which can be discovered with ttree --help.

When you are ready to explore more advanced features, Template-Toolkit has over 100 Plugins to choose from. You can, for example, cut down your HTML coding time even further if you choose to write your HTML source code in the Kwiki format and have it translated with the KwikiFormat Plugin.

Since the result is standard HTML, no special support is needed by your web server. You can simply FTP the HTML files to the server as usual.

Other HTML pre-processors

Here are my brief thoughts on a number of other alternatives I tried before I settled on ttree.

htp. I was sufficiently impressed with htp that I used it for the original incarnation of my Profiles of Linux Switchers. It's easy to learn and use, and supports the template concept as well as other common pre-processor commands. I became concerned when a common command option segfaulted on Linux and it wouldn't compile on FreeBSD. This combined with a long time since the last release and low list traffic paints a picture of a particularly inactive project. It was enough to set my wheels in motion to keep looking.

WML. I really tried to love WML. It has a beautiful website. It appears stable, mature, and full featured. It's written in Perl, the programming language I know best. I should have known we weren't destined for each other when I found the documentation for the three key concepts to learn. I was hoping they would be: "Separate Design from Content", "Make Changes in Only One Place" and "Automate Boring Stuff". Instead, I found: "WMLRC FILE HIERARCHY AND WMLOPTS VARIABLE". WML just presents itself too technically. It does support the template concept, but explains that I must learn about the concept of 'diverting' content to use. I don't think a new concept should be necessary. It just doesn't have to be that hard.

gtml and wpp both seemed like reasonable candidates, but got marked off my list for insufficient template support.

Webmake also looked promising. It supports templates, although the interface seems more complicated than it needs to be. I was soon scared off because I couldn't figure how to to implement a simple 'if' in the template. I reasoned that if simple things weren't simple to figure out, how hard would the hard things be?

Webmake seems targeted more at people who want to maintain their whole website as a single big text file.


ttree is a solution that feels like a great fit for me, something I'll be using for a long time. However, there is certainly room for improvement among HTML preprocessors. My personal wishlist includes the ability process Dreamweaver's own template syntax with a command line tool.

Just as this article was headed towards publication, the first 'alpha' versions of another Template-Toolkit based solution where released. tt2site, although still very much under development, promises to build on ttree with several website specific features, including helping with menu generation and site map building. Although it's not yet at quality level that I can recommend for use, its presence is a positive sign for others interested in Template-Tookit based solutions.

Mark Stosberg is the Principal Developer at Summersault. He helps maintain several Perl modules including Data::FormValidator, CGI::Application and WWW::Mechanize. Lately he's become an avid recumbent commuter.

blog comments powered by Disqus


Re: Open Source Alternatives to Dreamweaver Templating (Score: 2, Offtopic)
by Anonymous on Jan 05, 2005 - 01:56 PM

Why "Dreamweaver-like" only templates ? The way DW templates are done is not too hard to implement. The only hard thing with templates is the auto-update of all the files based on a given template when that template is modified. Given that in th DW model, everything editable area has a name, it's not too hard. You only have to keep a 1-to-n association between the template and the documents. Speaking of a web site having n templates, RDF seems to me the natural choice. So Nvu will be able to use DW templates; that's just a question of time :-)

Daniel Glazman, Nvu engineering lead

What I'd really value in this field... (Score: 0)
by Anonymous on Jan 06, 2005 - 06:45 PM an editor which understands includes from Apache, PHP and the like, and has a viewing mode which allows you to treat the inclusions ("templates") as if they were part of the same file; i.e. the inclusion replaces the including statement, with something like an different background colour to hint that you're not in Kansas any more, and you can simply walk the cursor into it and edit it.

That and a "preview" mode which automagically uploaded the changed files to the webserver, presumably in a different location (or webserver, or other staging area) from your live code, then previewed the result would be peachy.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 06, 2005 - 11:44 PM
I also used DW for several years as a Web Developer. I still think it is a very good software! But there were also lots of things I did not like. For example, it's strange method to reformat HTML! Later, I switched to Linux and Quanta. Unfortunately, I had lots of DW Websites using templates and libraries. To fix that problem, I wrote a small perl script which applies changed templates to all files in a subdirectory. You can find the script here (It is also included in the Quanta CVS)

Quanta is a great tool for Web Developers. It does not just relay on HTML, it supports different markup languages as well as many scripting languages. It implements VPL - a WYSIWYG Editor, Tools to create CSS and many more. It's not only for a Dreamweaver user worth a try.

Benjamin Stocker

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 01:55 PM
"Dreamweaver pre-processes the files, producing a result that is standard HTML"

Wow. I thought that the catch with graphical tools like Dreamweaver is that they *don't* produce standard HTML. Are you telling me that Dreamweaver actually outputs HTML that can pass a validator like the one at

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 02:12 PM
What about PHP ?

It took little more effort than to run through a simple "how to set-up PHP with Apache" guide. For windows, see:

Doing a file include is extremely easy to start with. And from there, you can make your web page smarter by, for example, disabling (index) links that go to the page itself, generating TOCs from a single description, etc.

When my hosting service did not support PHP, I used 'wget' to get a pure HTML version of my web page.

I casually maintain a personal and a company website ( and I find this basic PHP solution to be easily maintainable.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 02:27 PM
Anyone with an opinion on Cheetah? ( I've been able to use it for static pages, but I don't know how it compares with others.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 02:28 PM
You forgot XML and XSLT. Just use XML for content and XSLT for design.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 02:57 PM
This is a good overview of ttree and some other html pre-processors, but they are not a replacement for Dreamweaver. Dreamweaver is a tool used by designers to create designs which engineers can apply the tools of ttree and others to create applications or dynamic websites from the designs. Comparing Dreamweaver to these other utilities is misleading and inaccurate.

Now, I use Template Toolkit and it is a great piece of software but it is not a design tool. It takes me a day to handcode one HTML page using TT, whereas a designer can be several times more productive using a gui such as Dreamweaver. There is a distinction, and in the real world where getting stuff done is important, it is necessary to differentiate the two roles of design and implementation. Dreamweaver is for design, ttree and friends are for implementation.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 03:28 PM
I like
Zope Page Templates
They are like a model of the pages that it will generate. In particular, it is a valid HTML page.

Very powerful but there is a learning curve ... and they o­nly work with Zope Application Server(

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 04:10 PM
AAckkk!!! DW templates are evil!! I've ditched them entirely, as they have a tendency of breaking functionality. In particular, I noticed that when applying an updated template, dynamic select menus would break. Includes work better for me.

I hate dreamweaver templates (Score: 0)
by Anonymous on Jan 08, 2005 - 04:12 PM
I think this is a very good article although I really don't like dreamweaver templates. It really is because I rarely use them. What I do use and love about dreamweaver is the site management functionality. Being able to open a file within the context of site hierarchy, edit it, and then upload it using a simple key combonation (taking the ftp client out of the equation) is the most useful feature in my opinion. I can write code in many editors but none I have used have this functionality. I have heard quanta can do this but I can not bare to work with qt apps (just my opinion). I think it is good that more people are looking at how to replace dreamweaver. It is a great program and I see no reason there is not a comparable editor/site manager in linux.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 04:19 PM
In general, I find your discussion interesting, and generally on the right track. However, I will also tell you why I don't use a similar system but instead use a template system I wrote in PHP.

The only real issue for the template systems you mention is that if something changes which breaks the compatibility of the temmplate, you will find yourself in a world of hurt when it comes time to reapply the template. Additionally, the HTML generated by Dreamweaver, OpenOffice, and others often do strange things when the content needs to be maintained separately. For example, neither product handles nested tables well, and I have seen many instances where cascading stylesheet properties get distributed to elements when it would be better to leave them in separate files.

Taking your logic further (regarding single point of maintenance, etc.), I would argue that it is important to keep one working copy of the template which is applied to the files in real-time, and which can include some logic regarding, for example, nagivational menues to highlight active pages, etc. Additionally, one can include style information in a separate CSS file, and maintain each independently.

IMO, what we really need is an HTML editor with integrated CSS editing (as in external stylesheets), and the ability to define a template and edit the content in different pages separately whithout storing redundant information. I do not see such a tool emerging anywhere in the near future, but it would be very nice to see.

Consequently, I generally use VIM and PHP when working with such templates. To me this is the most sensible way to go. But then I am more technical than most of those I hire to do graphics design. I am, however, getting to the point that I may decide that my graphics designers can send me their work as GIMP files, and I can go from there.

Best Wishes,
Chris Travers
Metatron Technology Consulting

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 04:19 PM
WML has a nice website?

There are better template languages. (Score: 0)
by Anonymous on Jan 08, 2005 - 04:47 PM
One of the nicest template languages I've yet seen are Zope Templates.
Instead of adding syntax constructs like these brackets that do often fail HTML validation, Zope Templates are valid XHTML files. They use XML attributes and some additional tags to store information.
These templates can be edited with many tools (such as Dreamweaver) without seeing the included logic and especially without altering it too easily.
But template languages is not everything. The most important thing is to have a clean separation of template, template logic (=code for displaying), data and data logic (=code for data aggregation).

Re: Open Source Alternatives to Dreamweaver Templating (Score: 2, Informative)
by Anonymous on Jan 08, 2005 - 05:02 PM
Nvu is a joke. The right toy for all those "webdesigners" we have nowadays.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 05:26 PM
A great templating tool for markup or source code is any decent macro processor, such as GNU m4.

Check out:

Very disappointing (Score: 0)
by Anonymous on Jan 08, 2005 - 05:29 PM
Web development is only a small part of what I do, and I use Dreamweaver's templates. I've also been planning to do my own search for an open source replacement for some time. So seeing no turn-key transition to open source is a bit of a disappointment. (I'd been living in hope that there was something out there)

Dreamweaver templates are simple. Really simple. Probably all of the other solutions presented here are far more powerful, but none are as straight forward.

If no one does it first, I'd like to start a project to make a web-based "content management system" (CMS) that is a simple drop in replacement for editing with templates in Dreamweaver. Here's what the web interface would consist of:

File viewer: view list of templates and HTML files. (HTML files are based on the templates.) Also a new button for creating new templates or HTML files.

Template editor: a big edit box where you dump your HTML (and a save button). Also on the page would be hints about the syntax of template fields (or a link to some documentation).

Templated HTML page editor: lists all the fields of the template relevant to the HTML page being edited, and allows each field to be edited. Editing via a text box or using FCKeditor for formatting. (if you haven't heard of FCKeditor, check it out!)

Confirmation page: When you change a template file, you need to confirm that you wish to update all the associated HTML pages. Also if a field is deleted from a template, you need to confirm you wish to delete all the associated content from HTML pages.

That's it. Someone handy with Perl or Python should be able to whip up a prototype in a weekend. Of course there's also a few other issues to make it full featured, like having users and passwords, oh and there's actually writing the Dreamweaver-compatible pre-processor (which really isn't complex! It's simpler than a basic SSI). Then in the future you might want to allow plugins from Template::Plugin; give it an optional database backend; integrate a version control system; and all sorts of stuff. But the basic system would hardly be a challenge to create, and I'm really surprised it doesn't already exist. Web dev really isn't a priority for me at the moment, but I'd like to get involved in the future.

pengo ;@&amp;lt;/i> qubero . org

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 05:40 PM
I would recommend that people look into Bricolage. It is a content management system that offers a similar template capability. In addition, it can publish plain old HTML to a remote server.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 08:42 PM
If you like Template::Toolkit, you'll love HTML::Mason. More power, more speed, better separation of application code and [DX]HTML, better reuse, and actual Perl syntax, not another language.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 08, 2005 - 10:45 PM

Why is there nothing here about Ant, XSL & XML? Coincidentally, I finished my first XSL & XML driven web site tonight, ;). I think it's a very nice way of enabling a static or dynamic web site to use templates. The only limiting problem with my XSL is that I haven't been able to resolve document relative hyperlinks.

When I run Ant, it resizes my source images to the desired size, it packs and/or updates the zip downloads, it processes my XML files with two templates (the default layout and a printer friendly page) and updates the files on my FTP server.

And best of all, it's portable as can be. If I copy my current directory with input files and Ant's build.xml file over to Linux, MacOS, whatever, as long as it supports Java, it runs! (Ant can even convert my CR-LF's to any other standard ;-)

Peter Odding / XoloX

Re: Open Source Alternatives to Dreamweaver Templating (Score: 1)
by Glitch010101 on Jan 08, 2005 - 10:58 PM
Mark talks in this article about finding a good tool for taking templates and applying them to a bunch of pages.

Along with tt2site, blosxom is another good FOSS tool for generating a site. Many people (including myself) use blosxom as a CGI module and render the pages on the fly, but if you've got a high traffic site you can run a quick command and generate all the pages as static HTML as Rael does on itself.

Blosxom errs on the side of simplicity, rendering each text file as an "article" or "blog entry" based on its timestamp and the subdirectory to determine order and category. Once you become accustomed to the idea of each piece of content being an article it's easy to see how many sites can be implemented in that way, with a list of links pointing to categories or the permalink of various articles. While blosxom is not a point-n-click tool, it is extremely efficient once you get your site initially set up. When I have a new idea for my site, I simply add a new text file in the appropriate subdirectory (or make a new one if there is no category that fits). The article immediately shows up on the front of my site, and then filters down into its category page as it is displaced by more current articles.

Conversely, I use Dreamweaver at work where we have an existing site designed and need more granular control of each page. I've also found it invaluable to be able to sit with our various project directors and visually create their page with them while they direct and give input. The lack of a WYSIWYG tool for editing template based HTML files is the only thing keeping my work computer an M$ pc.

Completely neglected in this discussion so far have been CMS's like postnuke and phpnuke, zope, and others (including slashcode). Distributing the ability (and responsibility) for updating pages and sections of a site while keeping everything template based is a key function of CMS's. In many cases, frequently updated sites would benefit from switching to a CMS rather than constantly updating their static pages.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 12:44 AM
There are also projects like Mason. While it's a little perl
centric, you can use it to do templating etc with out even having
to generate any perl. Once the page is rendered once then it is
cached so you don't get a hit each time to calculate and incorportate
all the includes.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 01:38 AM
What about PHP? I have used SmartPHP in the past and it works great. It is very easy to use and it totally seperates content from the display.

The world doesn't revolve around Perl.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 03:11 AM
check out php and smarty, i've been using it for over a year on all of my sites. &

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 04:53 AM
The latest development release of Screem (0.13.0) supports Dreamweaver templates so long as you don't nest them. Other versions of Screem have a template system nearly identical to Dreamweavers, but weren't quite compatible.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 10:39 AM
Although not nearly as sophisticated as those covered in the article, I have been using The DOLT ( HTML pre-processor. It is PERL based, and was fairly easy for a newbie like me to set up. Disclaimer: I am not related to the DOLT project, just a user.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 09, 2005 - 04:00 PM
I honestly don't care for how Dreamweaver does it's work. I tend to find simple theme system with a XML backend to hold each page display fragments works out very nicely.

Thus you have a simple:

index.theme (which is the default theme file for the site unless an overriding one is found)
index.xml (the real context in simple XML blocks)
index.css (an XML written ruleset that translates the XML into HTML for displaying in index.theme).

Thus you want to add a new section. You just modify the index.theme test a page or two without that section a page or two with the new one and your done.

An upshot to this you can build a "texthumor.xml" page with all your jokes and in your humor.xml page you can do <DISPLAYLIST FILE="texthumor.xml" />

No hassle with updating multiple places. You add a new joke it magicly adds itself to the upstream page.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 10, 2005 - 07:42 AM
Zope + (ME)TAL | DTML = much more powerfull templating than DW will ever reach since it's closer to programming language than just template.
Drop Plone on top of it and you've got CMS with amizing templating features.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 0)
by Anonymous on Jan 30, 2005 - 08:11 AM
Regarding Apache SSI: It's easy enough to turn SSI on its head, too. I store content as variables in SSI files that are separate from the templates. The content file includes its associated template at the bottom. Any change to the template is immediately and automatically reflected in what the browser sees. No publishing to worry about, or inability of the software to make existing pages use the new version of the template. And, the URLs can take advantage of the hierarchical structure of the file system, if you like. No funky URLs with query strings appended.

Re: Open Source Alternatives to Dreamweaver Templating (Score: 1)
by xangelusx on May 03, 2005 - 08:54 AM
I realize this is not exactly a pro-Dreamweaver-template article, but this comment might still be useful should someone come here after having doubts about using the built-in templating system.

Some people might argue that the Dreamweaver templating system becomes unweildy when you need to update the template in 100+ pages. Dreamweaver needs to update each and every one of those pages to incorporate the template changes and you then need to upload all those changed files to the server. The solution to this that I use is to create Dreamweaver templates that incorporate include files in areas that might change frequently. These could be areas like navigation where a new link might be added or an old one removed, or the footer where the copyright date might need to be updated or contact info changed. The template keeps track of your overall design and makes it easy to create new pages (with the added benefit of locking down the layout when other users act as publishers via Contribute) while making small changes easy to impliment since only the include file needs to be uploaded to the server for the change to occur site-wide. Also, in some cases Dreamweaver can include the contents of an include file in it's Design window, so you still get to see the whole picture while you are developing.

Advertise With Us! | Comments are property of their posters.
Copyrighted (c) 2000-2016 SuperComfy, but we're happy to let you use what you wish with attribution.
All logos and trademarks are the property of their respective owners.
. Contact | Privacy Policy | Terms of Service

Page created in 0.534284 seconds.