--- /dev/null
--- /dev/null
++Guillaume Pellerin <yomguy@altern.org>
++Olivier Guilyardi <olivier@samalyse.com>
--- /dev/null
--- /dev/null
++Copyright (c) 2006, 2008 Parisson, SARL (parisson.com).
++Copyright (c) 2006, 2008 Samalyse, SARL (samalyse.com).
++All rights reserved.
++
++Guillaume Pellerin <yomguy@parisson.com>
++Olivier Guilyardi <olivier@samalyse.com>
++
++This software is a computer program whose purpose is to backup,
++transcode and tag any audio content with metadata over a web frontend.
++
++This software is governed by the CeCILL license under French law and
++abiding by the rules of distribution of free software. You can use,
++modify and/ or redistribute the software under the terms of the CeCILL
++license as circulated by CEA, CNRS and INRIA at the following URL
++"http://www.cecill.info".
++
++
++CeCILL FREE SOFTWARE LICENSE AGREEMENT
++
++ Notice
++
++This Agreement is a Free Software license agreement that is the result
++of discussions between its authors in order to ensure compliance with
++the two main principles guiding its drafting:
++
++ * firstly, compliance with the principles governing the distribution
++ of Free Software: access to source code, broad rights granted to
++ users,
++ * secondly, the election of a governing law, French law, with which
++ it is conformant, both as regards the law of torts and
++ intellectual property law, and the protection that it offers to
++ both authors and holders of the economic rights over software.
++
++The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
++license are:
++
++Commissariat à l'Energie Atomique - CEA, a public scientific, technical
++and industrial research establishment, having its principal place of
++business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
++
++Centre National de la Recherche Scientifique - CNRS, a public scientific
++and technological establishment, having its principal place of business
++at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
++
++Institut National de Recherche en Informatique et en Automatique -
++INRIA, a public scientific and technological establishment, having its
++principal place of business at Domaine de Voluceau, Rocquencourt, BP
++105, 78153 Le Chesnay cedex, France.
++
++
++ Preamble
++
++The purpose of this Free Software license agreement is to grant users
++the right to modify and redistribute the software governed by this
++license within the framework of an open source distribution model.
++
++The exercising of these rights is conditional upon certain obligations
++for users so as to preserve this status for all subsequent redistributions.
++
++In consideration of access to the source code and the rights to copy,
++modify and redistribute granted by the license, users are provided only
++with a limited warranty and the software's author, the holder of the
++economic rights, and the successive licensors only have limited liability.
++
++In this respect, the risks associated with loading, using, modifying
++and/or developing or reproducing the software by the user are brought to
++the user's attention, given its Free Software status, which may make it
++complicated to use, with the result that its use is reserved for
++developers and experienced professionals having in-depth computer
++knowledge. Users are therefore encouraged to load and test the
++suitability of the software as regards their requirements in conditions
++enabling the security of their systems and/or data to be ensured and,
++more generally, to use and operate it in the same conditions of
++security. This Agreement may be freely reproduced and published,
++provided it is not altered, and that no provisions are either added or
++removed herefrom.
++
++This Agreement may apply to any or all software for which the holder of
++the economic rights decides to submit the use thereof to its provisions.
++
++
++ Article 1 - DEFINITIONS
++
++For the purpose of this Agreement, when the following expressions
++commence with a capital letter, they shall have the following meaning:
++
++Agreement: means this license agreement, and its possible subsequent
++versions and annexes.
++
++Software: means the software in its Object Code and/or Source Code form
++and, where applicable, its documentation, "as is" when the Licensee
++accepts the Agreement.
++
++Initial Software: means the Software in its Source Code and possibly its
++Object Code form and, where applicable, its documentation, "as is" when
++it is first distributed under the terms and conditions of the Agreement.
++
++Modified Software: means the Software modified by at least one
++Contribution.
++
++Source Code: means all the Software's instructions and program lines to
++which access is required so as to modify the Software.
++
++Object Code: means the binary files originating from the compilation of
++the Source Code.
++
++Holder: means the holder(s) of the economic rights over the Initial
++Software.
++
++Licensee: means the Software user(s) having accepted the Agreement.
++
++Contributor: means a Licensee having made at least one Contribution.
++
++Licensor: means the Holder, or any other individual or legal entity, who
++distributes the Software under the Agreement.
++
++Contribution: means any or all modifications, corrections, translations,
++adaptations and/or new functions integrated into the Software by any or
++all Contributors, as well as any or all Internal Modules.
++
++Module: means a set of sources files including their documentation that
++enables supplementary functions or services in addition to those offered
++by the Software.
++
++External Module: means any or all Modules, not derived from the
++Software, so that this Module and the Software run in separate address
++spaces, with one calling the other when they are run.
++
++Internal Module: means any or all Module, connected to the Software so
++that they both execute in the same address space.
++
++GNU GPL: means the GNU General Public License version 2 or any
++subsequent version, as published by the Free Software Foundation Inc.
++
++Parties: mean both the Licensee and the Licensor.
++
++These expressions may be used both in singular and plural form.
++
++
++ Article 2 - PURPOSE
++
++The purpose of the Agreement is the grant by the Licensor to the
++Licensee of a non-exclusive, transferable and worldwide license for the
++Software as set forth in Article 5 hereinafter for the whole term of the
++protection granted by the rights over said Software.
++
++
++ Article 3 - ACCEPTANCE
++
++3.1 The Licensee shall be deemed as having accepted the terms and
++conditions of this Agreement upon the occurrence of the first of the
++following events:
++
++ * (i) loading the Software by any or all means, notably, by
++ downloading from a remote server, or by loading from a physical
++ medium;
++ * (ii) the first time the Licensee exercises any of the rights
++ granted hereunder.
++
++3.2 One copy of the Agreement, containing a notice relating to the
++characteristics of the Software, to the limited warranty, and to the
++fact that its use is restricted to experienced users has been provided
++to the Licensee prior to its acceptance as set forth in Article 3.1
++hereinabove, and the Licensee hereby acknowledges that it has read and
++understood it.
++
++
++ Article 4 - EFFECTIVE DATE AND TERM
++
++
++ 4.1 EFFECTIVE DATE
++
++The Agreement shall become effective on the date when it is accepted by
++the Licensee as set forth in Article 3.1.
++
++
++ 4.2 TERM
++
++The Agreement shall remain in force for the entire legal term of
++protection of the economic rights over the Software.
++
++
++ Article 5 - SCOPE OF RIGHTS GRANTED
++
++The Licensor hereby grants to the Licensee, who accepts, the following
++rights over the Software for any or all use, and for the term of the
++Agreement, on the basis of the terms and conditions set forth hereinafter.
++
++Besides, if the Licensor owns or comes to own one or more patents
++protecting all or part of the functions of the Software or of its
++components, the Licensor undertakes not to enforce the rights granted by
++these patents against successive Licensees using, exploiting or
++modifying the Software. If these patents are transferred, the Licensor
++undertakes to have the transferees subscribe to the obligations set
++forth in this paragraph.
++
++
++ 5.1 RIGHT OF USE
++
++The Licensee is authorized to use the Software, without any limitation
++as to its fields of application, with it being hereinafter specified
++that this comprises:
++
++ 1. permanent or temporary reproduction of all or part of the Software
++ by any or all means and in any or all form.
++
++ 2. loading, displaying, running, or storing the Software on any or
++ all medium.
++
++ 3. entitlement to observe, study or test its operation so as to
++ determine the ideas and principles behind any or all constituent
++ elements of said Software. This shall apply when the Licensee
++ carries out any or all loading, displaying, running, transmission
++ or storage operation as regards the Software, that it is entitled
++ to carry out hereunder.
++
++
++ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
++
++The right to make Contributions includes the right to translate, adapt,
++arrange, or make any or all modifications to the Software, and the right
++to reproduce the resulting software.
++
++The Licensee is authorized to make any or all Contributions to the
++Software provided that it includes an explicit notice that it is the
++author of said Contribution and indicates the date of the creation thereof.
++
++
++ 5.3 RIGHT OF DISTRIBUTION
++
++In particular, the right of distribution includes the right to publish,
++transmit and communicate the Software to the general public on any or
++all medium, and by any or all means, and the right to market, either in
++consideration of a fee, or free of charge, one or more copies of the
++Software by any means.
++
++The Licensee is further authorized to distribute copies of the modified
++or unmodified Software to third parties according to the terms and
++conditions set forth hereinafter.
++
++
++ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
++
++The Licensee is authorized to distribute true copies of the Software in
++Source Code or Object Code form, provided that said distribution
++complies with all the provisions of the Agreement and is accompanied by:
++
++ 1. a copy of the Agreement,
++
++ 2. a notice relating to the limitation of both the Licensor's
++ warranty and liability as set forth in Articles 8 and 9,
++
++and that, in the event that only the Object Code of the Software is
++redistributed, the Licensee allows future Licensees unhindered access to
++the full Source Code of the Software by indicating how to access it, it
++being understood that the additional cost of acquiring the Source Code
++shall not exceed the cost of transferring the data.
++
++
++ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
++
++When the Licensee makes a Contribution to the Software, the terms and
++conditions for the distribution of the resulting Modified Software
++become subject to all the provisions of this Agreement.
++
++The Licensee is authorized to distribute the Modified Software, in
++source code or object code form, provided that said distribution
++complies with all the provisions of the Agreement and is accompanied by:
++
++ 1. a copy of the Agreement,
++
++ 2. a notice relating to the limitation of both the Licensor's
++ warranty and liability as set forth in Articles 8 and 9,
++
++and that, in the event that only the object code of the Modified
++Software is redistributed, the Licensee allows future Licensees
++unhindered access to the full source code of the Modified Software by
++indicating how to access it, it being understood that the additional
++cost of acquiring the source code shall not exceed the cost of
++transferring the data.
++
++
++ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
++
++When the Licensee has developed an External Module, the terms and
++conditions of this Agreement do not apply to said External Module, that
++may be distributed under a separate license agreement.
++
++
++ 5.3.4 COMPATIBILITY WITH THE GNU GPL
++
++The Licensee can include a code that is subject to the provisions of one
++of the versions of the GNU GPL in the Modified or unmodified Software,
++and distribute that entire code under the terms of the same version of
++the GNU GPL.
++
++The Licensee can include the Modified or unmodified Software in a code
++that is subject to the provisions of one of the versions of the GNU GPL,
++and distribute that entire code under the terms of the same version of
++the GNU GPL.
++
++
++ Article 6 - INTELLECTUAL PROPERTY
++
++
++ 6.1 OVER THE INITIAL SOFTWARE
++
++The Holder owns the economic rights over the Initial Software. Any or
++all use of the Initial Software is subject to compliance with the terms
++and conditions under which the Holder has elected to distribute its work
++and no one shall be entitled to modify the terms and conditions for the
++distribution of said Initial Software.
++
++The Holder undertakes that the Initial Software will remain ruled at
++least by this Agreement, for the duration set forth in Article 4.2.
++
++
++ 6.2 OVER THE CONTRIBUTIONS
++
++The Licensee who develops a Contribution is the owner of the
++intellectual property rights over this Contribution as defined by
++applicable law.
++
++
++ 6.3 OVER THE EXTERNAL MODULES
++
++The Licensee who develops an External Module is the owner of the
++intellectual property rights over this External Module as defined by
++applicable law and is free to choose the type of agreement that shall
++govern its distribution.
++
++
++ 6.4 JOINT PROVISIONS
++
++The Licensee expressly undertakes:
++
++ 1. not to remove, or modify, in any manner, the intellectual property
++ notices attached to the Software;
++
++ 2. to reproduce said notices, in an identical manner, in the copies
++ of the Software modified or not.
++
++The Licensee undertakes not to directly or indirectly infringe the
++intellectual property rights of the Holder and/or Contributors on the
++Software and to take, where applicable, vis-à-vis its staff, any and all
++measures required to ensure respect of said intellectual property rights
++of the Holder and/or Contributors.
++
++
++ Article 7 - RELATED SERVICES
++
++7.1 Under no circumstances shall the Agreement oblige the Licensor to
++provide technical assistance or maintenance services for the Software.
++
++However, the Licensor is entitled to offer this type of services. The
++terms and conditions of such technical assistance, and/or such
++maintenance, shall be set forth in a separate instrument. Only the
++Licensor offering said maintenance and/or technical assistance services
++shall incur liability therefor.
++
++7.2 Similarly, any Licensor is entitled to offer to its licensees, under
++its sole responsibility, a warranty, that shall only be binding upon
++itself, for the redistribution of the Software and/or the Modified
++Software, under terms and conditions that it is free to decide. Said
++warranty, and the financial terms and conditions of its application,
++shall be subject of a separate instrument executed between the Licensor
++and the Licensee.
++
++
++ Article 8 - LIABILITY
++
++8.1 Subject to the provisions of Article 8.2, the Licensee shall be
++entitled to claim compensation for any direct loss it may have suffered
++from the Software as a result of a fault on the part of the relevant
++Licensor, subject to providing evidence thereof.
++
++8.2 The Licensor's liability is limited to the commitments made under
++this Agreement and shall not be incurred as a result of in particular:
++(i) loss due the Licensee's total or partial failure to fulfill its
++obligations, (ii) direct or consequential loss that is suffered by the
++Licensee due to the use or performance of the Software, and (iii) more
++generally, any consequential loss. In particular the Parties expressly
++agree that any or all pecuniary or business loss (i.e. loss of data,
++loss of profits, operating loss, loss of customers or orders,
++opportunity cost, any disturbance to business activities) or any or all
++legal proceedings instituted against the Licensee by a third party,
++shall constitute consequential loss and shall not provide entitlement to
++any or all compensation from the Licensor.
++
++
++ Article 9 - WARRANTY
++
++9.1 The Licensee acknowledges that the scientific and technical
++state-of-the-art when the Software was distributed did not enable all
++possible uses to be tested and verified, nor for the presence of
++possible defects to be detected. In this respect, the Licensee's
++attention has been drawn to the risks associated with loading, using,
++modifying and/or developing and reproducing the Software which are
++reserved for experienced users.
++
++The Licensee shall be responsible for verifying, by any or all means,
++the suitability of the product for its requirements, its good working
++order, and for ensuring that it shall not cause damage to either persons
++or properties.
++
++9.2 The Licensor hereby represents, in good faith, that it is entitled
++to grant all the rights over the Software (including in particular the
++rights set forth in Article 5).
++
++9.3 The Licensee acknowledges that the Software is supplied "as is" by
++the Licensor without any other express or tacit warranty, other than
++that provided for in Article 9.2 and, in particular, without any warranty
++as to its commercial value, its secured, safe, innovative or relevant
++nature.
++
++Specifically, the Licensor does not warrant that the Software is free
++from any error, that it will operate without interruption, that it will
++be compatible with the Licensee's own equipment and software
++configuration, nor that it will meet the Licensee's requirements.
++
++9.4 The Licensor does not either expressly or tacitly warrant that the
++Software does not infringe any third party intellectual property right
++relating to a patent, software or any other property right. Therefore,
++the Licensor disclaims any and all liability towards the Licensee
++arising out of any or all proceedings for infringement that may be
++instituted in respect of the use, modification and redistribution of the
++Software. Nevertheless, should such proceedings be instituted against
++the Licensee, the Licensor shall provide it with technical and legal
++assistance for its defense. Such technical and legal assistance shall be
++decided on a case-by-case basis between the relevant Licensor and the
++Licensee pursuant to a memorandum of understanding. The Licensor
++disclaims any and all liability as regards the Licensee's use of the
++name of the Software. No warranty is given as regards the existence of
++prior rights over the name of the Software or as regards the existence
++of a trademark.
++
++
++ Article 10 - TERMINATION
++
++10.1 In the event of a breach by the Licensee of its obligations
++hereunder, the Licensor may automatically terminate this Agreement
++thirty (30) days after notice has been sent to the Licensee and has
++remained ineffective.
++
++10.2 A Licensee whose Agreement is terminated shall no longer be
++authorized to use, modify or distribute the Software. However, any
++licenses that it may have granted prior to termination of the Agreement
++shall remain valid subject to their having been granted in compliance
++with the terms and conditions hereof.
++
++
++ Article 11 - MISCELLANEOUS
++
++
++ 11.1 EXCUSABLE EVENTS
++
++Neither Party shall be liable for any or all delay, or failure to
++perform the Agreement, that may be attributable to an event of force
++majeure, an act of God or an outside cause, such as defective
++functioning or interruptions of the electricity or telecommunications
++networks, network paralysis following a virus attack, intervention by
++government authorities, natural disasters, water damage, earthquakes,
++fire, explosions, strikes and labor unrest, war, etc.
++
++11.2 Any failure by either Party, on one or more occasions, to invoke
++one or more of the provisions hereof, shall under no circumstances be
++interpreted as being a waiver by the interested Party of its right to
++invoke said provision(s) subsequently.
++
++11.3 The Agreement cancels and replaces any or all previous agreements,
++whether written or oral, between the Parties and having the same
++purpose, and constitutes the entirety of the agreement between said
++Parties concerning said purpose. No supplement or modification to the
++terms and conditions hereof shall be effective as between the Parties
++unless it is made in writing and signed by their duly authorized
++representatives.
++
++11.4 In the event that one or more of the provisions hereof were to
++conflict with a current or future applicable act or legislative text,
++said act or legislative text shall prevail, and the Parties shall make
++the necessary amendments so as to comply with said act or legislative
++text. All other provisions shall remain effective. Similarly, invalidity
++of a provision of the Agreement, for any reason whatsoever, shall not
++cause the Agreement as a whole to be invalid.
++
++
++ 11.5 LANGUAGE
++
++The Agreement is drafted in both French and English and both versions
++are deemed authentic.
++
++
++ Article 12 - NEW VERSIONS OF THE AGREEMENT
++
++12.1 Any person is authorized to duplicate and distribute copies of this
++Agreement.
++
++12.2 So as to ensure coherence, the wording of this Agreement is
++protected and may only be modified by the authors of the License, who
++reserve the right to periodically publish updates or new versions of the
++Agreement, each with a separate number. These subsequent versions may
++address new issues encountered by Free Software.
++
++12.3 Any Software distributed under a given version of the Agreement may
++only be subsequently distributed under the same version of the Agreement
++or a subsequent version, subject to the provisions of Article 5.3.4.
++
++
++ Article 13 - GOVERNING LAW AND JURISDICTION
++
++13.1 The Agreement is governed by French law. The Parties agree to
++endeavor to seek an amicable solution to any disagreements or disputes
++that may arise during the performance of the Agreement.
++
++13.2 Failing an amicable solution within two (2) months as from their
++occurrence, and unless emergency proceedings are necessary, the
++disagreements or disputes shall be referred to the Paris Courts having
++jurisdiction, by the more diligent Party.
++
++
++Version 2.0 dated 2006-09-05.
--- /dev/null
--- /dev/null
++==================
++Telemeta - INSTALL
++==================
++
++Requirements
++============
++
++Telemeta is designed to run on Linux and other UNIX based architectures.
++The following third party applications or libraries are required:
++
++:dependencies: python python-xml python-mutagen python-django \
++ python-imaging python-mysqldb mysql-server python-numpy python-scipy \
++ python-ctypes python-setuptools python-support python-docutils
++
++Here, package names are taken from the Debian OS and could be different on other platforms.
++
++
++Install
++=======
++
++-----------------------
++1. Install the software
++-----------------------
++
++1.1 Install Telemeta
++--------------------
++
++* On Debian (Testing recommended) or Ubuntu Hoary
++
++ Install all dependencies like this::
++
++ sudo aptitude install python python-xml python-mutagen python-django \
++ python-imaging python-mysqldb mysql-server python-numpy python-scipy \
++ python-ctypes python-setuptools python-support python-docutils
++
++ Just add these lines to your /etc/apt/sources-list::
++
++ deb http://debian.parisson.org/ binary/
++ deb-src http://debian.parisson.org/ source/
++ deb http://www.debian-multimedia.org etch main
++
++ Then::
++
++ $ sudo apt-get update
++ $ sudo apt-get install telemeta
++
++ This method provides the installation of all needed packages
++ thanks to the Debian dependency system.
++ Go to 1.2.
++
++* On other linux platforms
++
++ Install all dependencies.
++
++ Download the latest release of telemeta at
++ http://telemeta.org
++
++ Uncompress the archive like::
++
++ $ tar xzvf telemeta_0.3.2.tar.gz
++
++ Go to the main folder of telemeta and run this command
++ in a shell as root::
++
++ $ sudo python setup.py install
++
++
++1.2. Install TimeSide
++---------------------
++
++In order to get all the Web Audio Components from TimeSide,
++you have to download and install it from source.
++
++So, checkout the last archives at :
++http://code.google.com/p/timeside/downloads/list
++
++Install it like in the following example::
++
++$ tar xzf timeside-0.2.tar.gz
++$ cd timeside-0.2
++
++Read the README and INSTALL file, install dependencies and then::
++
++$ sudo python setup.py install
++
++
++1.3. Install the Django framework version 1.0
++---------------------------------------------
++
++* On Debian (Lenny recommended) or Ubuntu Hoary::
++
++ $ sudo apt-get install python-django
++
++* On other linux platforms, download and install it from:
++
++ http://www.djangoproject.com/download/
++
++
++--------------------------
++2. Create a Django project
++--------------------------
++
++If you haven't already done it, start a new django project::
++
++ $ cd ~/my_projects
++ $ django-admin startproject mysite
++
++
++-----------------------------------------
++3. Create the media and cache directories
++-----------------------------------------
++
++We need 2 directories for media and caching::
++
++ $ cd mysite
++ $ mkdir media cache
++
++You might want to place these somewhere else...
++
++
++----------------------------------
++4. Configure the telemeta project
++----------------------------------
++
++Edit the file settings.py in a text editor.
++Modifiy the following variables:
++
++ :ADMINS: telemeta requires that you indicate an administrator here
++ :DATABASE_*: your database settings (don't forget to create the database if needed)
++ :MEDIA_ROOT: absolute path to the media directory you just created
++ :INSTALLED_APPS: add 'telemeta'
++ :TEMPLATE_CONTEXT_PROCESSORS: include 'django.core.context_processors.request' and
++ 'django.core.context_processors.auth' in this tuple
++
++Add the following variables:
++
++ :TELEMETA_ORGANIZATION: name of the organization which hosts this installation
++ :TELEMETA_SUBJECTS: tuple of subject keywords (used for Dublin Core), such
++ as "Ethnology", etc...
++ :TELEMETA_CACHE_DIR: absolute path to the cache directory that you just created
++ :TELEMETA_GMAP_KEY: your Google Map API key
++ :TELEMETA_DOWNLOAD_ENABLED: True to enable audio data download
++
++Just paste the lines below::
++
++ LOGIN_URL = '/login'
++ LOGIN_REDIRECT_URL = '/'
++ TELEMETA_EXPORT_CACHE_DIR = TELEMETA_CACHE_DIR + "/export"
++ TELEMETA_DATA_CACHE_DIR = TELEMETA_CACHE_DIR + "/data"
++ CACHE_BACKEND = "file://" + TELEMETA_CACHE_DIR + "/data"
++
++
++--------------------------
++5. Initialize the database
++--------------------------
++
++This synchronizes the DB with the model::
++
++ $ python manage.py syncdb
++
++
++----------------------
++6. Configure your urls
++----------------------
++
++ The simplest case is to have telemeta running at public root. To do so, add this url in urls.py::
++
++ (r'^', include('telemeta.urls')),
++
++
++--------------------
++7. Start the project
++--------------------
++
++We are ready to start the telemeta server::
++
++ $ python manage.py runserver
++
++By default, the server starts on the port 8000. You can override this with, for example::
++
++ $ python manage.py runserver 9000
++
++
++------------------------------------
++8. Go the web page with your browser
++------------------------------------
++
++ http://localhost:8000
++
++ or
++
++ http://localhost:9000
++
++
++See README and http://telemeta.org for more informations.
++
++
++-------------------
++9. Configure Apache
++-------------------
++
++If you want to use Telemeta through a web server, it is highly recommended to use Apache 2
++with the mod_wsgi module as explained in the following page :
++
++http://docs.djangoproject.com/en/1.1/howto/deployment/modwsgi/#howto-deployment-modwsgi
++
++This will prevent Apache to put some audio data in the cache memory as it is usually the case with mod_python.
++
--- /dev/null
--- /dev/null
++=================
++Telemeta - README
++=================
++
++Telemeta: web frontend to backup, analyse, transcode and stream any audio content and metadata
++
++
++Introduction
++============
++
++Telemeta is a web audio archiving program which introduces useful and secure methods to
++backup, index, transcode, analyse and publish any digitalized audio file with its metadata.
++It is dedicated to professionnals who wants to easily backup and publish documented sounds
++from collections of vinyls, magnetic tapes or audio CDs over a strong database,
++in accordance with open standards.
++
++Here are the main features of Telemeta:
++
++ * Secure archiving, editing and publishing of audio files over internet.
++ * User friendly web frontend including workflows and high level search methods
++ * Smart dynamical and skinnable audio player (thanks to Timeside and soundmanager2)
++ * "On the fly" analyzing, transcoding and metadata embedding based on an easy plugin architecture
++ * Multi-format support : FLAC, OGG, MP3, WAV and more
++ * GEO Navigator for audio geolocalization
++ * DublinCore compatibility
++ * OAI-PMH data provider
++ * XML serialized backup
++ * Strong SQL backend
++
++The Telemeta data model is based on 'collections' and 'items'. A collection is described
++by its metadata and includes original audio items (sounds) and its own metadata. This
++existing model has been designed to fit the one of the French Centre of Etnomusicology (CREM)
++but could be easily adapted/overrided to sue other data structures.
++
++
++Installation and usage
++======================
++
++See INSTALL and http://telemeta.org for more informations.
++
++
++Development
++===========
++
++To participate to the development of telemeta, you will need a login/password couple.
++You're welcome to email us to join and commit your great ideas ;)
++
++To get the lastest development version, you need subversion and run::
++
++ $ svn co http://svn.parisson.org/svn/telemeta/trunk telemeta
++
++
++Licence
++=======
++CeCILL v2 (see COPYING)
++
++
++Bugs and feedback
++=================
++
++You are welcome to freely use this application in accordance to its licence.
++If you find some bugs, PLEASE leave a ticket on this page:
++
++http://telemeta.org/newticket
++
++You can also leave a ticket to request some new interesting features for the next versions.
++And even if Telemeta suits you, please give us some feedback !
++
++
++Related projects
++================
++
++TimeSide : Web Audio Components
++http://code.google.com/p/timeside/
++
++
++Contact
++=======
++
++:Homepage: http://telemeta.org
++
++:Emails: Guillaume Pellerin <yomguy@parisson.com>,
++ Olivier Guilyardi <olivier@samalyse.com>
++
++Sponsors
++========
++
++The Telemeta project is developed by Parisson and Samalyse. It is sponsored by :
++
++ * CNRS : Centre National de la Recherche Scientifique (the french Natianal Research and Scientific Center)
++ http://cnrs.fr
++ * CREM : Centre de Recherche en Ethnomusicology (the french Ethnomusicology Research Center)
++ http://www.crem-cnrs.fr
++ * LAM : Equipe Lutherie, Acoustique et Musique de l'Université Pierre et Marie Curie de Paris
++ (Instrument design, Acoustic and Music team of the Pierre & Marie Curie University)
++ http://www.lam.jussieu.fr/
++ * MuCEM : Musée des Civilisations de l'Europe et de la Méditerranée
++ http://www.musee-europemediterranee.org
++ * MMSH : Maison Méditerranéenne des Sciences de l'Homme
++ http://www.mmsh.univ-aix.fr/
++ * The Antropponet Project
--- /dev/null
--- /dev/null
++==================================
++Telemeta 1.0 - Refactoring Warning
++==================================
++
++In the perspective of Telemeta 1.0, most parts of the code are currently
++being refactored.
++
++In this context, you should expect the SVN trunk to be **very unstable**.
++
++You may not be able to use it at all until we're done actually... So please
++be patient.
++
++This warning will be removed once things get better, and that we get closer
++to the beta stage.
++
--- /dev/null
--- /dev/null
++telemeta for Debian
++---------------
++
++Soon !
++
++ -- Guillaume Pellerin <yomguy@altern.org>, Thu, 17 Aug 2006 22:42:14 +0200
--- /dev/null
--- /dev/null
++telemeta (0.4-1) unstable; urgency=low
++
++ * New upstream release
++ * See http://telemeta.org/log/ for the entire changelog
++
++ -- Guillaume Pellerin <yomguy@altern.org> Tue, 17 Mar 2009 01:46:51 +0100
++
++telemeta (0.3.3-1) unstable; urgency=low
++
++ * Add django 1.0 compatibility (no backward compatibility in most cases)
++ * Modify dependencies and manuals
++
++ -- Guillaume Pellerin <yomguy@altern.org> Tue, 30 Sep 2008 02:45:36 +0200
++
++telemeta (0.3.2-4) unstable; urgency=low
++
++ * Change license from BSD to CeCILL
++
++ -- Guillaume Pellerin <yomguy@altern.org> Fri, 19 Sep 2008 15:38:48 +0200
++
++telemeta (0.3.2-3) unstable; urgency=low
++
++ * Fix max_digits
++
++ -- Guillaume Pellerin <yomguy@altern.org> Mon, 15 Sep 2008 13:46:11 +0200
++
++telemeta (0.3.2-2) unstable; urgency=low
++
++ * Add analyzers
++
++ -- Guillaume Pellerin <yomguy@altern.org> Mon, 15 Sep 2008 11:40:06 +0200
++
++telemeta (0.3.2-1) unstable; urgency=low
++
++ * Add analysis plugin component and views
++ * Add wav2png.py objects and views
++ * Add audiolab python library
++ * Modify dependencies
++
++ -- Guillaume Pellerin <yomguy@altern.org> Thu, 28 Aug 2008 01:13:14 +0200
++
++telemeta (0.3.1-1beta) unstable; urgency=low
++
++ * Clear some install features
++ * Change waveform color
++ * Change menu order
++ * Change link order at home
++ * Fix spectrogram
++ * Fix tuple bug for version
++ * Modify setup method (distutils)
++ * 2nd layout v0.4 item/view + item/edit
++ * Item instruments prototype display
++ * Hide empty fields on collection and item detail display
++ * Layout breaks under 1024x768 : fixbug
++ * image search, css pagination
++ * search results: display collection tab by default if there's no item
++ * fix search combining country/continent and ethnic group
++ * layout v0.4 item/view + item/edit
++ * advanced search form/results + fix wrong revert
++ * advanced seach css formulaire
++ * fix urls
++ * affichage mediafile, overflow pour spectrogram
++ * hide 4D internal field compil_face_plage
++ * do not print duplicate countries and ethnic groups on collection detail
++ * item/collection dublincore + fixbug css
++ * write item and not items with a single result
++ * enable searching items by publish date and collections by ethnic group
++ * fix advanced search by title; fix empty search
++ * affichage item v1 + bug largeur liste definition list
++ * (re) fix build_query_string filter
++ * collection dublin core
++ * collections avec tous les champs
++ * fix build_query_string filter
++ * item quick search now also searches the creator (auteur) field
++ * improved search; search results are now paginated, displaying either
++ * items or collections, with a tab view
++ * affichage collections + modifs css
++ * sort related items by id on collection detail
++ * advanced search: add missing templates
++ * model modularization ; add is_published() method for collections
++ * model modularization
++ * add advanced search
++ * models: code cleanup and new docstrings
++ * Rewrite README and INSTALL
++ * Show a table for 'normal' data view
++ * Logo Telemeta FINAL v2
++
++ -- Guillaume Pellerin <yomguy@altern.org> Thu, 28 Aug 2008 01:11:19 +0200
++
++telemeta (0.3.0-1) unstable; urgency=low
++
++ * Changed README and INSTALL
++ * fix spectrograms names
++ * accept underscore in viz id
++ * setting version to 'SVN' on trunk
++ * fix items and collections fields display ordering + make item title
++ * optional for django admin
++ * use css overflow instead of iframe for visualization scrolling
++ * Added metadata to OGG stream
++ * Tuned max sample lengths to reasonable values
++ * Tuned max sample lengths to reasonable values
++ * Changed time_limit to 300 (5mn) for Octave
++ * Added main tags to streamed mp3. Closes: #9
++ * Made Octave quiet
++ * Downsampling data for waveform2
++ * Add an iframe to scroll on visualizers
++ * Cleaned OctaveCoreVisualizer to avoid wrong subprocess calls
++ * Fix the maximum displayed length to 10s max for Octave visualizers
++ * Added octave2.9 dependency
++ * Added Waveform2 and Spectrogram2 visualization components
++ * Clean up
++ * Removed old/
++ * fix #28: use item id from export filename. WARNING: require crem data r3
++ * make htdocs variable dynamic and add draft for 0.3 INSTALL
++ * Fixed ExportProcessError
++ * Remove sox piping for FLAC
++ * simplify !TelemetaError
++ * Create ExportProcessError class in export.api
++ * cast double literals (breaks on Debian Sarge)
++ * remove extra space in M3U playlist (failed with Amarok)
++ * Fixed #26 partially for downloading but not for flash playing
++ * remove unused logger instance and duplicated telemeta version
++ * variable, use telemeta url variable + new telemeta_url template tag
++ * soften footer logo
++ * decrease homepage links size
++ * tracify menu bar, add footer, homepage links and fix items list in
++ * collection detail
++ * add version in __init__.py and telemeta_version template tag
++ * optimize and rename BackupBuilder to CollectionSerializer
++ * add method to retrieve items that do not belong to any collection
++ * display id on item detail
++ * rename !FloatField to !DecimalField for django svn !r5302
++ * Cleaned mp3 exporter
++ * Fixed syntax problem
++ * Restore Jeroen Wijering's Flash MP3 Player
++ * add backup core and command line tool
++ * consolidate MediaCore.to_dom() and fix encoding
++ * Adds main id3 tags during MP3 streaming
++ * Moved audio generator to ExporterCore.core_process
++ * add variable for static files root
++ * use named urls for static files
++ * add to_dom() to models
++ * renaming views to web
++ * renaming web.py to base.py
++ * add geographic navigator, coverage dc mapping to collection + other fixes
++ * added collection playlists in m3u and xspf formats
++ * embedded flash mp3 player in both collection and item displays.
++ * Remark: there are two players available, you can switch them in the templates
++ * media objects IDs are now validated at model level
++ * experimenting new logo by Julia
++ * trying some new layout + cleaned css
++ * renamed "dictionaries" to "enumerations"
++ * new PublishingStatus enumerations model (you simply need to syncdb)
++ * Telemeta logos v1
++ * convert DC elements values to strings
++ * fix doblock and spacing
++ * add default empty elements attribute for code clarity
++ * fix css issue between visualization and submenu
++ * add dublin core modelization and new to_dublincore() model methods
++ * improved dublin core mapping
++ * add dublin core HTML-based views of collections and items
++ * fixed URL handling with non aplhanumeric record IDs
++ * fix #21: the web view now properly handle export streams
++ * turn the model list() method into the tolist template filter
++ * new submenu template block + css fixes
++ * Tried new stream function in web.py, but....
++ * Partially fixes #19 by changing MediaCollection.copied_from properties.
++ * Made all exporters generators. Closes: #8 . Input audio raw data is
++ * now passed into sox while encoding (no decoding needed anymore...)
++ * Clean some stings
++ * Made Mp3Exporter a generator. The exported file is still written in the cache.
++ * misc template fixes
++ * fix items urls
++ * add LEM item fields + other fixes
++ * add paging and simplify layout
++ * bundle snack python bindings
++ * svn:ignore .pyc and .swp files
++ * add templatetags
++ * use named urls, add paging to collection, and others
++ * add LEM collection fields
++ * change visualization layout and waveform color
++ * add visualization to web item detail view
++ * add visualization components (waveform, spectrogram)
++ * ticket #10: mark IExporter.process() options argument as optional
++ * Replaced all tabs by spaces in export. Closes: #18
++ * typo
++ * added license headers + cleanup
++ * Temporary fixed mp3 date in urls.py
++ * created htdocs dir, images subdir and moved the css dir
++ * renamed the core css stylesheet
++ * updated css, new stylesheet for the admin
++ * Fixed indent pb
++ * Fixed ogg verbose
++ * Made options optional. Closes: #10
++ * Added Mp3Exporter with (very) partial mapping of DublinCore fields.
++ * fixed quick search form css/layout on Firefox
++ * No metadata in caching path (just ext/item_id.ext). No verbose by default
++ * web interface: added quick search and fixed export download
++ * Added Samalyse to COPYING
++ * coupled the web interface with the export layer
++ * improved collections and items browsing
++ * minor CSS improvements
++ * now using Django typical models instead of "dynamic" ones
++ * made simple models based on Dublin Core elements
++ * Fixed Default call and verbose
++ * Move default.py to old/
++ * Fixed export verbose mode in option dict (see export_test)
++ * Added Trac Components links. Added options dict to exporter arguments
++ * Add pre and post process in CoreExporter. Main calls to OggExporter
++
++ -- Guillaume Pellerin <yomguy@altern.org> Wed, 28 May 2007 22:28:42 +0200
++
++telemeta (0.2.5-2) unstable; urgency=low
++
++ * Fixed --help page
++
++ -- Guillaume Pellerin <yomguy@altern.org> Wed, 10 Jan 2007 12:01:13 +0100
++
++telemeta (0.2.5-1) unstable; urgency=low
++
++ * Fixed --create and --backup option behaviors, thanks to Olivier Guilyardi
++ * Created the Collection class and interface
++ * Fixed error messages
++ * Made the collection XML file saved in collection dir AND user default dir
++
++ -- Guillaume Pellerin <yomguy@altern.org> Mon, 8 Jan 2007 02:50:04 +0100
++
++telemeta (0.2.4-3) unstable; urgency=low
++
++ * Fixed README and INSTALL pages
++
++ -- Guillaume Pellerin <yomguy@altern.org> Thu, 4 Jan 2007 18:56:05 +0100
++
++telemeta (0.2.4-2) unstable; urgency=low
++
++ * Fixed --help menu and man page
++
++ -- Guillaume Pellerin <yomguy@altern.org> Wed, 3 Jan 2007 22:18:05 +0100
++
++telemeta (0.2.4-1) unstable; urgency=low
++
++ * Rewrited the whole main structure
++ * Defined a class and xml for consts
++ * Fixed --erase-media option
++ * Fixed --recover option
++ * Added --create option: creates a database repository and default database xml
++ * Added --backup option: backups a media to the database
++ * Added --album option: proccesses an entire directory (one shot album)
++ * Added --from-xml: takes tags and opts in original xml source
++ * Added --all-default: chooses default argument for all question
++ * Added --par2 : forces par2 file creation
++ * Added --rsync : synchronizes database to a remote server (ssh+rsync)
++ * Added --clean-strings : cleans input strings
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Wed, 3 Jan 2007 18:55:52 +0100
++
++telemeta (0.2.3-3) unstable; urgency=low
++
++ * Fixed --force mode bug
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Wed, 22 Nov 2006 12:33:52 +0100
++
++telemeta (0.2.3-2) unstable; urgency=low
++
++ * fixed non audio file detection with 'file' command
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Wed, 15 Nov 2006 15:30:10 +0100
++
++telemeta (0.2.3-1) unstable; urgency=low
++
++ * Added python-xml parser dependency :
++ xml tag files are now exported to user default directory and in dir_in.
++ * Added par2 dependency : creates secure recovery key file with the "par2" method
++ * Added python-mutagen dependency : new tagging functions
++ * Cleaned : audio functions
++ * Fixed : help page
++ * Debianized
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Tue, 01 Nov 2006 00:25:46 +0100
++
++telemeta (0.2.2) unstable; urgency=low
++
++ * Defined : the tag and option lists
++ * Created : main audio functions
++ * Created : main tags functions
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Tue, 14 Jul 2006 00:00:01 +0100
++
++telemeta (0.1) unstable; urgency=low
++
++ * Initial release
++ * Created : First flac, ogg, mp3 exporting, tagging with basic functions
++
++ -- Guillaume Pellerin <pellerin@parisson.com> Tue, 01 May 2006 23:45:42 +0200
--- /dev/null
--- /dev/null
++5
--- /dev/null
--- /dev/null
++Source: telemeta
++Section: sound
++Priority: optional
++Maintainer: Guillaume Pellerin <yomguy@altern.org>
++Uploaders: Paul Brossier <piem@debian.org>
++Build-Depends: debhelper (>= 5.0.0), docbook-to-man, cdbs (>= 0.4.42), python-setuptools (>= 0.6b3), python-support (>= 0.3), python-all-dev (>= 2.3.5-11)
++Standards-Version: 3.8.0
++
++Package: telemeta
++Architecture: any
++Depends: ${python:Depends}, python-xml, python-mutagen, python-django (>= 1.0-1), python-imaging (>= 1.1.6), sox (>= 14.2.0-1), vorbis-tools, flac, normalize-audio, python-mysqldb, mysql-server, octave2.9, python-tk, libgd2-xpm, libsndfile1 (>= 1.0.17), python-numpy, python-ctypes (>= 1.0.1), python-scikits-audiolab (>= 0.7)
++Recommends: lame, vamp-examples
++Homepage: http://telemeta.org
++Suggests: ecasound, festival, par2
++Description: web frontend to backup, analyse, transcode and stream any audio content with its metadata
++Telemeta is a web audio archiving program which introduces useful and secure methods to
++backup, index, transcode, analyse and publish any digitalized audio file with its metadata.
++It is dedicated to professionnals who wants to easily backup and publish documented sounds
++from collections of vinyls, magnetic tapes or audio CDs over a strong database, in accordance
++with open standards.
++
++Here are the main features of Telemeta:
++ * Secure archiving, editing and publishing of audio files over internet.
++ * "On the fly" transcoding and metadata encapsulating (FLAC, OGG, MP3, WAV, etc..)
++ * User friendly web frontend including workflows and high level search methods
++ * Smart dynamical and skinnable audio player (thanks to Timeside and soundmanager2)
++ * "On the fly" complex audio analyzers based on an easy plugin architecture
++ * Strong SQL backend
++ * XML metadata backup
++ * Auto audio-marking with synthetized voices reading metadata (optional)
++ * Anti-corruption data security management with par2 recovery keys
++ * Data synchronizing over remote servers (rsync + ssh methods)
++
++The Telemeta data model is based on 'collections' and 'items'. A collection is described
++by its metadata and includes original audio items (sounds) and its own metadata. This
++existing model has been designed to fit the one of the French Centre of Etnomusicology (CREM)
++but could be easily adapted/overrided to sue other data structures.
++
--- /dev/null
--- /dev/null
++This package was debianized by Guillaume Pellerin <yomguy@altern.org> on
++Thu, 17 Aug 2006 22:42:14 +0200.
++
++It was downloaded from http://svn.parisson.org/telemeta/
++
++Upstream Authors: Guillaume Pellerin <pellerin@parisson.com>
++ Olivier Guilyardi <olivier@samalyse.com>
++
++Copyright:
++
++ Copyright (C) 2006-2008 Parisson SARL
++ Copyright (C) 2006-2008 Samalyse SARL
++
++License:
++
++ This software is governed by the CeCILL license under French law and
++ abiding by the rules of distribution of free software. You can use,
++ modify and/ or redistribute the software under the terms of the CeCILL
++ license as circulated by CEA, CNRS and INRIA at the following URL
++ "http://www.cecill.info".
++
++ As a counterpart to the access to the source code and rights to copy,
++ modify and redistribute granted by the license, users are provided only
++ with a limited warranty and the software's author, the holder of the
++ economic rights, and the successive licensors have only limited
++ liability.
++
++ In this respect, the user's attention is drawn to the risks associated
++ with loading, using, modifying and/or developing or reproducing the
++ software by the user in light of its specific status of free software,
++ that may mean that it is complicated to manipulate, and that also
++ therefore means that it is reserved for developers and experienced
++ professionals having in-depth computer knowledge. Users are therefore
++ encouraged to load and test the software's suitability as regards their
++ requirements in conditions enabling the security of their systems and/or
++ data to be ensured and, more generally, to use and operate it in the
++ same conditions as regards security.
++
++ The fact that you are presently reading this means that you have had
++ knowledge of the CeCILL license and that you accept its terms.
++
++The Debian packaging is (C) 2008, Guillaume Pellerin <yomguy@parisson.com> and
++is licensed under the CeCILL License, see "http://www.cecill.info".
++
++
--- /dev/null
--- /dev/null
++README
--- /dev/null
--- /dev/null
++2
--- /dev/null
--- /dev/null
++2.4-2.5
--- /dev/null
--- /dev/null
++#!/usr/bin/make -f
++
++DEB_PYTHON_SYSTEM := pysupport
++
++include /usr/share/cdbs/1/rules/debhelper.mk
++include /usr/share/cdbs/1/class/python-distutils.mk
++
++DEB_PYTHON_SETUP_CMD := setup.py
++DEB_COMPRESS_EXCLUDE := .pyc
++DEB_STRIP_EXCLUDE := .pyc
++
--- /dev/null
--- /dev/null
++.TH "telemeta" "1"
++.SH "NAME"
++telemeta \(em backups, transcodes, tags and marks any audio content with metadata
++.SH "SYNOPSIS"
++.PP
++\fBtelemeta\fR [\fB\fIOPTIONS\fR\fP] [\fICOLLECTION\fR] [\fB\fIOPTIONS\fR\fP] [\fB\fIMEDIA\fR\fP]
++.SH "DESCRIPTION"
++.PP
++\fBtelemeta\fR is an audio tool which creates audio transcoded collections fast from fresh mastered files. It can be useful to backup digitalized audio media from vinyls, old tapes or whatever and include them in a database.
++.PP
++Telemeta first creates a simple file structure where the original sounds will be backuped. The files can be transcoded to WAV, FLAC, MP3 and OGG including the corresponding tags.
++.PP
++Here are some cool functions:
++.IP "\fB\fP" 10
++\- XML generation for metadata tags of backuped WAV
++.IP "" 10
++\- Audio marking from a given file or from tags thanks to the Festival speech systhesis tool
++.IP "" 10
++\- File corruption security with par2 recovery files
++.IP "" 10
++\- Collection synchronizing to remote servers (ssh+rsync)
++.IP "" 10
++\- Modify metadata from XML or interactive shell
++.SH "OPTIONS"
++.PP
++These programs follow the usual GNU command line syntax,
++with long options starting with two dashes (`\-'). A summary of
++options is included below. For a complete description, see the
++\fBInfo\fP files.
++.IP "\fB\-\-create\fP " 10
++creates a collection repository
++.IP "\fB\-\-backup\fP " 10
++backups and transcodes wave files to a collection
++.IP "\fB\-\-album\fP " 10
++proccesses an entire directory (one shot album)
++.IP "\fB\-\-backup\fP " 10
++backups a media to the collection
++.IP "\fB\-\-from-xml\fP " 10
++takes tags and opts in original xml source
++.IP "\fB\-\-force\fP " 10
++forces file conversion (no audio test)
++.IP "\fB\-\-par2\fP " 10
++forces par2 security file creation
++.IP "\fB\-\-all-default\fP " 10
++chooses default argument for all question
++.IP "\fB\-\-recover\fP " 10
++check an repair the backuped media with the previously created "par2" security files
++.IP "\fB\-\-rsync\fP " 10
++synchronizes collection to a remote server (ssh+rsync)
++.IP "\fB\-\-erase\fP " 10
++erases a collection (flac, ogg, mp3 only !)
++.IP "\fB\-\-help\fP " 10
++Show summary of options.
++.IP "\fB\-\-version\fP " 10
++Show version of program.
++.SH "EXAMPLES"
++.PP
++\fBtelemeta \-\-create my_collection\fR
++.PP
++\fBtelemeta \-\-backup my_collection file.wav\fR
++.PP
++\fBtelemeta \-\-backup my_collection \-\-album /path/to/directory/\fR
++.PP
++\fBtelemeta \-\-backup my_collection \-\-album \-\-par2 \-\-rsync /path/to/directory/\fR
++.PP
++\fBtelemeta \-\-backup my_collection \-\-album \-\-par2 \-\-rsync \-\-force /path/to/directory/\fR
++.SH "DOWNLOAD"
++.PP
++Telemeta is written in python. So it doesn't require any compilation step.
++.PP
++On Debian or Ubuntu just add these lines to your /etc/apt/sources-list:
++.PP
++\fBdeb http://yomix.org/debian/ binary/\fR
++.PP
++\fBdeb-src http://yomix.org/debian/ source/\fR
++.PP
++Then,
++.PP
++\fBsudo apt-get update\fR
++.PP
++\fBsudo apt-get install telemeta\fR
++.PP
++On other linux platforms, \fIdownload (link to URL http://yomix.org/telemeta/download/) \fR the lastest .tar.gz archive, uncompress it, go into the created directory and just type this with your favorite shell :
++.PP
++\fBpython install.py\fR
++.PP
++See README and INSTALL file for more informations.
++.PP
++You can also get the lastest version of Telemeta with subversion (just type 'enter' for the password:
++.PP
++svn co http://svn.yomix.org/svn/telemeta/trunk telemeta \-\-username=anonymous
++.SH "DEPENDS"
++.PP
++python (>= 2.3.5-7), python-xml, python-central (>= 0.5), python-mutagen, sox, vorbis-tools, flac, lame, normalize-audio, ecasound, festival, par2
++.SH "SEE ALSO"
++.PP
++The program is documented fully by Guillaume Pellerin. More info at \fI\fIhttp://svn.yomix.org/telemeta/ (link to URL http://svn.yomix.org/telemeta/) \fR\fP.
++.SH "AUTHOR"
++.PP
++This manual page was written by Guillaume Pellerin <yomguy@altern.org> for
++the \fBDebian\fP system (but may be used by others). Permission is
++granted to copy, distribute and/or modify this document under
++the terms of the GNU General Public License, Version 2 any
++later version published by the Free Software Foundation.
++
++.PP
++On Debian systems, the complete text of the GNU General Public
++License can be found in /usr/share/common-licenses/GPL.
++
++.\" created by instant / docbook-to-man, Fri 26 Jan 2007, 00:26
--- /dev/null
--- /dev/null
++<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
++
++<!-- Process this file with docbook-to-man to generate an nroff manual
++ page: `docbook-to-man manpage.sgml > manpage.1'. You may view
++ the manual page with: `docbook-to-man manpage.sgml | nroff -man |
++ less'. A typical entry in a Makefile or Makefile.am is:
++
++manpage.1: manpage.sgml
++ docbook-to-man $< > $@
++
++
++ The docbook-to-man binary is found in the docbook-to-man package.
++ Please remember that if you create the nroff version in one of the
++ debian/rules file targets (such as build), you will need to include
++ docbook-to-man in your Build-Depends control field.
++
++ -->
++
++ <!-- Fill in your name for FIRSTNAME and SURNAME. -->
++ <!ENTITY dhfirstname "<firstname>Guillaume</firstname>">
++ <!ENTITY dhsurname "<surname>Pellerin</surname>">
++ <!-- Please adjust the date whenever revising the manpage. -->
++ <!ENTITY dhdate "<date>August 17, 2006</date>">
++ <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
++ allowed: see man(7), man(1). -->
++ <!ENTITY dhsection "<manvolnum>1</manvolnum>">
++ <!ENTITY dhemail "<email>yomguy@altern.org</email>">
++ <!ENTITY dhusername "Guillaume Pellerin">
++ <!ENTITY dhucpackage "<refentrytitle>telemeta</refentrytitle>">
++ <!ENTITY dhpackage "telemeta">
++
++ <!ENTITY debian "<productname>Debian</productname>">
++ <!ENTITY gnu "<acronym>GNU</acronym>">
++ <!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
++]>
++
++<refentry>
++ <refentryinfo>
++ <address>
++ &dhemail;
++ </address>
++ <author>
++ &dhfirstname;
++ &dhsurname;
++ </author>
++ <copyright>
++ <year>2006-2007</year>
++ <holder>&dhusername;</holder>
++ </copyright>
++ &dhdate;
++ </refentryinfo>
++ <refmeta>
++ &dhucpackage;
++
++ &dhsection;
++ </refmeta>
++ <refnamediv>
++ <refname>&dhpackage;</refname>
++
++ <refpurpose>backups, transcodes, tags and marks any audio content with metadata</refpurpose>
++ </refnamediv>
++ <refsynopsisdiv>
++ <cmdsynopsis>
++ <command>&dhpackage;</command>
++ <arg><option><replaceable>OPTIONS</replaceable></option></arg>
++ <arg><replaceable>COLLECTION</replaceable></arg>
++ <arg><option><replaceable>OPTIONS</replaceable></option></arg>
++ <arg><option><replaceable>MEDIA</replaceable></option></arg>
++ </cmdsynopsis>
++ </refsynopsisdiv>
++ <refsect1>
++ <title>DESCRIPTION</title>
++
++ <para><command>&dhpackage;</command> is an audio tool which creates audio transcoded collections fast from fresh mastered files. It can be useful to backup digitalized audio media from vinyls, old tapes or whatever and include them in a database.</para>
++ <para>Telemeta first creates a simple file structure where the original sounds will be backuped. The files can be transcoded to WAV, FLAC, MP3 and OGG including the corresponding tags.</para>
++ <para>Here are some cool functions:</para>
++ <variablelist>
++ <varlistentry>
++ <term><option></option></term>
++ <listitem>
++ <para>- XML generation for metadata tags of backuped WAV</para>
++ <para>- Audio marking from a given file or from tags thanks to the Festival speech systhesis tool</para>
++ <para>- File corruption security with par2 recovery files</para>
++ <para>- Collection synchronizing to remote servers (ssh+rsync)</para>
++ <para>- Modify metadata from XML or interactive shell</para>
++ </listitem>
++ </varlistentry>
++ </variablelist>
++ </refsect1>
++ <refsect1>
++ <title>OPTIONS</title>
++
++ <para>These programs follow the usual &gnu; command line syntax,
++ with long options starting with two dashes (`-'). A summary of
++ options is included below. For a complete description, see the
++ <application>Info</application> files.</para>
++
++ <variablelist>
++ <varlistentry>
++ <term><option>--create</option>
++ </term>
++ <listitem>
++ <para>creates a collection repository</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--backup</option>
++ </term>
++ <listitem>
++ <para>backups and transcodes wave files to a collection</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--album</option>
++ </term>
++ <listitem>
++ <para>proccesses an entire directory (one shot album)</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--backup</option>
++ </term>
++ <listitem>
++ <para>backups a media to the collection</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--from-xml</option>
++ </term>
++ <listitem>
++ <para>takes tags and opts in original xml source</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--force</option>
++ </term>
++ <listitem>
++ <para>forces file conversion (no audio test)</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--par2</option>
++ </term>
++ <listitem>
++ <para>forces par2 security file creation</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--all-default</option>
++ </term>
++ <listitem>
++ <para>chooses default argument for all question</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--recover</option>
++ </term>
++ <listitem>
++ <para>check an repair the backuped media with the previously created "par2" security files</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--rsync</option>
++ </term>
++ <listitem>
++ <para>synchronizes collection to a remote server (ssh+rsync)</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--erase</option>
++ </term>
++ <listitem>
++ <para>erases a collection (flac, ogg, mp3 only !)</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--help</option>
++ </term>
++ <listitem>
++ <para>Show summary of options.</para>
++ </listitem>
++ </varlistentry>
++ <varlistentry>
++ <term><option>--version</option>
++ </term>
++ <listitem>
++ <para>Show version of program.</para>
++ </listitem>
++ </varlistentry>
++ </variablelist>
++ </refsect1>
++
++ <refsect1>
++ <title>EXAMPLES</title>
++ <para><command>telemeta --create my_collection</command></para>
++ <para><command>telemeta --backup my_collection file.wav</command></para>
++ <para><command>telemeta --backup my_collection --album /path/to/directory/</command></para>
++ <para><command>telemeta --backup my_collection --album --par2 --rsync /path/to/directory/</command></para>
++ <para><command>telemeta --backup my_collection --album --par2 --rsync --force /path/to/directory/</command></para>
++ </refsect1>
++
++ <refsect1>
++ <title>DOWNLOAD</title>
++ <para>Telemeta is written in python. So it doesn't require any compilation step.</para>
++ <para>On Debian or Ubuntu just add these lines to your /etc/apt/sources-list:</para>
++
++ <para><command>deb http://debian.parisson.org/ binary/</command></para>
++ <para><command>deb-src http://debian.parisson.org/ source/</command></para>
++
++ <para>Then,</para>
++
++ <para><command>sudo apt-get update</command></para>
++ <para><command>sudo apt-get install telemeta</command></para>
++
++ <para>On other linux platforms, <ulink url="http://debian.parisson.org/">download</ulink> the lastest tar.gz archive, uncompress it, go into the created directory and just type this with your favorite shell :</para>
++
++ <para><command>python install.py</command></para>
++
++ <para>See README and INSTALL file for more informations.</para>
++ <para>You can also get the lastest version of Telemeta with subversion (just type 'enter' for the password:</para>
++ <para>svn co http://svn.parisson.org/svn/telemeta/trunk telemeta --username=anonymous</para>
++
++ </refsect1>
++
++ <refsect1>
++ <title>DEPENDS</title>
++
++ <para>python (>= 2.3.5-7), python-xml, python-central (>= 0.5), python-mutagen, sox, vorbis-tools, flac, lame, normalize-audio, ecasound, festival, par2</para>
++ </refsect1>
++
++ <refsect1>
++ <title>SEE ALSO</title>
++
++ <para>The program is documented fully by Guillaume Pellerin. More info at <citetitle><ulink url="http://svn.parisson.org/telemeta/">http://svn.parisson.org/telemeta/</ulink></citetitle>.</para>
++ </refsect1>
++
++ <refsect1>
++ <title>AUTHOR</title>
++
++ <para>This manual page was written by &dhusername; <&dhemail;> for
++ the &debian; system (but may be used by others). Permission is
++ granted to copy, distribute and/or modify this document under
++ the terms of the &gnu; General Public License, Version 2 any
++ later version published by the Free Software Foundation.
++ </para>
++ <para>
++ On Debian systems, the complete text of the GNU General Public
++ License can be found in /usr/share/common-licenses/GPL.
++ </para>
++
++ </refsect1>
++</refentry>
++
++<!-- Keep this comment at the end of the file
++Local variables:
++mode: sgml
++sgml-omittag:t
++sgml-shorttag:t
++sgml-minimize-attributes:nil
++sgml-always-quote-attributes:t
++sgml-indent-step:2
++sgml-indent-data:t
++sgml-parent-document:nil
++sgml-default-dtd-file:nil
++sgml-exposed-tags:nil
++sgml-local-catalogs:nil
++sgml-local-ecat-files:nil
++End:
++-->
++
++
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Generator: Adobe Illustrator 11.0, SVG Export Plug-In . SVG Version: 6.0.0 Build 78) -->
++<svg:svg
++ xmlns:xapGImg="http://ns.adobe.com/xap/1.0/g/img/"
++ xmlns:xap="http://ns.adobe.com/xap/1.0/"
++ xmlns:x="adobe:ns:meta/"
++ xmlns:ns0="http://ns.adobe.com/SaveForWeb/1.0/"
++ xmlns:ns="http://ns.adobe.com/Variables/1.0/"
++ xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/"
++ xmlns:dc="http://purl.org/dc/elements/1.1/"
++ xmlns:cc="http://web.resource.org/cc/"
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:svg="http://www.w3.org/2000/svg"
++ xmlns:xlink="http://www.w3.org/1999/xlink"
++ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++ i:viewOrigin="282.0176 351.5405"
++ i:rulerOrigin="-240 -200"
++ i:pageBounds="240 400 560 200"
++ width="231.896"
++ height="102.419"
++ viewBox="0 0 231.896 102.419"
++ overflow="visible"
++ enable-background="new 0 0 231.896 102.419"
++ xml:space="preserve"
++ id="svg2"
++ sodipodi:version="0.32"
++ inkscape:version="0.45.1"
++ sodipodi:docname="logo_telemeta.svg"
++ sodipodi:docbase="/home/momo/dev/telemeta/telemeta/design"
++ inkscape:output_extension="org.inkscape.output.svg.inkscape"><svg:defs
++ id="defs50" /><sodipodi:namedview
++ inkscape:window-height="995"
++ inkscape:window-width="1392"
++ inkscape:pageshadow="2"
++ inkscape:pageopacity="0.0"
++ guidetolerance="10.0"
++ gridtolerance="10.0"
++ objecttolerance="10.0"
++ borderopacity="1.0"
++ bordercolor="#666666"
++ pagecolor="#ffffff"
++ id="base"
++ inkscape:zoom="1.5394832"
++ inkscape:cx="115.948"
++ inkscape:cy="51.209499"
++ inkscape:window-x="0"
++ inkscape:window-y="24"
++ inkscape:current-layer="svg2" />
++ <svg:metadata
++ id="metadata4">
++ <ns:variableSets>
++ <ns:variableSet
++ varSetName="binding1"
++ locked="none">
++ <ns:variables />
++ <ns:sampleDataSets />
++ </ns:variableSet>
++ </ns:variableSets>
++ <ns0:sfw>
++ <ns0:slices />
++ <ns0:sliceSourceBounds
++ y="249.121"
++ x="282.018"
++ height="102.419"
++ width="231.896"
++ bottomLeftOrigin="true" />
++ </ns0:sfw>
++<xpacket /><x:xmpmeta
++ x:xmptk="XMP toolkit 3.0-29, framework 1.6">
++
++<svg:metadata
++ id="metadata52"><rdf:RDF>
++
++ <rdf:Description
++ rdf:about="">
++ </rdf:Description>
++
++ <rdf:Description
++ rdf:about="">
++ </rdf:Description>
++
++ <rdf:Description
++ rdf:about="">
++ <xap:CreateDate>2007-06-11T17:47:57Z</xap:CreateDate>
++ <xap:ModifyDate>2007-06-11T19:05:18Z</xap:ModifyDate>
++ <xap:CreatorTool>Illustrator</xap:CreatorTool>
++ <xap:Thumbnails>
++ <rdf:Alt>
++ <rdf:li
++ rdf:parseType="Resource">
++ <xapGImg:format>JPEG</xapGImg:format>
++ <xapGImg:width>256</xapGImg:width>
++ <xapGImg:height>116</xapGImg:height>
++ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
++AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
++DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
++Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAdAEAAwER
++AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
++AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
++UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
++1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
++qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
++obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
++0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqwjzR+Yf1W5b
++TdFjF1e14NNTmqt/Kij7bfh88yceC9zyQSkqeUfPmu/vtUujBG+/Cdz0PhEnwr8jTLPFhHkikSn5
++R3CAOuqhZQdqQkU/2XOv4ZH8z5JpExaZ+YugfvLa4XVrRftW7MztxHgHow9uLfRgMscvJd2T+XfM
++9lrcLhFaC8h2ubOTZ0PT2qK98pnjMU2nGVq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7
++FXYq7FXYq7FXYq7FXYq7FWLeedYvYYbfRtMqdT1MlF4mhSPozV7V6V7Cpy7DEczyCCo2em+XPIui
++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</xapGImg:image>
++ </rdf:li>
++ </rdf:Alt>
++ </xap:Thumbnails>
++ </rdf:Description>
++
++ <rdf:Description
++ rdf:about="">
++ <dc:format>image/svg+xml</dc:format>
++ </rdf:Description>
++
++<cc:Work
++ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></svg:metadata></x:xmpmeta>
++ <xpacket />
++ </svg:metadata>
++ <svg:switch
++ id="switch6">
++ <svg:foreignObject
++ requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
++ x="0"
++ y="0"
++ width="1"
++ height="1"
++ id="foreignObject8">
++ <i:pgfRef
++ xlink:href="#adobe_illustrator_pgf">
++ </i:pgfRef>
++ </svg:foreignObject>
++ <svg:g
++ i:extraneous="self"
++ id="g10">
++ <svg:g
++ id="logo_telemeta"
++ i:layer="yes"
++ i:dimmedPercent="3"
++ i:rgbTrio="#4F008000FFFF">
++ <svg:g
++ id="g13">
++ <svg:path
++ i:knockout="Off"
++ fill="#9291B7"
++ d="M57.119,9.701L57.119,9.701c0.001-0.003,0-0.003-0.005-0.006 C51.827,2.083,42.232-1.563,33.222,0.631C24.209,2.825,17.36,10.47,16.16,19.669c0,0-0.003,0-0.005,0.007l0,0 c-0.002,0.013-0.004,0.029-0.006,0.044l1.372,0.228c1.434-7.288,8.103-13.583,16.59-15.653 c8.484-2.063,17.295,0.46,21.919,6.271l1.118-0.827C57.142,9.73,57.13,9.716,57.119,9.701z"
++ id="path15" />
++ <svg:path
++ i:knockout="Off"
++ fill="#6E6E99"
++ d="M23.844,23.327c1.042-5.32,5.921-9.913,12.119-11.417 c6.201-1.514,12.635,0.323,16.017,4.567l1.116-0.832c-0.01-0.016-0.019-0.027-0.029-0.041l0,0v-0.001 C49.108,9.919,41.943,7.204,35.22,8.839c-6.727,1.638-11.837,7.339-12.741,14.206c0,0.002-0.003,0.008-0.005,0.009h0.005 c-0.003,0.017-0.009,0.033-0.011,0.048L23.844,23.327z"
++ id="path17" />
++ <svg:path
++ i:knockout="Off"
++ fill="#4A477A"
++ d="M51.48,22.287c-3.218-4.63-8.828-6.754-14.31-5.42 c-5.42,1.32-9.525,5.912-10.221,11.439l1.372,0.217c0.81-4.162,4.631-7.758,9.513-8.943c4.868-1.188,9.917,0.244,12.56,3.576 l1.121-0.832c-0.014-0.011-0.021-0.024-0.034-0.034h0.002C51.483,22.285,51.481,22.285,51.48,22.287z"
++ id="path19" />
++ <svg:g
++ id="g21">
++ <svg:path
++ i:knockout="Off"
++ fill="#9291B7"
++ d="M0.437,61.69L0.437,61.69c-0.003,0.005-0.003,0.005-0.003,0.016 c-2.277,14.258,4.563,28.717,17.059,35.98c12.494,7.272,28.444,6.074,39.726-2.968c0,0,0.001,0.002,0.01-0.005l0,0 c0.019-0.01,0.038-0.027,0.06-0.043l-1.297-1.733c-9.48,6.639-23.767,6.508-35.54-0.333 C8.687,85.764,1.513,73.418,2.596,61.897l-2.148-0.276C0.441,61.636,0.438,61.666,0.437,61.69z"
++ id="path23" />
++ <svg:path
++ i:knockout="Off"
++ fill="#4A477A"
++ d="M52.531,82.311c-6.915,4.855-17.354,4.746-25.942-0.256 c-8.601-4.997-13.845-14.007-13.063-22.422l-2.152-0.279c-0.006,0.031-0.006,0.053-0.008,0.079l0,0l-0.001,0.002 c-1.689,10.662,3.425,21.45,12.743,26.873c9.325,5.423,21.225,4.532,29.65-2.204c0.007-0.007,0.012-0.009,0.017-0.007 l-0.005-0.005c0.025-0.016,0.05-0.027,0.065-0.043L52.531,82.311z"
++ id="path25" />
++ <svg:path
++ i:knockout="Off"
++ d="M20.357,53.638c-1.381,8.681,2.628,17.121,10.226,21.541c7.513,4.371,17.084,3.652,23.834-1.809 l-1.308-1.732c-5.402,3.808-13.576,3.719-20.342-0.222c-6.754-3.921-10.881-10.984-10.253-17.575l-2.154-0.278 c0.004,0.026-0.003,0.047-0.003,0.072l-0.002,0.002C20.355,53.637,20.354,53.642,20.357,53.638z"
++ id="path27" />
++ </svg:g>
++ <svg:path
++ i:knockout="Off"
++ d="M49.258,59.804c-0.215,0.356-0.556,0.591-0.933,0.681c-0.375,0.093-0.786,0.043-1.141-0.173 l-5.254-3.183l-5.256-3.183c-0.356-0.216-0.591-0.558-0.685-0.932c-0.091-0.378-0.04-0.788,0.175-1.144l3.184-5.255 l3.185-5.254c0.216-0.356,0.557-0.59,0.934-0.682c0.375-0.094,0.786-0.043,1.141,0.17l5.255,3.185l5.254,3.186 c0.355,0.214,0.591,0.557,0.682,0.931c0.094,0.376,0.044,0.786-0.172,1.142l-3.185,5.256L49.258,59.804z"
++ id="path29" />
++ <svg:path
++ i:knockout="Off"
++ fill="#4A477A"
++ d="M40.835,39.122c0.427-0.706,1.104-1.2,1.907-1.4 c0.802-0.193,1.631-0.066,2.335,0.357c0,0,4.465,2.707,8.011,4.857l1.662-2.744c0.501-0.831,0.236-1.921-0.596-2.425 l-12.28-7.441c-0.828-0.504-1.918-0.235-2.422,0.593l-7.443,12.285c-0.501,0.83-0.231,1.919,0.596,2.423l3.137,1.9 L40.835,39.122z"
++ id="path31" />
++ <svg:path
++ i:knockout="Off"
++ d="M82.463,54.618c-1.339,0-2.109-0.156-2.424-0.49c-0.313-0.328-0.459-1.102-0.459-2.435V43.87v-0.169 h0.169h3.648v-5.643h-3.648H79.58v-0.169v-7.744h-6.93v7.744v0.169h-0.169h-1.393v5.643h1.485h0.169v0.169v8.698 c0,3.006,0.481,5.089,1.43,6.188c0.938,1.09,2.705,1.642,5.253,1.642h3.188l1.601-5.78H82.463z"
++ id="path33" />
++ <svg:path
++ i:knockout="Off"
++ d="M208.41,54.618c-1.337,0-2.109-0.156-2.421-0.491c-0.313-0.334-0.458-1.107-0.458-2.437v-7.817 v-0.169h0.167h3.648v-5.646h-3.648h-0.167v-0.169v-7.744h-6.933v7.744v0.169h-0.167h-1.4v5.646h1.495h0.17v0.169v8.695 c0,3.006,0.479,5.089,1.426,6.188c0.942,1.09,2.708,1.642,5.248,1.642h3.188l1.603-5.78H208.41z"
++ id="path35" />
++ <svg:path
++ i:knockout="Off"
++ d="M102.853,54.618c-1.798,0-3.357-0.142-4.634-0.42l-0.421-0.092l0.372-0.219 c2.944-1.726,5.065-3.39,6.305-4.947c1.22-1.54,1.839-3.307,1.839-5.251c0-2.17-0.723-3.756-2.146-4.712 c-1.462-0.974-3.839-1.468-7.063-1.468c-3.866,0-6.669,0.7-8.33,2.08c-1.651,1.365-2.489,3.673-2.489,6.859 c0,4.259,1.336,7.684,3.971,10.18c2.635,2.503,6.239,3.771,10.714,3.771h2.492l1.571-5.78H102.853z M93.583,49.868 l-0.042-0.213c-0.186-0.934-0.28-1.812-0.28-2.609c0-2.37,1.279-3.572,3.802-3.572c1.516,0,2.284,0.475,2.284,1.41 c0,1.492-1.821,3.092-5.567,4.889L93.583,49.868z"
++ id="path37" />
++ <svg:path
++ i:knockout="Off"
++ d="M135.716,54.618c-1.803,0-3.362-0.142-4.635-0.42l-0.421-0.092l0.372-0.219 c2.936-1.72,5.057-3.386,6.303-4.947c1.223-1.537,1.843-3.303,1.843-5.251c0-2.167-0.725-3.752-2.153-4.712 c-1.456-0.974-3.83-1.468-7.057-1.468c-3.867,0-6.671,0.7-8.332,2.08c-1.656,1.369-2.493,3.676-2.493,6.859 c0,4.259,1.337,7.685,3.976,10.18c2.637,2.503,6.239,3.771,10.709,3.771h2.492l1.575-5.78H135.716z M126.438,49.868 l-0.04-0.215c-0.187-0.966-0.28-1.844-0.28-2.608c0-2.37,1.28-3.572,3.808-3.572c1.513,0,2.281,0.475,2.281,1.41 c0,1.495-1.823,3.094-5.571,4.889L126.438,49.868z"
++ id="path39" />
++ <svg:rect
++ x="109.454"
++ y="30.146"
++ i:knockout="Off"
++ width="6.879"
++ height="30.252"
++ id="rect41" />
++ <svg:path
++ i:knockout="Off"
++ d="M164.265,44.397c0.436,0.452,0.647,1.295,0.647,2.578v13.423h6.885V47.526 c0-3.927-0.589-6.533-1.751-7.748c-1.151-1.218-3.632-1.836-7.367-1.836h-20.48v22.456h6.882V43.89v-0.168h0.169h4.138h0.168 v0.168v16.508h6.888V43.89v-0.168h0.169h1.099C162.997,43.721,163.835,43.943,164.265,44.397z"
++ id="path43" />
++ <svg:path
++ i:knockout="Off"
++ d="M190.965,54.618c-1.793,0-3.353-0.141-4.632-0.418l-0.422-0.091l0.372-0.22 c2.934-1.725,5.055-3.391,6.304-4.949c1.227-1.553,1.851-3.319,1.851-5.251c0-2.167-0.729-3.753-2.164-4.712 c-1.453-0.974-3.828-1.468-7.057-1.468c-3.863,0-6.666,0.699-8.331,2.076c-1.651,1.373-2.489,3.681-2.489,6.861 c0,4.261,1.338,7.687,3.973,10.181c2.639,2.503,6.243,3.771,10.713,3.771h2.493l1.562-5.78H190.965z M181.688,49.862 l-0.04-0.215c-0.184-0.973-0.276-1.848-0.276-2.602c0-2.372,1.281-3.575,3.804-3.575c1.515,0,2.281,0.476,2.281,1.413 c0,1.5-1.822,3.098-5.568,4.884L181.688,49.862z"
++ id="path45" />
++ <svg:path
++ i:knockout="Off"
++ d="M211.859,46.628c0,4.199,1.383,7.576,4.106,10.039c2.731,2.477,6.447,3.731,11.044,3.731h4.886 v-22.34h-9.395c-3.714,0-6.45,0.685-8.134,2.034C212.703,41.429,211.859,43.627,211.859,46.628z M219.792,44.569 c0.63-0.485,1.738-0.732,3.299-0.732h1.755h0.167v0.168v10.443v0.204l-0.201-0.038c-1.776-0.341-3.235-1.213-4.33-2.592 c-1.095-1.368-1.652-3.027-1.652-4.929C218.829,45.91,219.153,45.061,219.792,44.569z"
++ id="path47" />
++ </svg:g>
++ </svg:g>
++ </svg:g>
++ </svg:switch>
++ <i:pgf
++ id="adobe_illustrator_pgf">
++
++ eJzsveuOJMlxJvq/gHqHOj8IDLGHtXG/EIsDZGREShSGFEFKCx1Ii0Frpjjqsz3ds32Rlvv0x67u
++5peIjLwMSUmVPj1VGZXhGeHhbmZu9tlnP/u/fvv7Xxy++/DPL7+on4unx4ef/ez48eXN5w8ff/lE
++h59+9e7dl0+fP+Khr37386eyfC7wU4dfDd/IJ//7y8dPbz+8/yX9jf96wvO/+pvn6fnn8GP6OR77
++u7ef373A0Xcfvv/wzeeXdy8/vHx+8/zm7c/dl0In85vP8Jnuv5blf62Kon8af1m0T7/9NX5k+vDl
++/Xdv338/ffjfv3yqhuqpasantmye6rbCv//129+9fIo/9FyUfYeffC6rsoSP189jWZdwTvncNkWL
++J84fvv3yw8v7z7/9+OHbl0+fjh/effj46ZdPxz++ef/06zffw1/ePP2/L+/effi3p+ndm2//J5xz
+++FX7zentuxe4zx/efH7q6a4Pv6q/oZP//hOcBR3g73S8/+ZXP8Ch3798/gzXBn3TIP3uryb7lXD0
++ueuqHn40XYc/6q7pn746vvnDP8HlPn3/7sM/v3lHo/Vf4I9t243wY6hhBODHOMAn3768iz82dkPn
++f1T1WMEDefPl/Uv8waHoB/jRj11J/RXwwa/fvnvzKf5gMeLnurLFS+zhGXz165eP8YfgmeDVVU2N
++vZV4zle//vA/30Sfo/bVbz68TTqQC8Z/BQ7KV3/78c3775Orbuhi2qas8GLwS7/67cvnt59fnn58
+++fivL++//ZfklLEr6Ab6gQaubuunr3734RN8LvhYX7UtfnlV0w8auN99+PL23bv0ItqSThixwxKv
++5StYE5+z9/qPv3v5ER/nR5gP/+PnMmv+7uWHH9/BzKdZ2xRwQ0/VOML/ze/6UZh19LFyeO4LeEgl
++Pjr4OZTVc4u/tMP4DGunkhP87H7517cv//bLp998eP8iU/jw8fPv3/4fmKp1VTzBOXL4d1/evXz8
+++/dvP8NM7ejYyBP71x++e3kHX+1PP717Q/OZWun/L5/4uzcfv3/5DOvyw7svn0lGDO5bfvPlh6/f
++/PEFl1opX/K3P768/7sP/50u8xcV3EvfdtBfWcEaHvvmqeqo97Jsm6dmkG8r+Zj0il1gB9p1j6P/
++Wxjsv/349vu3739ZdhV0XQ6yLv/q49vv/LLsh+KpLvQH3chzWwX/6zv/P7lqGIPPn1/ey6pe3n93
++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
+++CPueycCifceb37JN5X+iL5Wu1VpU5pHOnXso/3SOjY9wh9r8Nf6pX10Hctk7EM+i5Cu7FjY0oER
++SpuVH4OlMUm++r1Gdw3Q7jkyRau9IXsl940JYmq90k5VIt71c79ND/PWPL/fb/E+2Bu8i8MIXhtw
++zuu/OP/9+X9I//0vfvt3/+lX//RPv/7db63h3//6f/zmt9b0797+7D//w+/+6Z9//ec/+zf+FxZK
++oUgJdPOf3UiZLpd4pHYJazcP3Xbbvzz//p9n67+87W9/9fZf/9v29nc/Q/sv/locO75d4tk+YW1f
++xzb7rBrt2ae28dnfqh//UT8Hd2/RgidDngnLurOqlP1TYJu09fGn7+T3w7Z3uJeBjqNdnkSLlEsW
++OKQYoe5GDKYHRIHAJb434fy88Tj1QLg3kAKinZ//pQnYc8MQ0h12V1lGj35nwp3e6HeW687dat2k
++bwqgeGo87+CdeXx8ty5awgm/kx/a2/jOYI1F/fRGPn5Ky+vO8zE6bPZ9bCz2+D6MaMeINjZeX9/R
++6V31qK/G0BuvO1PrjdeHziW4853HMMx02J3WpfNa/d71jb/lN7bem6HfqT859DvbnWlsbJoJJNUa
++CZSNQEOjzcQpIgai76Lasc1TrjkL4+O1T/lFoLz1ibymJ/s7p8Zsj4/vhOfqfudhjSPD5TDz78rk
++fxi2vSR1MJofVjEryLDnnjv9dx+iWOAfikz3to1LJo6NgNBsKqSeriWT++ooI/28s3Xked05zt6B
+++T23Xvw7LhkRII+PJ+viSP7zQh+aZs8nv46zZyM8eWjiHV9HcVwy2Zi0jEsmb3ldHanz/DEuGTXm
++4c7UemMcl0ywd9Zxyfg7eScQnyVda9WXjPcmjktmv6+jbHemsdFkHzxU45LhbE+98Zk4CbWNSyYY
++0acpv3PyUTpzDCuu9YlM45Jxdk7jQmj31VGe7ww3hsth5t+Vyccl8+N3mXhYCuGgCBdZGZIazzEy
++b70SrQCgcZ52TmoMjZvdaY/7nQ13nix4xM0bd2vcx8asd4ITalkb43xnTnl9fNfmjBxG1+PR7mxj
++Y7DOn8vuevwU2crcth3nv73vaDvXLJC8/hkNso7fPuyNbW4UNbeRHDaePH3bHj/V2mHkp5zflMt8
++uPOc51aogeBk770suwUhDW0NSIFi8u7s9fSyXz5N92jq+PHytvc3nqTOF/MkYx4qvk7/ZswzNG52
++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
++5e8WNPKqxXf2xpwet7xlZsfqz+ZfSQPWdvSNd86dMjDHBBENmjpn7rShRovocfNby7ZsXfne3DMz
++jwVDbl2wZG36rpXv3tqD6/bCD9LgNZ8/NZ5G+eTh18+9dWJpznHu6L4T77j3FnN6dcc+8fkaKOq2
++HM3dG3bXWz+lvbhi0c18CB00/9uNpl1PXkE6aTJ02i2zJ/RzsmVU6XL1vMceuE6Uk963vQWS4Lf3
++5uSeEuKRD3+y2m4XPzAkfdeqjx8ZQx0UD5k8e8Zlf849OXaZ9NcX//7A5Timfp8ZL+LWvOqD28/M
++ea7KKdNfX2ZGbNXiO3piqj/hpaXcXNiJaDuvkgyZeMPUi7rkOpj0nPX8ux8sfGjKwL/06T/hjldo
++Bqz5eN6fc99VZfjzS43EX/P5wwPp53PfXclpW3554+az6NHWwyZOv2ZQrnGi+UX3v73kx28Wv/LY
++ffc+8sJ7363Gqq//6rHS/Hf9/Sfzrk0/LpjWBhp79XNLRDJv/OHl60j6Nuo+asp14/vnWsI6T/v7
++lyvXrV259KtPP/nyh5UscDYvfXVS65wni2e/LS3AefC38afDOfvjldKx675++kpqSstzLr/uusvP
++yZka+nD13q+w8DevX7t2fSqHfv/k0bH2+bd5h3OnPb/E2ls2r/jkuZuvuOnpj5aZH63+5MFhpE6p
++wdfecN2lvXJOml2mvrAkf4+HQ9+iB8bQ/D2pdcfufcZcN08vZvuJzau++eCN95esTOv32/u30/pu
++1GPs9bOvG1WSnRrQrAJbfDlsR+8+OqX0z2ed/ZeLrpo2+64nFiz+fnUWUn3rht9X/L7eSlvxzi28
++vvtrwTet7NRss/RoFVBd8LP+108WPDrvjjvmPfrsK28u/vLH3zYUfi79LH/7JlrfbUfOvHPu1MFh
++brPeX1awWdCNvy/98uPFiz/6fMmPv65al6e45X90u3B9H3fOxDvuv3Ny/+zFQZcphUeLP5vXrV61
++avXaDZsqh0evxwvFT9sxtz3y2N3X9Gpsv+qkofPerbBZO/7R55V+UGrpDX997m/3XJ61x3WY9NzX
++a7dfRmU/67977mq9Trpe+/ArC1+Yd2kb+1XHD7zz7V82b7+Myn62rlh8f3+9vB9auHjxgnvHZJwj
++Tr3iyc9Wb7+Iyn82/vTu/Vff+rf3vv7+y9fnXZyZhiUzFvyQp/jt0mfDL5++8/5Xv/6+6oe37hpk
++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
++
++
++ 3y5YK/6afOTgGp4Ti0674oKB2iJim658+MWXn9/z2su/vuPys47t9cQQMHj00GWrIOry0mKGTaTO
++jksuPzGCBWHWafe+8te3//DMC88+/OMzBwFR9QUGvfor5sOodg1tW8PI6DVnXfmtiJbEeq5++o/P
++3nnJrffvurAXP/E/FFa/ZWkXCmHX0NBaELL/Ba2+9LITZ0SUceI9j99yTCxzwVWMvAHAW0yfv34N
++1bm7iJGq/wUm0LrvXH3epogitt90+86u2Izt3z6RgGZjx8QmLti6Pb8CJU1L5I5oFbNpHCA5Z5x4
++5TWn1Vp+55z54+/nxb/bj/nqICJmJoyNtRfPPKtAANQFg72iU//bJMldd86NV3ylxvDad/lPLsY+
++SpxxGsRP/pI9Prb0tEu/R8M3LbsNgGOHzaLo9NNPvu7W7x9XRekw99u33X7WbPivjedceIxYCKxp
++X4z1nHXtFVCzmJX7xqlQ7pS5PJgbL7jtzotSlUXkb3rk9h34X/2X3vCdI2PWkpliFL72gxu/CYH0
++V5x1JQrkmEVLSb5mnHDDPbeeXRFjf9VVv37x5xRydtuNt156XOKoo7qEEBUu/PE1p4n/SF99x1X4
++zY4NS2j5mP/N2+790UmhkZ1/7hNvvvMIRMadX7x21607s8ec+XVAvs4+/upbfnhmT+zke564BcFA
++nQPrGViUuureey4JoWOHfv6XvXuf/S6gUu989FdX9scS51z2TYBCz//qjb+86/oL7n35jUcwcnR3
++ZhNDhNtOuen+n5yugIarrweA0ftPXfTd255+5aVdp3fEVp17663n9YkPLrrg/md+9/Srf9/7pzuS
++Mb9nMLdKrm9dF//iF5fKoNdLL3kaMQQfvPbKW3v37rlO9P2sM+/eff9l0Pwdd/72+d8/9/beva/e
+++rWvn3LMxgD0cvLPH7qOkSft33o4DPR4AeF2pbte2vPQTrHMbL3hgftuvOQxUcae+2/4diaEdD7j
++oadu5mDdqZ+8FsYuvLwTEpM3v/b+qz8RH0ldcuM5a2NfffSdvW89deNxKDmxeanijpO++cBLz/2U
++A98f+0gFvumtWwEH0nnNnr3v/UosYQPnfVushd1X/fbPr9x3FgjC9E1HX3bbfY8+9fxf3v79D0m6
++5l7x4t6K3zMXA2jpG8/t3fu7c2JLzzj3GOj23E+eevQyADZOO+7a+1/483uAMXvjoe8RkUDylir4
++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
++
++
++ eDMZOlML9rmfn2bdOf7rLnnS3k3jAktEAhe7cNzKeCzVJc9m3ixw9sPbVI8e81ErYCTZcwQnf9fN
++7vM4gHbF3ewsYbsVdLNPyrQ/6mafgbRVdrP7VnBYI0M3u4/1sMbfdbM7Krr+rpvdx3KJw++72X3/
++zSlmWk03u0tx0l90s/vGzX6uTdCr6mb3WQ3MKiPHLdPN7lv2Zr/FutnnIG1V3eykHnr5Di7Wbvap
++LO7fdLNP16r/STc7c2PM77rZnVWqf9bNPrNKdXXd7L6FTlFcupvdS3uuuJudmQR+180+EUz5q272
++6cr7P+lmXwWlMXSzO8N2f9bN7qS0P+tm9/3H3t7wi2529yKLlXez+8ghpwJrnnbZbnaMdU7dFr/6
++bnb2IvJfdbPbCZq9R27hbnYjOuhlCa2qm90wOcRVYc6jR861/2b13eweUY5Vd7OvkNKmE+Mupygu
++2CO3YDf7RJTjr7rZfZMnjv1NN7vP+wDaVXaz+8YtWNvMR8gt0c3u+83pPOzd7EQKzLsl/PcWiM+8
++7p2hpeYX3ezu0cGVd7PPobTpbvZFW8+dRxq5XnWxum52H95c7lahvdpudh+9Sfb3pWGzu9mnhM3f
++dLOT6oc5MYsVdLNbwoZfY726dYludt+Sp1ot2M0+K5iywm52NNXHDe1/0s1ONLXTsvmzbnafdfnJ
++AjcrL9zNzpJYWUE3u5sb9Qfd7JQEPNucV9XN7rO1Y7NGupfoZp9jC6yqm30xh33pbvbp6OCfdLOT
++4iSzof3vutmxXsDl4MtVd7PjasYN7X/Xze6eWFl5N7stscIciVyim53WDnrVO62sm92SAumo+nfd
++7PMK/FfUze5b6Py0pbvZfR7np83uZp9G1Yxudmxb9+HN5X/VuW61raMU+LPOdes5grS/6ly3noNh
++/q5zfc5qVtW5bj0Hw/xd57rVATyuHfyLznWrbd3WrrD6znVrdj7HtdUr7lxnbPz/bef6ZOP/H3Wu
++z2/8X0nnutVAjh7Bn3WuW23rY33zF53rhobotDGF93ed65bFaLpRf9K57ll5v9rO9UnL5o8616ci
++UH/Tub7CCwRnda4v07e2ROf67CteV9a5brWtL1NBzNy5bi14Kp62ys51tyLyP+hcdy8iX3nnupUT
++n9fj8avOdVc3amWd6yb6XHs8/qBz3UKHmVv7k8716c7iP+lcZ6xP+23nuqMs4e86113asf+ic31m
++JeTqOtfnJotX07luta3PK+39Vee6J9JW27luta0zFSov27nuVaK44s51S/2brSR/0rlu4do3cfbD
++SjvXrTonTOH9Wee692pW2rluta1PUdoqO9dnWDar7Fx3VWur71yftTcr7Fy32tZXvDdeF57/Zm8W
++uPB8llP46851a8PdPIKVda5bG04y7H/VuT63rXQ1netOb+3POtfZzn7gXovS3Uxs2gIMxtLtOWlb
++zQUMY5ZddFvetx2nag+L35F67C0F2kerai9mPf7DsgBcTT9Y4SfTdclPwgMJdL2XavwcgkrVfiaP
++/l6ot3QaaQv2lnohjflcjvlImz7WeJETxxyL83T1F5oTTUg+MpU6zb9p3lNuzagd9ETVgm2tThd3
++YlpLHETnlSujl9ezdqAyeAS41qmiIFyr0yNw8ei9/YDDQKbv5QccT7jzTAQ9syE3O9UP56UI2JqQ
++l4pTeh94DhOccp1/E6eE9226VBB7lvLNjVMee8Yp59Tceu/I9kLMM8+NOl7uhM2Zjf8uJWe/uzl9
++rCGxMWYFpzu8TdXUO3Ho87izeAYOZ9SKe+LQ27LB1vp5xWfMOCTDYGv9PHfDQJ+LznSpTR20Z3Xh
++iRv6N0tTBVvktltwJYElSg8Lq78OsbDiSxxAYEyx+HI92VaJ+a+RNvcmRMZYJ/Z1r+om2QKpMv99
++rTqZk0t1uUnQi6JqblTKWRXoo91EXhVg2Fr/y0tkrZCqo+1OPKwMMx6xqO+TJQvLPSK34uFVaPLE
++mmW2KlYep1fnle2xqvxY2ZvdnLFONpV/snhNuTfS9oMrQZp/3Lf2y9LtE4YiNR/bpag4rd+Uk9sz
++hSduYZAlUTWRdpqTJprnAmBfPUvJod3kYO0O+Z5RAoHtui4c7CrTGPs4G4/MbUbGamb1OrOp4dk6
++2E4C2IkdmwzNLH+cBfbVm2xsTxYvdStx45HlFAoDafO7xJl0sSel+6xrq7GrfhVnWtCWeicvz+Sb
++eecGBMMrpLRFFbKbNrb5N+SVz8yUtkDB+uUXkdAeoUeMCjF1mM/XfDYSuPzyPMZp8Zw4TnHHkp/z
++rU7bK716TMgrZ54EZCuymPFK13bZnaS879WEc+UeTFk+qQqKk0HfjVczr9c5x0KCnjF/lx4PEAWs
++h+UwtcvuJEsupygu1cZ23ZvdLuskgbld4jtL+leTcWhCI6tpl8XGcDPC+mt9gy3189tlmSktPlVz
++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
++k4qr
++
++ </i:pgf>
++ <svg:image
++ xlink:href="txt2.png"
++ sodipodi:absref="/home/momo/dev/telemeta/telemeta/design/txt2.png"
++ width="146.14291"
++ height="58.645603"
++ id="image2416"
++ x="68.852638"
++ y="22.857874" /><svg:rect
++ style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
++ id="rect2419"
++ width="93.862663"
++ height="152.97342"
++ x="213.23874"
++ y="-21.766815" /><svg:rect
++ style="fill:#ffffff;stroke:#000000;stroke-opacity:0"
++ id="rect3390"
++ width="10.393098"
++ height="4.2221961"
++ x="199.09279"
++ y="25.769901" /></svg:svg>
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="utf-8"?>\r
++<!-- Generator: Adobe Illustrator 11.0, SVG Export Plug-In . SVG Version: 6.0.0 Build 78) -->\r
++<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [\r
++ <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">\r
++ <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">\r
++ <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">\r
++ <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">\r
++ <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">\r
++ <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">\r
++ <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">\r
++ <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">\r
++ <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">\r
++ <!ENTITY ns_svg "http://www.w3.org/2000/svg">\r
++ <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">\r
++]>\r
++<svg \r
++ xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="293.0176 351.5405" i:rulerOrigin="-240 -200" i:pageBounds="240 400 560 200"\r
++ xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"\r
++ width="202.688" height="102.419" viewBox="0 0 202.688 102.419" overflow="visible" enable-background="new 0 0 202.688 102.419"\r
++ xml:space="preserve">\r
++ <metadata>\r
++ <variableSets xmlns="&ns_vars;">\r
++ <variableSet varSetName="binding1" locked="none">\r
++ <variables></variables>\r
++ <v:sampleDataSets xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>\r
++ </variableSet>\r
++ </variableSets>\r
++ <sfw xmlns="&ns_sfw;">\r
++ <slices></slices>\r
++ <sliceSourceBounds y="249.121" x="293.018" height="102.419" width="202.688" bottomLeftOrigin="true"></sliceSourceBounds>\r
++ </sfw>\r
++<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>
++<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
++
++ <rdf:Description rdf:about='uuid:8b49ffa0-da94-4d53-89b0-78dc8a74f18d'
++ xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
++ </rdf:Description>
++
++ <rdf:Description rdf:about='uuid:8b49ffa0-da94-4d53-89b0-78dc8a74f18d'
++ xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
++ </rdf:Description>
++
++ <rdf:Description rdf:about='uuid:8b49ffa0-da94-4d53-89b0-78dc8a74f18d'
++ xmlns:xap='http://ns.adobe.com/xap/1.0/'
++ xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>
++ <xap:CreateDate>2007-06-11T17:47:57Z</xap:CreateDate>
++ <xap:ModifyDate>2007-06-14T14:12:42Z</xap:ModifyDate>
++ <xap:CreatorTool>Illustrator</xap:CreatorTool>
++ <xap:MetadataDate>2007-06-11T21:03:39+02:00</xap:MetadataDate>
++ <xap:Thumbnails>
++ <rdf:Alt>
++ <rdf:li rdf:parseType='Resource'>
++ <xapGImg:format>JPEG</xapGImg:format>
++ <xapGImg:width>256</xapGImg:width>
++ <xapGImg:height>132</xapGImg:height>
++ <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAhAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqhNU1Ww0uze7
vZRFCnc9WPZVHcnJRiSaCvN9T/MHzFrFybTQ4HgjbZRGvqTsPEkAhfo6eOZccEY7yY2oR/l95z1M
+rfSrGzbk3UzO/8Awvqfjh8eA5LSJj/K3zHAfUt7+BJR0KtKh+8LkfzET0WkVFffmL5co19CdSsE
+21fVIHc8x+8X5sKYKxz5bFO7MvL/mTTNdtfWs3pIlBNA+zoT4juPAjMeeMxO6bTXIK7FXYq7FXY
q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqtlljhieWVgkUal3c9AqipJxAV
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
7FX/2Q==</xapGImg:image>
++ </rdf:li>
++ </rdf:Alt>
++ </xap:Thumbnails>
++ </rdf:Description>
++
++ <rdf:Description rdf:about='uuid:8b49ffa0-da94-4d53-89b0-78dc8a74f18d'
++ xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/'>
++ <xapMM:DocumentID>uuid:e19d97bc-233e-4709-a6fb-32a30768a317</xapMM:DocumentID>
++ </rdf:Description>
++
++ <rdf:Description rdf:about='uuid:8b49ffa0-da94-4d53-89b0-78dc8a74f18d'
++ xmlns:dc='http://purl.org/dc/elements/1.1/'>
++ <dc:format>image/svg+xml</dc:format>
++ </rdf:Description>
++
++</rdf:RDF>
++</x:xmpmeta>
++ <?xpacket end='w'?>\r
++ </metadata>\r
++ <switch>\r
++ <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">\r
++ <i:pgfRef xlink:href="#adobe_illustrator_pgf">\r
++ </i:pgfRef>\r
++ </foreignObject>\r
++ <g i:extraneous="self">\r
++ <g id="logo_telemeta" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F008000FFFF">\r
++ <path i:knockout="Off" fill="#9291B7" d="M57.119,9.701L57.119,9.701c0.001-0.003,0-0.003-0.005-0.006\r
++ C51.827,2.083,42.232-1.563,33.222,0.631C24.209,2.825,17.36,10.47,16.16,19.669c0,0-0.003,0-0.005,0.007l0,0\r
++ c-0.002,0.013-0.004,0.029-0.006,0.044l1.372,0.228c1.434-7.288,8.103-13.583,16.59-15.653\r
++ c8.484-2.063,17.295,0.46,21.919,6.271l1.118-0.827C57.142,9.73,57.13,9.716,57.119,9.701z"/>\r
++ <path i:knockout="Off" fill="#6E6E99" d="M23.844,23.327c1.042-5.32,5.921-9.913,12.119-11.417\r
++ c6.201-1.514,12.635,0.323,16.017,4.567l1.116-0.832c-0.01-0.016-0.019-0.027-0.029-0.041l0,0v-0.001\r
++ C49.108,9.919,41.943,7.204,35.22,8.839c-6.727,1.638-11.837,7.339-12.741,14.206c0,0.002-0.003,0.008-0.005,0.009h0.005\r
++ c-0.003,0.017-0.009,0.033-0.011,0.048L23.844,23.327z"/>\r
++ <path i:knockout="Off" fill="#4A477A" d="M51.48,22.287c-3.218-4.63-8.828-6.754-14.31-5.42\r
++ c-5.42,1.32-9.525,5.912-10.221,11.439l1.372,0.217c0.81-4.162,4.631-7.758,9.513-8.943c4.868-1.188,9.917,0.244,12.56,3.576\r
++ l1.121-0.832c-0.014-0.011-0.021-0.024-0.034-0.034h0.002C51.483,22.285,51.481,22.285,51.48,22.287z"/>\r
++ <g>\r
++ <path i:knockout="Off" fill="#9291B7" d="M0.437,61.69L0.437,61.69c-0.003,0.005-0.003,0.005-0.003,0.016\r
++ c-2.277,14.258,4.563,28.717,17.059,35.98c12.494,7.272,28.444,6.074,39.726-2.968c0,0,0.001,0.002,0.01-0.005l0,0\r
++ c0.019-0.01,0.038-0.027,0.06-0.043l-1.297-1.733c-9.48,6.639-23.767,6.508-35.54-0.333\r
++ C8.687,85.764,1.513,73.418,2.596,61.897l-2.148-0.276C0.441,61.636,0.438,61.666,0.437,61.69z"/>\r
++ <path i:knockout="Off" fill="#4A477A" d="M52.531,82.311c-6.915,4.855-17.354,4.746-25.942-0.256\r
++ c-8.601-4.997-13.845-14.007-13.063-22.422l-2.152-0.279c-0.006,0.031-0.006,0.053-0.008,0.079l0,0l-0.001,0.002\r
++ c-1.689,10.662,3.425,21.45,12.743,26.873c9.325,5.423,21.225,4.532,29.65-2.204c0.007-0.007,0.012-0.009,0.017-0.007\r
++ l-0.005-0.005c0.025-0.016,0.05-0.027,0.065-0.043L52.531,82.311z"/>\r
++ <path i:knockout="Off" d="M20.357,53.638c-1.381,8.681,2.628,17.121,10.226,21.541c7.513,4.371,17.084,3.652,23.834-1.809\r
++ l-1.308-1.732c-5.402,3.808-13.576,3.719-20.342-0.222c-6.754-3.921-10.881-10.984-10.253-17.575l-2.154-0.278\r
++ c0.004,0.026-0.003,0.047-0.003,0.072l-0.002,0.002C20.355,53.637,20.354,53.642,20.357,53.638z"/>\r
++ </g>\r
++ <path i:knockout="Off" d="M49.258,59.804c-0.215,0.356-0.556,0.591-0.933,0.681c-0.375,0.093-0.786,0.043-1.141-0.173\r
++ l-5.254-3.183l-5.256-3.183c-0.356-0.216-0.591-0.558-0.685-0.932c-0.091-0.378-0.04-0.788,0.175-1.144l3.184-5.255\r
++ l3.185-5.254c0.216-0.356,0.557-0.59,0.934-0.682c0.375-0.094,0.786-0.043,1.141,0.17l5.255,3.185l5.254,3.186\r
++ c0.355,0.214,0.591,0.557,0.682,0.931c0.094,0.376,0.044,0.786-0.172,1.142l-3.185,5.256L49.258,59.804z"/>\r
++ <path i:knockout="Off" fill="#4A477A" d="M40.835,39.122c0.427-0.706,1.104-1.2,1.907-1.4c0.802-0.193,1.631-0.066,2.335,0.357\r
++ c0,0,4.465,2.707,8.011,4.857l1.662-2.744c0.501-0.831,0.236-1.921-0.596-2.425l-12.28-7.441\r
++ c-0.828-0.504-1.918-0.235-2.422,0.593l-7.443,12.285c-0.501,0.83-0.231,1.919,0.596,2.423l3.137,1.9L40.835,39.122z"/>\r
++ <g>\r
++ <path i:knockout="Off" fill="#282F40" d="M133.086,40.279c-0.033-0.014-0.067-0.023-0.104-0.025L133.086,40.279"/>\r
++ <path i:knockout="Off" fill="#282F40" d="M201.865,42.719c-1.637-3.538-5.438-5.579-9.242-5.569c-5.428,0-10.855,0-16.283,0\r
++ c0-3.472,0-6.945,0-10.417l-3.593,2.183c0,4.552,0,9.104,0,13.656c-1.125-1.647-2.476-3.136-4.267-4.066\r
++ c-1.938-1.021-4.129-1.413-6.304-1.413v0.038c-4.152,0.159-7.834,2.727-9.106,6.736l-0.441-0.073\r
++ c0.26-3.066-2.847-5.661-5.517-6.336c-3.053-0.772-6.354,0.235-8.382,2.665c-1.899-2.237-4.798-3.224-7.683-2.962v0.021\r
++ c-1.511,0.294-2.938,0.911-4.078,1.962c-1.053,0.971-2.249,2.391-2.249,3.905c-1.091-1.769-2.459-3.375-4.293-4.403\r
++ c-1.999-1.121-4.293-1.553-6.568-1.553v0.038c-4.317,0.166-7.842,2.852-9.177,6.944l-0.443-0.071V26.738l-3.5,2.175\r
++ c0,4.588,0,9.175,0,13.763c-1.085-1.603-2.369-3.075-4.076-4.034c-1.997-1.122-4.292-1.55-6.564-1.55V37.1\r
++ c-4.962,0-9.925,0-14.887,0c0-3.455,0-6.911,0-10.366l-3.593,2.182c0,3.958,0,7.917,0,11.876c0,4.076-0.197,8.156,0,12.229\r
++ c0,2.332,1.212,4.581,3.375,5.57c1.272,0.582,2.6,0.538,3.967,0.538c1.888,0,3.774,0,5.662,0c1.718,0,3.436,0.013,5.155,0.019\r
++ c1.548,0.007,3.063,0.026,4.57-0.386c2.716-0.74,4.815-2.487,6.391-4.771c0,1.681,0,3.36,0,5.043h3.5v-7.06l0.439-0.082\r
++ c0.753,1.941,1.892,3.822,3.507,5.167c1.781,1.482,4.057,1.989,6.325,2.075c4.22,0.157,7.735-1.81,10.085-5.292\r
++ c0,1.607,0,3.215,0,4.822h3.547c0-3.703,0-7.406,0-11.11c0-1.521-0.266-3.258,0.36-4.688c0.533-1.223,1.611-2.201,2.919-2.511\r
++ l-0.038,0.013c0.371-0.164,1.161-0.286,1.613-0.115c3.178,0.009,3.807,3.249,3.875,5.809\r
++ c0.112,4.191-0.033,8.408-0.033,12.603h3.546c0-4.083,0-8.164,0-12.246c0-1.696-0.09-3.448,1.129-4.792\r
++ c0.946-1.043,2.393-1.552,3.784-1.367c3.266,0.432,3.91,3.614,3.888,6.364c-0.032,4.013-0.012,8.028-0.012,12.042h3.455\r
++ v-6.501l0.437-0.085c0.767,1.878,1.882,3.698,3.459,5.002c1.775,1.468,4.046,1.969,6.301,2.054\r
++ c4.124,0.154,7.661-1.72,9.979-5.134c0.29,1.751,1.249,3.455,2.784,4.397c1.928,1.184,4.563,0.73,6.716,0.73\r
++ c2.665,0,5.331,0.026,7.997-0.002c2.263-0.024,4.555-0.296,6.44-1.655v-3.774c-2.595,3.038-7.227,2.865-10.005,0.172\r
++ c-3.463-3.357-3.116-10.438,1.374-12.772c-0.014-0.003,0,0,0,0c3.353-1.902,8.198-0.776,10.235,2.506\r
++ c1.28,2.061,0.852,4.726,0.852,7.042c0,2.733,0,5.468,0,8.201h3.456c0-2.879,0-5.758,0-8.637\r
++ C202.654,47.728,202.938,45.036,201.865,42.719 M78.124,55.822c-1.291-0.129-2.59-0.783-2.59-2.263\r
++ c-0.161-2.067,0-4.212,0-6.286c0-2.273,0-4.547,0-6.82H82.6c-3.732,4.402-3.19,11.073,0.347,15.369H78.124 M84.032,49.533\r
++ c-0.764-2.958,0.159-6.587,2.917-8.208c2.875-1.688,6.672-1.143,8.907,1.331L84.032,49.533 M100.513,49.501l-2.163-0.439\r
++ c-0.184,3.191-2.178,5.509-5.248,6.387c-2.693,0.772-5.68-0.463-7.381-2.609l14.792-8.499V49.501 M107.791,49.531\r
++ c-0.786-2.998,0.123-6.534,2.896-8.191c2.872-1.717,6.676-1.167,8.926,1.316L107.791,49.531 M124.369,49.518l-2.261-0.457\r
++ c-0.191,3.195-2.175,5.508-5.252,6.389c-2.704,0.774-5.657-0.485-7.382-2.611l14.895-8.555V49.518 M155.963,49.877\r
++ c-0.841-3.1-0.13-6.718,2.681-8.58c3.143-2.082,7.19-1.337,9.637,1.414C164.177,45.105,160.069,47.491,155.963,49.877\r
++ M172.747,44.377c0,1.796,0,3.592,0,5.388c-0.708-0.144-1.416-0.288-2.122-0.432c-0.283,3.155-2.188,5.206-5.123,6.255\r
++ c-3.081,0.948-6.131-0.414-8.058-2.814c5.104-2.923,10.201-5.861,15.303-8.79V44.377 M183.545,56.048\r
++ c-1.725,0-3.898,0.357-5.54-0.265c-1.43-0.541-1.619-1.96-1.594-3.313c0.077-4.08,0.024-8.165,0.024-12.246\r
++ c1.541,0,3.081,0,4.624,0c0.618,0,1.246-0.03,1.864,0.004c0.222,0.012,0.931,0.167,1.103-0.005\r
++ c-4.105,4.343-4.232,11.549,0.042,15.824H183.545"/>\r
++ </g>\r
++ </g>\r
++ </g>\r
++ </switch>\r
++ <i:pgf id="adobe_illustrator_pgf">\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ Olvbs3qofMIy8e2Q6KGkcK9XLSwoqHeDTBfhQryMX6upFjhvu6etWBVVHfYK8TibXnOuoaLMQr2L
++4cfM93LV3bhclb7xN9u+lusn9T98JNgq9JHtQDPxpOwMpCEI2GUQnSWkHNcze7mqjhu/6sR+38oO
++8Qu2CNfSVYijyipBLNhGJMv4EieAl2vio15JLheQRQaUaoCb17u2kqSF+sK1l1AcQqaNIhAjHX/H
++y/j9VEdZJbxcP47U5v0xHB76VfTzNbFsNHoEmVizguIIdgg76zA+Sk7byBqewlkdDO15v2+hSodk
++J0+97G3h16L952ok/gCrnvy8HLk+VwwISzxfQvi1T/Q6VaqMFWNqzT2JsBBRsiqFW4MB14od55pb
++Gse/MeBhjoxC4kb3DZtzCBeG6HsovowNfH00e23Xe6+V1zXXi4qdKOLFN8SYAqBa93qx3IkCzZQf
++RlwWr6LTRyPwWpnHYUlAQEzuDValUL5jsa/Eum/hALbBG2e52MXAxiOG8TfzPpfrR4VRXrgNO2c/
++cmk+Z0+ujBaeMF9GU+BMrVeL83OdLIDHNj2yrjri5OHbatXGHvd9ZAfHVB3nFZchPCvSARwaFPcw
++Qo3tXGPXw0V2RSIoK8B9wtHD62LLx1ek5Xe+F4zYG9xGWesF+obzKrl8JVs07VkwznwhwS9z2vKT
++TtCFz+syh7tFnFij+s+FRvl/o9Md8czTvK8F+0F9Fh9YeZtulQbPerXtij8ndS5rCDoMH4k/HAsm
++dBM/JcuFDQcZ12NNrGBxr455QJwV1qoR3k5AdXaRV0LgjeOwkWpezg+/72FE3vedXnYDucBdrGJd
++zqOcr7gcvd8LBoe1uvsmeCLUvuNl8vptaG1u14YWX2UAxHEqWh6dnmvFRiyFnEJT1+teabQckGER
++bPRp4NeK/aRQjK+2UGHagiXcK1bp2pxCXOZwabYLRBMrtmX6y8eho4LMr295wIVQJavEwpPaA6qF
++ZWzLyRocTZVbup6Sba+tlhYisBmVPCwiQFxwuvy+Q5bB+sHTxxdcz54Rezjz8nwMc/hF8Y2vIxMv
++o8+HV0e41Ee71yuv3lUvcrmwMpK9fAKREwmA+saKEzOye50BidjAPvplT+u+lusn5WqmJLw6cecE
++Tla9qqbnqyx8LUOFkts8Wq+ulhYdJTJBFEt1p03hZLCAmXbBjRPwYizjZLGmqh4BXADjq0lUHxYw
++Ja4YFyFWjNf/TookmQcnpm4qOvkrLh/ue8VQ6AjHiSfqe87zMm4ldBAY09y30VChAl3htL0lWeVs
++Rv2hkInNivDiShUeK1249RbBvZ/2fa3YD+rm+GI6Glul+nvBlCpXpz1Ov84OjQVb8FIsm7G0UiOK
++HypAYgVncb1xRDUKy7jpYBEKNFqhoVq+p9BqiLxqZbbFDvwvRzjVuRARc5dReLwRoNRVz3fEvdna
++I+ooiG94gpKegB3UeBmdJJcCxap1L1hGSZtpctblncuUA3RGx8ERhEntscwsp13PkYEY+M28r/X6
++Qfme3wsldXzgeJY2ikK76qt2x0JclgXUUus1fEF1b74YJkJBr+mEKOJo11+Z90HJjEuKbsNr1Rn3
++AksxvYXhdFAsaGFAeCI3hgrtQXw/qkmsdvjr4fCdeh2foqicxOZWdVKboiPvajYu3kfY0Jn9sW7j
++hdG92tVfYF5gn8ys6yyVrt2pmtZvln0u1Y8aCPxmSYeHx+ReKyXMldMhG1PeQ95rAWIXS0UE4/UZ
++V/5JIyt/hufDQYKBt+OKcbAQyAIIykxoyC2Gv6OVoZapWhAMzph6RmUJ+Ra6ode7GRmjEc0krQjU
++G18RqUGZj2gjA8G8k+F6+Cbo4MTL6O6XPoc75iyYDF0MM8eljdYJ3IncQlf/mka4E4GurAm4i70V
++j77s+1qxH/QyaGy4BHxg2o8EjBZn9dk7xNdSlRG1Yiixd21TAuVh4uZb/VTTtNWqLBfGv1yegAoL
++zUmc0iuRVW8kMbsiAK5re/yy52UEhJuuqAzFBgEOMCKc+Iqwcd6PeIO3yXUKo+3A1ni8ikeOsU15
++hXlNycP14U3JPaIKReo+O9eSepelvcb9PsXvU2NMv9n3vWD/uakiw2p/Muq610sJc/Ftsv8ncFiR
++g4rl4mIyLqe5h8cIcQ4BjmKiz6C56PIOy2fEjkrz4I2GiuA7GoFDeRz+m8KGyGlKVcKDj17aGkSe
++6TrHN8TpzekRa7DkAgfMYlIqctfxMnp71kuqwvVjdiWEuDybo2RmHiMS76ZbGR6853K/T3QTwKAR
++xfBh3tdy/aS7w/2FtAOfiLzkLFhSwuzwji7Yluf9rxVbahSrUbC5YuCY1XnC3B/249Tb7vlRrGsy
++qqw0+Q/FEVfSm/WzCgpDoU28awEMiYPWFA6qSNS1ueIr4vJL5bFixbjUiG9GOS/i9yQ2EJ2nuy5S
++FTHio6ejZNYa4VEC5pH0RXn/nbctFl+wl4pO88u4r+X6b00mejZl3rxUvU5oGQ0hhWhBlVIY9WaF
++1rFQDvqK65xo9QO6jRACQTVMXovWZJwyIGzu7jWbkHBqs8yT7EZTBB93sGH4gVHJAMSSvoU53e4R
++qPk7Es1Rz1Ilf3Y3fwmcxa7nVfhZd1AXNOMYXZWLoUYjj2BvApAUn0k+K3Yrih3nfZU7O+Y2Pgz8
++Kh3+rOflZhD+5w4Mc4nfdh2NHO0st68wuOlfPODSnKgd+r4eW2pqKGCNOIwyFHXBDpf1/9S79EuO
++/V7Xa0z0AwrZNcBSkmbRzjy8MdUfX/7VAvxRf+laDlSU+cntJKJgq2EEnDGZC6dw/TtHN9Vg4rx4
++Uv2Mh/eUSfGliftF6ApnyLnBMsoBXj9MwozwwyQZPCslTBLfg5Ojlf88kNHDJMSW/f4EL5v8rIOz
++VFTCJljXjX4bZeFBcm6et83LQy5pxzBF8nwZ7qAUiTeHUVl63bphOAbmRI6BxDHKVK3sN6OwUX6M
++wi4ATT01YMcbBd+ni1Ph/f1fJvlZl+Ta3wu9AvIDzXNs1PzGf3sJOodZVZxNmsbKMR/wDOa4oMVO
++zCMg+CydfLrK2yIsA35YxMX2YxHPSWcNG3HGEBcivlBSOfzzCV5G+e9dCJxJ1tauz+Mcoy3SNXWS
++my5RDszX5T3Slo61QTSXC2yBw9UQexXYRluiyR/AU/MRwiLX8qb628FJ6v0ciwjQVJIxqaWodceT
++zHTityd4YeZ+VOiHk9x8amTOAUvBH2CVD0do9yGqgZWS94kGr4ufEnFmhGgYDVXpOKvbyek/QnM3
++d8vDJgz63zbJW5GpbYJGwNKvF1FyGKNsU2QcmX3F3x7gZZOf1NJL0sQRLhbUVf4Jv6tgK1cTU4BI
++YXS1aeTZcDssnxwi7I9NjKHI7t8FRwdRB8vjrrQKCgTt/8cqvIuOVVi1JZlIM9eFUKjgBNNvPp7h
++ZZQflatJ5uFzwvjimMWeFTUsMwRsNUeWoXI4J5wQRIHqUHdoxzMax0aqQbvhvqO9ri3ARuQVB3/Y
++ZWnW4tils2uJXw9zWLDXzfOicb3Pp3gZ5keFYTgHZIh0qahb/BP+l6M1MAwBuWQ94NAbDDNNDnDy
++mJ5P/IuIpCjG5lgGhwyXg0o6kqdd6CM+7DIVwh+7aAoxG2ROyzPKzV3guN8f4mWXn5RfC5hvu24a
++upJ/wt8Q5sBhs+LdkXrzfqGrwSC5LqCGY1pvs4gdB1kSb0/wZCixzZ6pD7NkdQh/Mwt7RoeOiQ0I
++nuzZgiNiKoYq4iT7fIiXWX5S5UTI2OhPQekxonSGu0B/qPzPE/dqxcModYo+gKmTSg2n8YErB3hK
++Xk1z6RARSciURPa8rbLOsOVtlaEO0bEKe634tafGmxlhLhtoWX57hhfo70cFRXgw/VlUYtZtFfv2
++InYaXi/EQ7GPtzSgy/6dIIn93M3d8R1csckITolKCc4xS+E8129WIUz9WEUNaxyY4XBQ/RqGDfpm
++ryd4w2p/ULLDIWVtCaE9mtL/hLuZHGoBImyaHEbOEjZJZkYgNEV97XKbhFBPVj8IlQZDBS8uJOqt
++94dNqooBH0bpKugdo2ioLbsaxslx1jEyGHeWrPJ+iLdZ/nthDJdf+I+ZgoOQwekSqozEtXxdWtoo
++a2VtAM4pqCWwx22VWYpqQixKcmZ5urpZOKLwsMq1kp85IULq8fAqWhV6DDsp0a/k6qLHb8/wMsqP
++yk9YcfY7gO0sJ0nGBTNJS5Zdiuf8etZmWSzO4mBkYwJynme3oPujiujxImy40lBySWGWJsj1h1mq
++qDD+it/mseN4TDMndA3UTgYvvz3Dyyz/scyDE0vPAdxkMMsr14c3yCLU4eJUo+DMiTEiBhkq8R9z
++1O6+V0qewjfqBg63tIc9cNDWb9ukCnV07CGoE8C321yBbGzT2ZnD6PUI/w/Qw8Mw2/4opAS2dojZ
++gOuGn4FE589Nb+oPegQmTYh0e1J7lHfrleNiyN3kQ3ps0K+h1PCyxTL30l8RKbGohkFJbrCPr/k9
++JHeq7TBNbOHn3vpzmCpISEVxjhGxAWO+5euZkfb+7A3hYsBV0N19ZWEHUUNHWP4oIPWs9Xw/eVHV
++6Tw5A0EA9nbbf/z2Tf8fYFsNEJmIE9KJ2pNgMZjKItERIh78YQyqKG0gqBcDnWeyEI/epWWgYBrF
++FDQaeo+aj5+8yMG+nxzX1cl2EQZO4henK0Gvb/n/ACQKqNbGB7Ld78fOKolxaq/rQlvwRpwS89bj
++3uqDg3G/woYsbvdqWGQW9hpzwc3UE3xu0/Z8Pjfn889zE5MIsG2SCZ9f80ucZV6a9ZxVg7mnUsru
++x4gLEA85NCYsSruIgEmuMB6PTex5r0a+Ig1FbtA94n6eu6kl935u6qcES2qJ+V0hjH77pt8jFpEM
++Y0uDa3+cBgzuXI9Iq3GLR0VciBFpDpZmd8sw7VZPVIB1wS0Ap8cST0bb8YoFMPr9qP6BwwPu5/Xo
++wMZjsPk8eoB5GRd8fM+voX8omRCRX4X/PnU+FjoxqNinj1jiIK/CITwhgniMP+56PzZRZ9jZ7D+B
++2hsgnj5vUik+91As837upS75ee69REwi5qXPL/o9hI67qnM0jpfOeXRWaDEWT8wfqqsoA3McZ+vZ
++OS+DWb12OhnZE8F9aKWKSWow4bfbnXR300e+n30KQvdXBOmMHeZWG/O3b/o9Hq2o5jg9nnxqmbxe
++Rnd2lA00xYw9OQ1QQsz08492djZlWJ/CNnHtMFS8HUTfT87g9v3kBiudJ2d6Mk2N/vk9v4Z1oWCM
++84Rh2qMmwyR2aiSeSHKeV0A3BtpaXd8DofZI99w4VxilKsxKp636fCsYPMT3eBQrweSDafnPB0+A
++RJ1eELvncwYj18cX/RogFVXo6wPZcTsFOIKCyLyyp8vKGFmrxu3RAdnlpbPbscSoF3CN3btiUWg4
++RT3PjknEz67P7KIGPM/O4RJwn7QoJz2/6veII5gXBaqZ5L9OkY3nDON7ItpKam4PFA==\r
++ ]]>\r
++ <![CDATA[\r
++ YLN4WbMHuFlKvpuAiFgG9lZy9wHh/TiUpXrOkWTd98MD/DMeTUBiuGeXeX/7ql+Dd9gIaJz4bf2k
++vOT1TUVqRTY6kc8Y0lQlNqtdzsOfT8WoqPaM23+ZmnBlz7wyRYtnz6oAvZ+9iijjNC0ICKJF0v7j
++t6/6LQ4G9Z7CYdWUT3MCR5mkFMPdeDwS3CyHwqfatMyuhrm7z5OToygLSa22nAdE1ZbzgxdhV94P
++XoRePQ/OiH2C4Gbos55f9HtACegOkY2PrevzrogBIIBh3mQeagKfEdKWrkdn+X1gCmOOu9bOJjfn
++83dz0ejyqqN6BieevXKQ9v3omcHwqSazSIpx9Bzkjc8v+g04Ax+OCOL6rIyo5ZS82CgYCspVaiO3
++wIj2BwNCDPYevKAYmPVErp8yQcXpyP31wLy+3k+cxHFxNxYAywOfjPj2Pr7m1xiHYia4eufl3fip
++wkKFGfu3kAz7kMSdOd1s0jYTx+XiH4U6YA5fVVG/3xJ8+tlTtj1+bvcobG7xSyOQcsgAiGCu+0dL
++DfCDTwkgiwohew4LXndxD5y2L62eztTOX7Ih2xWAbrJAZOglUKHXIrxN9S2cAtX2TthSPdzrnQhh
++AAWvC2RqoDYGfGJopaqKFqbnPgQWSpCC60OB2VomFzXRAuGT98xzj0A8eSKiib9QhbNAzmR3Ell3
++IJwjeojIxsmsAMkPh9f3CqhcjeuQKZ+OQFbpIikm2JGiJ8LLaoQyLC4QLkQi/evhDIFGteTDYF9D
++N4rmNQBWmvfWZ2yKoQaQY0xhoomcR81AkSwAh/ke6BJbNDDAUlTQoBWGU0ikW8X0J3KQM6UChQl0
++srEEqLSJL1sd3jXPAlxmn+4vc32E9ckuE3epKzCxOyS2KEm4Rcx7UUBMBpwIupLj0bnOClxPebow
++yQi8IZQnatqTK8Ju5ofJvoaKFHnNbR3IWAL0+Anvuz4ELEw8kBwJBoadKOtgHdlicARkKjPHFQp3
++W54RHdC5VGJnA+qXPQutDOsrgKmibVKJeDhBhCdTom5Cq8zMWF06ggL6UyjiLIAYvZHZsEfviUqg
++BZAYJWVCp0rLBWCvKRZgiVMxEYpxPfjiQEQFY+2Hwb6DpZjhcz85a5vtid2MsEZdBzpJjPd6lu9J
++m4uzn/g73nnYo2TEMr4VRebuqaQb49RCoyR2aQ3JCAvGxAKoAQBkmdDw1zlOOhFMdcCqxgVZjIFi
++AUoSCE/DKUoi+DMcR1INCB2zWIB1RxmJzAQAEnH2QynS9uzUh8W+xsCAp6CT9JB3t1eAHEfY0ah4
++XVFBTvyTorwSFwMQg/ekgXwJAaEEnAf362Vc9blVXxJZ3hlsrM4WsQbc1Y7V2S5AAq01uG5d9QKa
++1Lkwod1Uo75iFgiQjS6k0LhXgF0E1jpwA4xOyYuly1j2J/Yk7G+inFgAolmXMYS+kqcqKh8W+xZx
++U8S5Q1BsnmcBkHDDxORZu6yqwQFi1FCZHPw+XBd+gSVpEaJTCdG9nHkSxGYJ8mbqdTRFQabuMNFd
++D6Qdvjl4UrAQUJcM+xP3Bfs3iqyNbliAZI90sbNSHHSLNZhQl4+CpQhY8kWay5ezd+0VILlVDyUy
++c/fs7TjbQ1lLU3UfNvsa31PkFwMM7jUIYjTWgYdYmIDVxome5pdbohjxGlAXF0cZXndb4wJTraly
++CUjexxZsOhNpRRxMnH+n1EwWgxfBEECY/R0RLimc4bcwVb/DW4H7ceAiFkYAtaDHIjC7IUwJx/H6
++J8s0MWlJfDkn8s4iZM2CWN4rad6HNRscIyKZcLPBFh9W+xpMVA5JFstQXgXiyIHph6cYImFbwv1M
++sQNzQDA4P5bsgEEZdNy3lKcSuogE1SBKVR/zdPN0oXEBxF0SVTTk0W2eBeCKs7tPZjKAWdU4Y0Wh
++K4RhZBRgpurRE3S2NoN5nxN2jGR+JlXH/OWJnL0+2KSG6lqrE8qx+QE/9DLXt5glKPwE1yTGTML8
++vFm3JbrEjIg/CaZJVG3M/XZolJk3ECULD2poWzrQQPF5aXbvYJuuB9UVmnwnp5DMQv5X7Ia2ddNw
++a+AomHGWC8Lmayxbv7mBigthaKoS/CUUJpI/oDKTXo1i3VmBqu6YV8A0NQGBjUGJpD/5abNvAVIB
++losV9xpQrIUoQFizi91apKCg1rU7BhouBcvg5VunmanZ311u8ZGRjnK0zNI00HsPkhk6iIUgn4RP
++DeiKTqNKi09kH66fZcW4bLQFgCSj+nKOANHocu53uqlrAw4FUQQSJZ4jkimehWh6PC+ERK1SkSRZ
++uSeL2pUg//FpuK8xWdVdXoJW+7mWyb7Ov4IRnX7z2BJxhEFUj5DVg7GZlpEJQqVlyDcmTAggvxZk
++icKBgCLHU0t8pluoQPDimVaJkeTfvvPTuawbArNJzE1MQzRrBBH1fq8Eu9NM6Ijz1vw2lwtRhVbi
++FADTH2euMxZCrDIVvqP+UbQJNJrFE/G227dAsCooIx1jSedqbnn6VBZUYYTCgIVZ4oxY89olO9L0
++oZiWOwiT79OqaNhmuJVXzN6NW89mx5wWqJ7By6AKHOIhdIC9CJJ5ycLRgd+sa004W9hE9Kiq0jpr
++YMADkJaTGRbRRpkSMVyCyr7RWYKhPo6XgHk6oX24hE0IVsQc8GmwLyFnKDZW+43Wz6Vs5vRiRvD/
++eYyWUw1R2uFYZjvmN41CFQebeeBYkmC7QGTP4r4LLsPLabGElKQHCGGXJftzRONvHS8uDa8K+OoR
++cRKUCi5P4MlMWvS5AKQ0x8kg/EjTGYR04rtrBeg4zxLM1xIwlSVEFwsIgGaTlfjXPq32NcStiiaE
++GLyZzuWsAg6uLPRC+j27RjKLzooAHQ0GKLwOwvZyyhBtD80h8JAvrgMnvMS/e3i8NJdJRibcolNc
++aeR8ywFYmbeLUr3aNwxrppeNm+HcuDfKvheiGC+oxEOOlTk4HH7SQvZnmrAU1f4VkWYRkQghO8lD
++XGS+UUE094+nyUZngh9iQhbZCT0Aj5Q4/bD1F0C8akfVFM/EqmkFmiS2mpUW4YjgSntQWeOURZaA
++MmfRDLpYPcUsL8YHurzdTUXFDembp3WNrPBecLRM5kjksX/bLaoOm2WhEQkgbujrH5xdiCXzsWo5
++6aIRvZ2wDvSBYPNLfD/nUc6qbTkar5roKpbopFPMYzslx7Wcx8fDFKN1kmVjize3CaM/LP01WrB6
++gjsGOo+m1wqmNSh89niR+DRp0RLSwcnhfnQvPKlpeWLzdGpHbvURlroM0AImma+0N4s/YD6ISasb
++HqYMDbliKHZAu8q9jLUeCsche2xS1NpFB88IESX1zyf+trkAycJhLhjcvMeCjOxJWHVt3GJOOG53
++3JxhQwkxkjoE1/YSFG9bBo8IuiKO3xEwVZT1kV0sK0QBabwkJ8HJ/TKlcDM31f9kyKygem7RhkBO
++EmM7Y8kZQPgZ9zt4gGYwIbcRZOFLXrT2qPHiWs005uvhv+4UQEFT5IeFLi2saQEHI19KIF/ou86O
++bNZrQ9zKQbIlZumuuxjF+Cz+FXKSyJiArk4ykRFPhFEL8B5BFweXAeQfUZleJpIMa3Ima251HKCZ
++hqLt2KIna011PlAWrmDXaSOkj0xQUHukjUnZ8OfDf130px7pEjcHKUqOObNJ+QmbKC768IYFIC7M
++SfFI6KGwyLjlk7fbBsD8gJYSdDYnKSz2hyCYGtr3vG8BjEPZoLiuTdmhfpuTux82xjaDAioWCuzV
++4AeDUmKVOakmJXN2Y/tAu1glfsmMDHUDCxG+H/67En4Ft4gLRw/xwx406x38aegsJ091USFCloSd
++LS1DoB2lwBebLRRBR8uZBOgnJOSgbKYdmXvBfwDHsYoAfdAIRsq6zPwaduTgGIwL0QMI0SEJRmsf
++56FVdbLBu7ajqdCagNDIkOFVoJyHU0TybWzK93N/XYiHyPA2Kzvb78eSzUzsSGyh8yai/yLwchiS
++ID1OmQ6YkWdzm1gJQ+rFbMMluobFrmlNKSwUEysApA0SC2rfFoK2eQiOJelSszX+spV7dNZRcgDL
++U4riWmvBJO+aZ22q8G+rrf721N+W0/GB7DgkyS4fK6qGUsUJBv1fMSKiKz+M2ygee9rmPSeQa5Ns
++mFVIIL1QgN/5oclW3MQAhSNP8pCiB6RUoOcAzWW8GHYFwizsyEMKLTsgbBsehZIZFurlJQRe8VPY
++xB2vle9CkEJQlIvu4Y3PJ/+6Kk7l8PZJXAtbRlGPzHplhsgICqfHks39CAoIEGEmIsMOrDUpI4ZI
++aXNU8IuZT8HKj34PxDOptdXEMF8gO5lFBHxEzKCsiRrcqnKcLakMOLtqMM0wDJKCRzQPfVQW3RHz
++438gbztFcs1+92+P/nVxGxr27NpsTW0eW0aZjvqRxR0NrWFwo5ahHGFb1aaYUZ/UpX9wyqxNUfpH
++HRbsBCiC4KalX5yKUJaBA1DPZVzTdGOHLRFUc0BlQraSLnYONV2g51kkQMFTEpYkXOEw1NUmzlCy
++DV07+/O5vy5TI+dYRXww+7EnlyWcCnK2soRzIgNmizgIh76xr8f6WAmud+s6FNf3YMhzDSDGh6MC
++UXbjZme8Ci1B0MiUbTu3R7JYs/Bpy4EXJGhR4AZMGlltc1ICZsISux8bVfykRZBZBORU4ZkqHH4+
+++dfF5ipNczTVVn7syG1VPJb+cQ3gbkQnDmCasCSFf7ePfvFMJXmvMu8S5CFBlx6GpJILxDhBMsat
++PskKzeYUlcG3pbuipQZLMupsqg9V683MRaJXaPmOLrXBUDdpKfTqPHODWFwcZnS1n4/9fam4SgwA
++vVfU38OOapoDHXJtH9wCe8tXB0d1Waa3moouYbUqqAlHETEkOBSXryhjFuv14mpABR0bfZKpuaJA
++D0nnYl2vo8xELV1JXLBeWiEXMhi6s4qO7bkojXKHTHCj08PlnP1G1JgWGZI2egSfT/11obdKYJxb
++qty7MfpPzBvKVk2ElCJpHTNqQQdJb0sXgqupqIabKCkaJ7d5WJE8xiA8R/cTauzoZCPZgdetDrjX
++ePAHV/cQKf14bZA6hUVbWeBT7E3JzqxDzQv97uTmDO80xjvVbEJFZnw+9rfl2irSMACqWnnsRdRy
++0DZFcR4+a5k7EmydYUXePKC3Y9gyVK8D2G8p3xP5+O174AsJ9YMbuw4a7meELxQf6pRepy9BzrMC
++8wEdZ8TeMDXivTrVullFYWOd7ipLT0LviZrJFpsSbmcsF9mYtRdfT/19uRUc0I1/gKOax4zNajsI
++CaqFb0gQGYAt7NDAzgBtiDsHIQHgfCDHQbBE/k4gLYLFnY5gizbVgU6flRzFvLQhMo6QHJolB8B0
++fR01LkDqebmHCpgOpC1M+1GR/ok3/qmNLoY9xKRXFI4rhQFuFzTt87m/KX1GhDfE2XdMiF4lfDEE
++BXDOKCwwBNAJEy7e3V0s8rgo0PgF6BXhH+/22Y6uQ5hQeUVSEFyQ7FbFPwzwslrLqA==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ bR6x+q9g6WWKRpVmpNimwG9SOXRvWaDErSo9IBvD/A8A3BgcmNmVtHUCmipJNdmR5J6KfPTasE5V
++lGHrSDiucmrGbPDZUjjvp/m6UlZVnERU0w4VrRD9JHabzOzXloropMQzwWKNWItoKpNaaWmXmRml
++mG+zqv1O3EwgHdQfgQnQgfcMRbXXTQdjE8ZpimdsHB5XiFQxQJXCOiIRTrS8H+fbQlmxGMx8EBJ4
++7Js6iizL8BLJaEhXcmUCTY7psrlPG5ADesTboYpuaqSlPno97Eo32zpGCGgQJuDZzfoUdZ14bdin
++i0DE9pG+7/VXqFottlMmPlDBeD/Ql3Wv4lubm9/GkVrOFhu2JUExUQy6mqFEGeMlPZ3OjThJp6o5
++zcRuAUdSHbI8eY+LWkjgL8OwRxbQpZiIK+nFpTysQ3frJF+duWEdMR2TPJWevp7n6xJWcct/aWLP
++9uFcMISeUJl3OYcqbSj3qgVPJeBDwqHaRQk2Y8l+A1+EvK2o5sDpizNlYyVIe/Rso6PZR/Ms7f4w
++z5D7tnmkWXdFHaARzVa0n6LY/nigL6pNHt2Hwz3Au2LC0yRBew+zJ7UAmybuiwkrIrVkkgGS08YM
++Ecl1MfuBWZSLp/FcTONkBjBUbYmeX0RmqvgcZFeYBlDIMIwSnSnxuuw8ZwkM/n6ap10c7A1HOAoE
++J1JzJAR0N85N06M836XauLf6yUpHs9oIOVXdxahbIrLLCI1RPiM+bAwx9mVkHksl7r4odVFE2EQK
++NWiPIMc/92v3zA1/ywGxIpGFK5bUXdc9P5DTQ3wNw0wAHO6l1hIZdSC40ET1DtDHkpY29ZH0t4Yo
++VqGpO0VGw0ml60Vw2uBBQjlh9wf1ancNbxs511fAjoqMxe5jp3l23k9KSKjYJGSq3bV1HPxkYb4x
++DCfrhJbqXVs6iMk822j/IIrCF7o+Gf+Mbt92oU8+XjqmO6tTMl0W30lX3LTs0VrSVvvldSaLFwQG
++iYLZ0v9cRXkXZJJx0KARfDBu1Zp7lpHCe8Cjtrsawp97596MaJdj2GI1VWT/8dcmHx+01Sz/zIth
++NfMwD2GelhHdsk8hL3Y0YYvC2CWO1r+9WtSs213o6r60lMu0GyAJQ4AOibcjSTRU0IX+NWmmTWEO
++OB8Q2+iVYIIRiL9b3n4rDpompQZsAoCdaabguRRaQowuoo+VlSRQjVD9Xv3cVLH9NNRtwnIYzMny
++JbfVFGpsARrIRAddMTOyVKNoWIs5cGFfetm9HHIANYIjtqD0bEzcx4zzgK3HC6zd9H+qvjCIPzKZ
+++O+p3WEi7y5sPzjvkJp5V3S3UIDxOWz/HEJcUjUGpgCkZihyIEdHq6e5oJwfvCDVyjHFJLPV4wBU
++py1EnLO6AwKJoxJAHbVk2pBM/g8CIKhOe8TScSmfoQsUrrHZctcvkYpLC4ll+b9dIiDfa9PxRHqV
++byEplvw5zdDfWi0cMyZVt8aZi0BZTbWijyW/98IxejHVt9JSuBHUNTDZAtoEcvFu/YK4CwBL2B3G
++LEPLt+rVUkbk3wYfGKVeszg5OGeIWksmsUcaf/z2JR57tWsgHxcBd2BAppkvn99imgUbEcn4Yyfm
++7CaLvHyV4mJmgWhw6mBJrc3vA7UlVQTjc7WjsvoruZgv73xQfF9Me1AuE3QZN17ZxIM5r0NkwG2W
++oYybRQqp53i9j1zMVNAykRAVyVA3QSVyMCxn0fZtfIIBP0yfzYedi2ExSDhQYUC9F6Rf2JG4kDIy
++oRWgBTCwFGrmJmUixb2AY5jf1uWxZEMQjGXCpn/sc4jxhcNfKmmgerGtRUyuRly4U5CuX/4gukzc
++YFShLg6O9jrkFgSu7fWQgMDxwzzC9qBkNoZ9Wx8J0Q7125/TUHkLO76qalHU6IPjxYipxsAE2563
++A65W753uzmAmB7nTNF12dX8IYKaIxtBhQeVjbkEgqvvrUExHx5ZUUSTHuIy+qkt+pqWBYm+qmtB9
++Gvg2PVmKBsMAPrsOC+JaoEHhWYBpwNojNuW2x+ngXy1mDMFvGSDDn0lsp0uMgVwUeF8qGnjWKmVt
++7r094jPUG8Wr6IiRyFAEC2+r8TYMWdAFpqpyJMpQmA5HYMZCOUbkEQvg9m0BbtKoDkIuDqdv3X27
++aHQHbOe469a6AfjUxGnULu5IL0NIZRU1zeh0MX8Eg03zHXNmcPNmJwEXOQOGY5xwJ1M1prUsV+ZB
++hx28xx7q3EtAfr3JY+4M5aqFBp5L9vftmruhH0mpzSHCxybrpi/uQZSAEvkkeQyiD7D3HKHGbncF
++v0tCsEmwGGmB0Bs20zaC3KCcRPfbhMdM+tF7xkQBghv0ftDrRi4FoE0NZQ+EUGygLfW1CBUD0KAo
++n/x8oHvfIsDFQZ5DuB1dQktAAuBC8Te7x3QwCYHbAhPR+FgAtw/QIDQRCVdqpAmmZ5+W3eniPpvp
++Udhoj4fEH6JSIGA5HlboSQ2amYS+iUwDVzdQ00izAQGDS6YgdWccz0rbTGqWRWhIMpcxjcBoIini
++fytjQ6RCwzJlv56ZEOACS6hcPbW7sJ+mu42KsUVQ8QE3gmcNkU2No0zqDzWnq7BHsSRtIXqBN5BO
++qqXPhrQ5wJ2ISs9YSqiqrxjkJHHmqtBKoygbQ68LXh5QQ5PqEtjfLStzbmd4ue4pELATbMnIsp8N
++lhxEmyQOjdGtns+W4iGHYCXrV8Ysf9rgtg4T0C3+Wl7K/8Rv66gEW7A7sjdJXGAf6liN/3l65xZJ
++2YDGMKDPmBDcSekP8JdIaaDDjtb/HGJpVfBuyJNLtojvUTucxYDXIRnzmVRHijyLhPRI3LDyECoH
++QJMZhWYaCrJ74LTPpBi+1dIhJ6nl1PMM94CQo0GhkXzvMX8JgfDVaTTOYa6u7C9ehBRp8D2knggj
++sOg9zPvNi31wdoORBJwgSeLbI4FgUo4WHxQAKB+ZiooyGDhjQMUEdxO6MQ5pC7J7QjTZj6eUYlPT
++gtt7K/CTZOl6bLGctgCuJTQv4b5EsM3s57dNce+X3aQa1fzUQq5swSyxdxHXL/LriMZd0YRgkNa4
++ibwNaXA3dRIybogfD9TydBIJbgdU6ijP4OghaRymKh0W/aFHrTqLTZE1uYXOm9CFb27tsx6QRTo/
++JXuPHm5LN/58qRFWNQq4oGLioUncWdjoSyJtFJ7Uwg+ZUBOXXEFiBqqzOlY2qtUzjrI2LvlBFbvk
++S3OJAysO8Ke53weXHT/XE/6Jz+MeRcaPbG9vaQatqaHKbQDGmo9TuHG7IxQcsvUuapQus1nggRE0
++b4/MxJtYmEQZheCIIon1PXRFonaS2P5F/BTJ4s5iNcc9z4IUtk5iimLFsN1E5ZvTkj6j3rfFecZ4
++gVNPqcpSMCzji8vryCD4pxOdZurNo/qZqpuwOZo4qbsTnJZKMzhmB8rBN4BaRPEh8qrUFLllAm2S
++gjQFiyj2RhljTyUX2fA4PCPYm5AAsVKA8Il/78oa7vG6FY3pXBVJT4iboXWDZi36VPBaGDimFfq4
++TxLPOPIDVL8W4uI2sWzqDzapuGFFZtQgVvHu8fWyINVYGUwnbxhWqOGhT6kPHg+QAxR1KKsK22/D
++zKkFmZY+dj4NiTorK1+TOxULxSl3/C3Auj528mOPsxeC2HFoO/8Tv5UKdSoW4sKfZScAKdIV3rqE
++kHw17K30l4bERPceYuLFG9khht/u4THwPsK5kKWxZYPKBEYl1gxd8yq2kbU0LeYHHcJ1LjOrY58Q
++Y7ezRCp/e6DHs7LJlMREUWMUIJP/aUjAinsIxQP7EZ6XTFVovoDnTzmwf4l7P3r8AH9RPRveeCjV
++ZYZM1gmsw+c3eH458/8PoTC8DlsN+aKeF7N3KeOyJXG+GY/I63vlrPD0r9eTeytmNlBwTARX/Pzj
++76+1EVS0ovmPsz8SDgCFQ10bZ+sDzB+AwvwbnoHBfTURME4/Lr0aeWGaMkzZt9Qyfil0jlmL4AII
++Ys8mYMLuWVkApXpULXM2OL1LURV7hXhAs3bKFVA2ux5RWfySi0q4Gn1XFVvXvtsAQjc2IXD8tuzG
++xgod5ir9etiL56CLp76Uu07O3QuPTerTxbKUGC6nIQGg+SP8L6udp7ch8R3i6CNVTCaNpujcAQj9
++bZH+vPMdDWRU+xijYMVFm0QLg7Y1acoMVIZvNGNVO+2ObPKjVl1ASwoqwLaArGQKX91cqYxOXJcq
++D0fWssi3kCXX/4+3t+3VJTeuQ78H0H/YH+0Ad9Aku/mSb8q5vkCMYyTwxI6E3CAQxppcBd6yr2TL
++yL9Pr7Wq2CS7n7Fm71EgaM5uPv1CFovFYtWqKuKJkOUAOo15jzwjobv0qyqg7pHRCKyZi0xbVMLn
++UY3izPhxF6rZY6BlQSpmogw8kQDLSr0hW5LaOpwwg53AmGCD5kz5DbNl9FcUWbQTiTnLGCyAuchv
++5muDXIZBb9c5j8DjC51NRTQq/2eU6AgWKb2pynB3rUXCFt0lq2h9qi1Rm0lS3fMkI0+SUVk7ipdQ
++pzguvW47UasLuQb7zsm9O5XaAGOaY2SYxqERyZDFaocd0pJMOFOEbdQ5BfnT6TtW1SsI+B2AF2at
++PzqebLd6rj7/Bw0dtOEp8GU3IOPSt0Fz1vGx7FRO3NvgMHdW1JPBhFElxOQrUhDp0EqHCHKUrDm1
++idGLAp/pg7fU+rCO9JUWFFgJHZnmr6iiZIfpIiH3TAVXOJknDc9K3h2v2jrIwRGtnGDOQ4Jw8wKW
++zYx1UT6hoiK3EDg44UHr7y4iq4deVYHQPL3YYmE9sQgAKDNd1mwKnUWbvK0JKnc1NMRGBeK4AJJQ
++43s1DkN2VEG4DnMkHQyGmKdmXLBZe+WRx6wFXLIHz/EsBUIr8qaTIWcQYlnHZ5WE/OKnLkJEcH5M
++PCM06UWI/8Ce8Ae/jcg0BtzBcIvTGvAMB4DZYFWIO9Ys2HVW+s57xWSmsA9tRdom8wXsZr/hvppV
++Da90Aw6kOnOQ71b9BttxQ6Iw8PdG34YpE0XGhGknR6BtpzEt9TDow7SGmUIfmOuHpQ6Ktr2JouNm
++fuig5lN+KRk4MeBMSVgX1HcAEUtR6F8IdsYuSd7pTo69DSYuWuh5xreURegbKy7b6uu7GXEouSk8
++Bcorma1uivKhtoLgtTr6VKiWUX8Oss4FZhkPMmkzYtUIxmwTcdHTqsV4fvVGhr6jlegoZOBC5hI0
++RDmQJkqNp8JgR4tdyoeCJavuhykbeLVm5w+Clk7KNQOqR4NgSzR7KrhdjVhmuCk0vRlHU+qRZXhI
++Cngm1JXW89q00iQqqqWAGIJYalKTkrEUq4ItX0GJSvSXesaT3NRiiMhcdTQ3zFouugxDDdKcrQ14
++DuInshUwkO8fv41VTkswJccQidUIGqORwYaNCe/pdZw2cDodAg5cafRq7rRLo0rob07+Zr/OeggZ
++AvCStA8EZmKBuisfLRAPlh3NijUgfI62iiG3Deq2Ug83+AR2gqyyD/wOEBo0A9VhRA==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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
++75jWJY+9cOg057qo0xKgIGWiKFQWEJHRmakrQ7u9gcbSv7+9m/96WQt/Of+d1ry/HAoUqptMb4da
++B9H695+YXfQjK06bqJj3sdH/dWzs/rLR//369M5ZSa1pHo23FdVvcTjl8arNnv368L7bh8Y5seet
++aXyl/TO+8alpePD3rkjvxzzxvW143kfx2Da8dHnf/UMT2fwN09h740i4/vhj4410a76aj0p6j/vO
++8v2q01Xx3DCKQjVn/vqkMqcsbuYblizVHpSkVEV+T1A0d39HlM/CP+Sgd/psImtKEWm4071JIy9A
++7WXrO52e0C1AMyQBavkC+A9j6h9BShEg7tUz6wnh8Dt7wp4CwkhctO+0VekevxhdOOR+k5Gkv8To
++Nn2pa50458BwA4uK71akQmOSQqdRsMJcRkepQlI4/Y5DeZH9edgJWUbGP5KFZvtiqi2DzavyZ5OM
++mV9jrkY/O1u50S8mA0hHv8fo6K/w0U2fIQlS7n1xEnlfnY7DcPotNmB/hcjRv2IUmw5z9EDtBr12
++zVF4tirPDl4OVG9RPslk6QRcMegdOIRwhXWrv8Kq6/XvRLlNvtjHmXcomZm/I2g86w==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ c8mKiFwRky+5YmKdlbUe+e/oxaAoo0kTl9EjxS7yD4ZvN5jMhvHVcP7Kuo7OmibjfXVNxvs6rWtf
++UC53fb2ZZFXN+luIibV5iInL3WdmXDl2YegXTD/b+Rc/wOon+Iyeu5ocruRFqwF1NbCuXLlw7o2x
++H7nf4k5cGHvciQvjV5M2z+wy8Y/M8WAqXU2pdyuKBdO5iunBdK5iPpprfoqAvlHPXcw9qzXosQ9r
++R28DeRrtJ/TcVQ5M4VvDZjXtZfNOt+yD8x65yuxVoq/i/mEZhlk18Egve6sev0xhtSt2Hnflit2j
++yPtUSN+yLvo+sm4d074ykWOWsKv4faEjzKMaBryQIk96okeTdTo+rervfRe+HaBvInOWqIu8XaXx
++XVg/Cge+2ZXHXLvyuI5sZoGVQx7Z6MMhfY+TvNJyIfWdJ9McV9nH+EiIVZSuovblzH00FusJsW0B
++S6zGlRmy1Kx+F0oabHNgn//kIWb+1CMGYoVzz2jvBQu+IsVXIPkrkPPQSTNjzi6ICaa0IpjuIAyL
++t2tWlMwD7vyVw9fG2fhMrN+EsVphIiuM5InMy1Q8T6BuXUazDvY1ROpj7PbkwVkdgoOvcEGDDr2X
++W9GC5vpcKGzOe/8Dzo/PxAJOnV++uHZouw3gmolllT05qlZn1ursejXAv8F/2tuf/fnbL/4L/vxn
++/Ce8/fwfbe4k9gysI1fpJvl41MogRO1/FwZkxQCcnyQsC4PzfaKdyqPSGGw8jFdwR0VU+3ZEFQKM
++35SUTb37f/x8TgBR1IncznJ+PtfEFOk1B3Rl7w7IN/UIrx9WfQvWt692dQpuyp5T/sbqEcV4aEif
++eb1jdFZa16op58bpVNGL1CojFzTGZ3KtnZtyUDfloI6HMCuH56DGQ/lf65zNW4DK2Am2iYXbwYIV
++VRiBDQx9ka/kH+xhVALvzboYFd9HKhBlU1NA+uiCfAVg/wxeYGACO3uuZtqDDvghuaLDlk9N8Vxr
++WtX8s7TXQ1s7VLVepkk9pRBqP569wDEBSpQyuXgJ0oBtNL/+xuM6+UnWR5TbfFgefRnY8uC/gLxb
+++590ccyknIjoCwP/BI+mn1bFn2hNTH2a8sdnXw+Wmj1bn/IP9+mnWgpTx4xjbR0UBcHaMjDmtlWw
++MUfvuAiCVD67DQ/B6uYvHBfAw3DGTgRt6MO0nUyOjcZYH/8oFyY4f+b7/5Nc77sC1tq0J3AvEECW
++ewLbtVG++UN/qk1hUgabxKpvCkT3APjku8JVYHeEWYyv+RPsDHMPF4BnMyhju7YHAzmyl/u/3suf
++couYu2qbhBrjvFVQ5Au/yb3CdwTbLOyfabPgralvFnyTmMm/9APjvPfOdoxhvrVfcKMotW8YbLfq
++xP7QD3zoT75p9NXjW4OvHt8yfPX8adfOSs6BkH3d+KYRfNcIo4j+Ey2ZpWNLiFjuy8V2D1si81r5
++066UpYeX1nMtE9tJfJW4nmQrQXvJuEZsL7ElYnuJrZBlfTyObe6RbSh9Rm078ZVh+4kvjGVZ/J9d
++FIjR3U5eGKvXI0PBfhBSwXNXPpQpBbV4DyTuZ8nx89x8ZT0OpZX+O//dr+d5c+p1yOV8tXv83f4O
++flunanatuFnc7vPfvY/evoxjdlH+NCuWNsVj0DnZsMdvjh2BwuWb/cjKOr55Teput+Nde/M2uuH9
++SV7Yey8nvd5nd+0yK+q9eUjx5V+1NnXRnhz7O/n1Pi8jjjYR4rxkCDrmwWTW3o1O+5iAwO6ytj28
++XS1TV/dwvcnf3BMqHGOhXrvLf21vV8vT4H8qGXTA74aCWHA8Fg8eP5kwKAc54hTB90qNrUvcesoT
++f8R970Qg8d7jzS/5ptIf0ddqtyptSvNIp459tF9ax6ZH+GMN/lq/tI+uY5mMfchnEdKVHQtbOjBC
++abPyY7A0JslXv9forgHaPUemaLU3ZK/kvjFBTK1X2qlKxLt+7rfpYd6a5/f7Ld4He4N3cRjBawPO
++ef0X578//w/pv//Fb//uP/3qn/7p17/7rTX8+1//j9/81pr+3duf/ed/+N0//fOv//xn/8b/wkIp
++FCmBbv6zGynT5RKP1C5h7eah2277l+ff//Ns/Ze3/e2v3v7rf9ve/u5naP/FX4tjx7dLPNsnrO3r
++2GafVaM9+9Q2Pvtb9eM/6ufg7i1a8GTIM2FZd1aVsn8KbJO2Pv70nfx+2PYO9zLQcbTLk2iRcskC
++hxQj1N2IwfSAKBC4xPcmnJ83HqceCPcGUkC08/O/NAF7bhhCusPuKsvo0e9MuNMb/c5y3blbrZv0
++TQEUT43nHbwzj4/v1kVLOOF38kN7G98ZrLGon97Ix09ped15PkaHzb6PjcUe34cR7RjRxsbr6zs6
++vase9dUYeuN1Z2q98frQuQR3vvMYhpkOu9O6dF6r37u+8bf8xtZ7M/Q79SeHfme7M42NTTOBpFoj
++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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ l9+mh6e1+Pbn53r6NZPVqFhyRKdrUCpS70st5H9blIdfPt2OfhbEEnjsiWjuu5Z5W6K9Fq8zQNik
++V2MOdKo5pS1LEOh9xE9M++vcLdm+tf/RNkVAtQC42xckf+iwTD7efAmRsGnO2GqTacIdgFTTZol4
++VCJz8bGdMFDmEA/69NHT747KH2ybY1uyRUzGspa7wdOFdTOMY+nEpfjnMkTbKSNsR79r6e3RP96Q
++QHqOHQ3EUji6h1elEqm+xTiimRWneunfqfDhSw/LuZpF23Uot2hI0WkHdcNX4MNtv+/3TJL6/c8P
++BVPKLb4z/aBzN1jR4KLcQzmqO5x7KMfm+fb0bXC70iE9tFy7jK275SDQsceh9PL71GXHR8otkGS/
++puyVotl88+j+udZkuf687u/57SuFhbpfOZSLzbtjuKau3SdZcq97cCr7i+quDHnVcW6eyBQMBl5h
++iexaRKxCwUJDJPddR5+q+CeYlG49uvDuSxFuMnf0D65C3uYyZv3mx8TXbAp7LFH03drHg277wrcr
++4/me+3dXNLMnIr1dxqfpsJT1xSmx1uPAr/XhjALdP3wKsX7/cPfsfn44MeiP72YF4mMMVSzPryaf
++1/OrmZB8fvXtJd+W9mkh+Pu+3sQ1dgNhtvvS99Xo3HgZW2wxwrrFsd7nM37SvODReT1Mq/of7Isx
++bGO0eovVpGZcZd+ei+6Vj2ekNbNt1/bnh++Z9j93zB5XXqbgXK1Ft/mY65Wu4EhsTLmraHy58f7z
++skfeo3ndBe9bZcbnbtzKGtxeKbsU9NzvmXwCPfezbBQvlvuVh++5vXwwo91iQN7Ubgfx7cpt8N6n
++Pd5djWz203WpH5zti3np07jvP6rcHPt0DjdsGGrrsyaemf2kji4x8fH07crT9+zbK4WTeXs6XMKK
++BgR1BpVoTdL3tOc2Ig+Rbtvx6TZpD+XUn+8zjPCR/3zrsvZYGn/C4o9IIFdALH7Nz00L5lKi2/QW
++8C6lcxdEExkToovpm8GbcPs1vfsGe5iIb+xrZe4KE0svfv9+e+/roqU7qwtYPVzcfhNp8l/OuyGQ
++Rsz94x4T9v6eY1MZkx0SUKDpvM9B8ZU3/yxkdfO6pge3tR2DcxdgX5p33BZNLMTdrt1mI/yg+P37
++7b3jonP90dbX+riYFq+VltZf1n35yZrNx4azT9if4O2EYm99Xq+5TnsGc1gq27roa65vV8bavYvK
++S4BfE2mM+P17eBueB1106ds1g3DbbeWl6I9PuHVv+ydnRFATgTTbYQBaEd7JzL/ZGLi0pyOcmwBG
++1dSWB+5JZN51uzt28Z8axUbLXRDlxWtlGZTrtbgO8qbH6O2KKgG2pwI/RmLp1llfG8F1t9/emqw4
++sgXt5lf7FWqmsp+kwoXo5YPl2+v9KKR73gZ9mrj9eZykUNx83dOrBsx+U22Au/9ywxfU9YobFmCs
++wfLReysfntaL8PfvsQEiYrAucnQ0XuyLdzR2HOr5viHG4PWx68qyh2weU30tfARn2Djn1Md89SAr
++jYgGzethLMW9YRCqjxF9P9G1mMSdnqy5r0TfLXBTuf+NoR7HwTKfY+p0l7ZPer74bsv+6SukWTLj
++2JsuHmb+PEXqEfOg5+5IEFap1kf7IXwKB+c+aCgA4M41vCrEOY1l2D9aIKr7WDTnuE3i7dW3ifgI
++VjMiE3Hx8+cSBoBjnzzG1pDHejKLEq+fOjarLOPTB3e+7e5ufCl5NG3kLbEOOEMIpE2H+UiIUV9v
++Otjdlcy5KzjXiRlTdKEquZDFlIF3LqxmLeDPEPCtqvF6FvA6VzW5M6MhKv/mXKasGvB5LFETh6jm
++9pgCVNOg/BPtrQ59e95Q8lyQ5CAgehCbHnMIcqQfH3Qznn+gT2iJ2g1B72J+BP9R9w0wZmUiM8k5
++/cUT4hpzopZzDdnzaz77EmLP3F6XzDtwnAX4YgKdk/SbVZ/txq85Owp5CghDR6yOKLdcXBGMyB2i
++8Wmuvyes1306yQx49vUF9498G8JPGbBwgSwBS6mwBYPWok9xrFeCj1HUoUnrqsB0B8e8KFRYYKBJ
++c4FRUvMOHvK4Z7KDUW4xS/HR5HQ5NjOaSG5E2Hk0NdQcuKo7i7Uw/p7FQ1lUR1Q0yllfcP/It2nC
++DK1scmauOQNhriaiuEtDVf/rmDMWVCeR0GdXiQGgVuaaM9YJJt0su2zpUE8EnPjTmrHx62aO0Lt6
++FjokJydIJOzqKoPJTZy+mVcrawMFsmDLmDDAk5o72N+/8E9YmR9NWAE6uomHIfJ+lV2iYr4q+v8k
++gTsxGZ0kC1fnw+xEyWu+0FUTEyTtZ09K3ABW8Zox0k0st4Ag7UPcOZjAyh4mrINgL3CuWsYb4u+H
++SM4mei8wNn1eH/D9KfvDC3MK0T/Sloohb+RLSw7OGWl+bdEDDEC3PQk4jikAztIMLzFplRJiW+ds
++tDiIrOZUepStZ+KbWcxyTRoboh3iwKhuNJ7Y0xHzw5p7/2lXj1QTU3JJnmyZ3WXH9s+7TReQ8TzX
++8UH6lces9FC4Y9qRocJt0wX7qu+9povN1QuDnFVQNxOqx3SxmC+JgwQAKXQYOgT2/uxLkphgAMvA
++/B6SXNNPFhsd65uZXI7pgpXmmmDer7rPQhKfOOhWAWyG8i6cefVh7/WOlbN0HuAnlQv7+Mg/w46d
++JFWkBbrQdccZvYmQ1nX5C75Ac+YT4yGcRgbzWs8Ux1lXPp2V2+6Li5+N8pPDMH8VOVdgWcmUGHPW
++VHqK7jpQKltEEIRA1Zu09hCh5QLDgvrlkOMhU/aLc7KPb/wzLNlJ3DkNzrJk5PJTR1Ikc1AyAebH
++Fj7G1EbkOcpTpDPmfY8pI/r3kG+MnzTox2sH1K9tVWIvHXObMtK8H1rzgBMk3ol1BPgpcRGlHjeg
++Qh1qIAZTBq7Rolqwx0f+uACUF3eg+NkM8lKiRk4M94mpqD/OktMXHyx5anD8BqhiytUFAo1e0vV9
++zFYe3OPwi5oFF+z6kLx6DQAIjWqEQ5MUW1tWD9/H+75vp5sYCFyRrO9HYo5RC4YH8a1Hvz6u3n2d
++LDt5KAaM15VLmBEC5Ovi5em3/hazm+mhsgft4wV+XKET6O1jY2PKRQpyO+3An7okgGKBa+t83OQ6
++2AQE/ZDxUPzC4exju3uA8rFJrTGfoNzvPNJ5aethhrxWMKROcrMoeCe+M6lVhLxe+pCuc5iJVa9+
++aR+dzVb0TbY3xo5v/ja6Z+9jgebTu0RiwtO0nQlxQKSeh2Zza7q2V/ILcoP4JU75Rd/y5YMZfjte
++2cXFdGzpyavvHEI4p0+hnZpZ9JNF3YFkP7Tafrvf7x59+CPrCiWn9DzCpPR+9QyD/NTp7NCaIX3x
++oUNsgM0Oneh+u99uf7N/eowOB32G/hwRQTosrxkDYOfU4Tokfv3BmwEZ3Gd/LGhs47GZVM91o9yI
++y9/7WpeaAXOEEsUgqzuredCCH6T5uqLrPulvA6m4j5EWtZ0bfqapFhsAxO1+8bdXY8jq6+7P1dgO
++ixsLO3Xhw8513fW3rE9/3nB+8HGPSXhPjDED7ggTdDx+6JWZaL6ubCCQgI+125hebu5QCBHptT2L
++XtffXsCf4uv258bf7gU6Adjbo41zXXf9LbrOfnPD8cHHPSbhTR2d2ji6QVnBEMOC776DDEH4wit3
++Vluw4DJ8OfYri+95bkrEpthi+L9dmX3lpdIItvPpt3sGv0bd7+nCdETi0/aefFDfwZnxRW0vewmC
++kRvMrPto3/fyNLQq53vuBV5rlm5Pf8znJZ3hLTq7NvjrbbBviazuzDQDkNsg61dRMbIPqjJ/T1cj
++QHyKNHy759T8gUx5Yfi7ayBuIHyyKShpfFW0oCUFAx5liwoPe6Ggg74GgwNwbMUr8Znw5dZMPyfk
++PdOAcivOj6fi622wb28Yk5bLfdL02uk+KK9qT4V2A+jT7Z7TYIL9q0OOgAjsc06lu1VDgFSIU5G3
++qRhBLL+rwfAyyv0uHX4m8k27dG4T8ubObQ5lIDVWK1DsWFaq6w0Biv52MHkqzu1lIux/m/MWr123
++SavnGjzLN3/e77CM6a/estdOsuS+SadOz2TbYUy21jeFqVXZ5vugC6aim0Hcs3pFXMKtIdyyfVG8
++5y2DjU3S63G7MhoW709nq5jncl4y2oEzbXjm9+KdfqzBbebHR3/+kPubblgwiYzNBrbqFXH76vLR
++oOfnVkLXzKGMMqOen7pRdxxPCKLd73l8s6Dgido0zV1kYUxuEpdqtV3ifYHMtkG7ZfdB46fyXj5Y
++bauf2v6t1Yr3vNlqFCB46rYr3Tow7U9vxaq1o342GW2zNKyZt6a/x1rp28zPj/78Iff3bBGIBXoS
++yfpi2z3cnM4kx3KpnI26JThBQnNcFeEac8BuHzMpRN8NyePJ12d8n3Qwk0K5iAv9qz0hDZHV6zVf
++GdwqiT08eExFs0yE23z+QLEzklbxM6mJYFZnmeVx8ZaZfBi3Z77dwBw9BgtwG6/DWvC9guK88ahG
++Eph2KrSKUE1EUbrZZa/XZpYufh6q3DAbfnwFO2plBYkfz323kL2b0AenmBpsW00H4aQAIznOGfti
++v4L4jJrb/t7qqb1+qrm8suvhLJJb7KXZ6NB4f+yP25l/5x074yUTVP2YlEPhLknaefQgwiLpyrG8
++iq7QLomK4+WaWgdROb7/dn9QV7rNzFbD/RrjSSqpBxOODI1ZCaavgSFhJi4oxnrPS2nws5DZetEV
++dgcEZEgez7ve/8/g+A3z4VrYrx5TxcQGukpGPLVtRaZVGkoS5TjhVVfc3i6UjdovNA9J3cdcB1r2
++vzXS4ri/DC30cZlAsL1fP4Xj2ypCH595O7EI1a/bf10S4fffWUv1upeVJSPkcedG7SX4Ui/YY7d3
++U7exNuMlt2fkuO52P49t3K095HN9TB/xHdf7jRUevK4bOcY2Pld2fns5Nz1vA00EVLe/2t/iMXPX
++lGZ1OG7qgWM6/zTYSYN9PT/JNAAjUYLXGy+JXOmn7XJX0n369qbb3voRyZQdo3rrWO04bd3r8rrd
++sroHPeJoj6RJ3gY1AzcqW/ud91hIt1aYU6IbnlfbBk7rof07+gkNK/Yrw61gz2FEq0An+Wntnv3x
++iu384GOafbe6RzTg6SAnwjzIujIrUXKbIBYme/CKPI11z+1KY1jrXui6XinvBURNrbSAq1/MyfGa
++x/7p8ZV5l44zAzXv0onpNOVMd6lF1Hz97uWl6XV0gT1aOn9vgjGMvub7Qo9nXuGoIDcuO2avG+hY
++yy7X7gc/FudNSXd38Q9t/Uk+XG1b3LC7/TMyfNu5iM0a6n6oe001KxZYG7CEcora7f7ZSel/CCVt
++Xk3M9/XnMF1wPOoeoYwW77enw5mrytXVUxXkWmxtwyp3t84lWUU5f3l+8NuNc3paT73AtWiAk5Uj
++ZQIhpjBW2rYqzrUArvhP86kcfFJXcPPDKczXlZd9KkudNm2MLWF/OqYwjBYM+3en0A==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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
++edyZ0m1jbZYrJsEr00ZSbZzsrXlmXHjeT5Zk1buFQ9Z1F4c7FaPdG9wk44PP7bnJbcH3xjVYiLru
++oojOJiO/UViD8l5NhLZ5MKad3Ya2v75N49sBBdPW3zii4cbP9nhFEkOd+JbrwUEye5tXj6VbUyO7
++hxD0fsfbs69veTZ/ev3+V6///ov/ofz7f/XX//hv/sN//a//6R/+yoGGgX//r/+vv/6bf/j7v/7X
++v//rf/m7v/P4v/xP/+Xv/7r/y9/+zb/+v/lvU//2L//hv/0//8e61z/7t3/963/4+p/+4y/pn//t
++3xy//Av8z7/773/7N/+N/7dp8/+LX//j6//7P19j//2X+sv/9Mv/9r8fv/zHv3392//yt3/zd689
++cqLlUAfA4CRU4O9emyG6hYJ+MYY/PYYPgIIVgbtu8eHgdYO/Xq/3P+N/nqvu9QAspuMl9Ne9hsqM
++9T7Z9aIcZzhYg4SYcpC8qhrs5Pt9eX2rKkrjry0h7gyuIQ9il9TFKAHRYKrDzyoAkvkOkHvld3Yh
++HDTYEFrgxaTT9ZUI8HOQZ6V1B1bC6s5JOuSbwPpz/GWPxzVewGfHJ752Mn4gfD5gFA==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ l7sd98dD4UlC402rt5ohz4up5Ygvmoxdn4wr0MOWJrwcULMA3HNy+bEhgrvO5iUbwGrL47imKPL6
++wREyijhztFUIIcnWFIbzOSBZYMLFxotOixdgp6w+4n0GxYMb0FTbo0pllDC/lSRl8z4eTVNP7Npj
++Qb+wAaZBTllldPPUO0IED9dNepOHScQacyq9pu3Yfj18FSOLtqpGTfg3EJWR42P2qpZwk6B+RwNg
++GS3OQt+ksxeutQNOOFZsylWLSOusel56twgl4EwYESu2u9zwOI9POaV53YCyo9L3HZVbTBG6nD1+
++nf6xZj4clsVlYhsrvHIF7pB233tDvL8OWmgzhC2K3JajzsIYt9CasMRmE7hJ6mciVJy9WhZbygDN
++T80qlrWk1uQ6WIfZpr4bbMk72eHKUUOVnQrRNM200246Vd1yBsw1NTLpxQl0GXdoYv7jskc7QzqR
++RlEzOGQ6zrXcM0Ob1jjkNI62Zk9Qx9ZGRh1VUbuXT3Osmq+WB55axVYYdwsMjFAM568+JUirWcin
++sBeS0xviMzjNPhYxI0VscJtS8bBnIUOY9wJaz/mVfnCENNkHlFm83AR8TVEe9O2VhxT+6L/69//m
++z/7x9//2H378/h/+4+/+5h//8y//vcn+5JsFQ3Jb+U9/+Tf/++//8R9+9x9++ZM///M/+/Hjn97/
++3X/8/d/Yw3/6y39nj/4P9m+HdN0Qd6p0dGYc1fBnGHgWrEA+LbMXhB30nhkAQ+9zFiMqhNbQWsaB
++eqpRyVQVcr2tAoVlQAfY+XBI0cDAYh+ZNCRovmY3H3grPr/Db7tWRlL/zYOY0ZfHTqcb7u+KV3qC
++yNQJqdmWx3uhY7xk61uwAHgtpY1QZBmZPDlzjGsIwh4z2oeYkPEyEzo/veuYh+eDjbXY38XkE2Cm
++RTphF7KeHKjmECq67njMFvebdTqOL2OvtkIpjsObtNEN1VVXzVfoOAqFetSGsvYiYR1G4DkgdDCL
++67kuVI5XMCWsAyubF+FNPoecKPzwLX78pp889nWEtbqXUGR+bkOPuK1nEZPFxicVxnFnfQy0njfC
++6bvE1SHfOJLr3blkNpubRzfgbvE03FTVVMPu8aSHoaHOCxopmryBta1sbZhqwLRg3p9WiZ9jDldx
++UDEPaZeQkzSnsEu2vxpoCu1JB1Oa0D/WD47geyoiRy3sLPu53fEw9FtZqP9ViCmm4MDt2HHnjduI
++qccUdtBC20Jqyb34+8dxLAt+LSNlP4sWMh+UgtEF1xq/NW3//+BHnjljDvMK6Y9Y9Sb/eiWEIm07
++uOl0sBYj4ZA9/LmGhwMVZUKWD33eUL+tmsImcmoAm7mH4AAFH6iaNLmaopWBd0TRaFCyhnapsRqK
++ITzWH3JY1Gbd+QXhmxgRokEeAx8gq83sWKCbsV9DptDDM26zuS5DxmwyV+2W1cmYTWv20ynP0Tl2
++ohLQhaSDnh0JSFdwB5Vj4k7rDA6WDWA719QI/rtvL+jccWHOmnQQWwo4yV7Gr6sVD+uOfEOZUfND
++qRL37/wk4za0bqZ146UeQ41PimAMMVe1jFbaIW/UGoGP8A8LHKMJV6UquZrRZmAhTF5AgNEyGGB9
++y8B1/byPfnP1epqPmbFkEap3bZVGnpY+wxqaTTnFGo0uv7lT2CZLGa9Gj3Orwy/Q/hAKEo7QgSO4
++gMJDKdAPjtA6U5tlLKK1StAFOviicYSMfk4zWocJm8YAbFOO2egtEa1tMuONwzWzetP5XX5wfYiz
++7fJYR1FvoeY+c8iqyHAv2neTLz7LakWD2Y514yVeforf/GtvlrqbB7PyyYR1UD6afCBCulg6a8KN
++ULdFwDwWYk75Oq0BLIzmeHp7OFExJMBjTMjSEKPbrI0jjNMLDRn0Iw9h9mY9JnxYVvOTsDz+78QH
++GXGY9whthnKat85Ytd/CH/S1g2Mi5MCDJuS0woYUKnZ1GpvHP5osyzV5Begwo9bXZAWMVvOol3k3
++JXY884bqU5C0gJ/L9R6sBIvBzwrD9Eq1Gd677EH5IoFyAOLctAV6wYULmtNBwIrcBB+Aq27StS+E
++GONGoKw6Yt1lVcE5O0xt8ln45fYh9oJwgcXYsMEICKGWW9sp40qxHH89CFSqfwcJws7YEx68KwmM
++MADXcuMW6dBlbOK14/MkJXdpzE/3e37Qju72RISfaEdbUnJXDBDhaoOsRQmDbwYLFyHKWUA44bup
++DBJ/BMrJN28W3idKV7tT3pTKEQzcMRAvs3X9BdHEURhEy4mwrAR/4o54b/eLeS6xDF5HiahhptVp
++qUa2GDLarM05WIJlkY3IIxFPtYiu8Z8ylRbiaVvB4iWwYok25iEEvskZjgKFxPKlGEEe7M7qy+dU
++HwF6yqo5SrYci+HmyMO5ElILip2m3IJFyKUUCFBG9hVznjjSTsIvlFE0pfd9wEyVsU21Td1YyNH4
++Qbv+tgr8Q+I7/fJw+Z9S1Y9//u0f/9H4bRPlL/Pk/wVJciOWCfvwoaMskBtwlodpbw7J4+xL/PZB
++PEeQUb19GOUr+RnmroG1Ks5IjD92ofcVsX+syI8n273uG+sfnhs3z9ook7sNm6N47Z1y52AIudnW
++JhxR7uhCV1whdH8shAsMxC73PGqM0PX3Az8WnIr+S9uS1S7sBbwcLvf0rcsd8B7CYUEGFzr3zct3
+++KmrY2Gvh94c/2yD4vELFpl4GAHxjhVQJZc7UX3IDZIass2XNIa2kF1rRM6LkBvSP+RtNTx8Xicb
++czmEdlHHO4IFKQZ43E+fnnUlGsKeOeqHV/jNF2kFrCC+7hxco3XNPFiGXVhNc8Szbi660HmTQ1jh
++D7n8TD0Ic2NYy+pBmDns8xT+K2wEJzuLTWnZAm2EmfjRg4kphNYyJmaTz9eFOrCD5bfPRym2tX3y
++2T7LXm4DL1HDWSt41KvEQ+ZVDj9ZYns4DX6PMjj/lrDEzvv9cgX+G66x1zS5fDYu8eM2xxTX2f5m
++5btsR28Znkuux6pmIeMATry32xP/bV7RSkmmf25LQJZzVByb4GInhYKwxNZqwS0dQi+gdaEq6R7y
++HRx/Ln+IY5Hsmg6F0lFe97D/UvDYQziodr3GLHZdB0PhQ5i1pE23gffL5MQeVwoVv6XW8U1aAI9N
++aJCmuWLYvTGsJTTLgBBx1RjZz5DLvVW5z8uDmi7zGlac99nwEmoOHF+w1xVTiLq/uKggeth9vE6K
++5X9ibUeRXjage6mQG+9kCKlxLMUAtWqV4i1jZVit6/Izg5x01SXzKh/CGj2L4/J6OGkh85U/1ycG
++BjQp3ivho7lPz0V43ky/8W4dAdzAIVns4vmQ7yCEjoNmno7LqvlPD5m1HXyswF/H65jZMXgLGPgo
++hHONj6fPrICG0yeQmMtb7h0jOzu1Cz2p6MLHmV4QZvN0XGjJL45gdY5hPLBgO4RY5xKkFxgh8Y03
++mqPEwwUa0WiH/dKxV26Wq3dh5OR8zbxoPZ6kje7yAROqBCIBwkottpu5ga9W/b/Cd/WdGevBJsMu
++f/hYWGlvrxtCz1iGcGmOX71l3xVfIHq7hxB3l8N8tU4zFDDAkhqhGagbI2zOoXRNLJTIbV+XYE7R
++CDxsqMTnK1eO4A7Nq3X4rfW9Mwcl/IJriVD45ramgbd0VpKHbITaxQ6Zof0sibO5+cle4fLaB7ZT
++0FW7sI2ihZ4DwjG4dVvr1wi8HErgIkK4NUIE7h5CQ282Hu1UqGwfchq8xhk9+fAwjskQepMNF+7e
++8LoqEnicyRQMqHg41FpJkfTFz6UBYTEYRwgLt0vIu+Rr6+G5eLTTEW4pqLJw5zzkDwuK69AK5/Bw
++qzBhi19whKl9zEramPCggoomnvFqgw/PsMxsGTCrNdc+E0i14QMFH36MOTd1yzjv9cUEWurUe567
++dGHvAyME1a8LZ1l8WVJtuHwvjlBzbMiSr1MX7CQu9F/GzpUhaQ8XbrO8GlfsfPdL+NUculYsqnfw
++ans+b8ifbYakDbkXf4621dmQJtSWTi2fASY3Dl72uHTbC8ceQovp0Stx7BP+GK947o4QOhcxRsCn
++gV46N90PjrCts2+8V8ZUq9F8YAWcYjaEA2ckR9kP5mClbJxDkK640BPIIexhflj7cwvlwag+S2CN
++nku5Roaw0yFw5xzCsudlV58RYBs4VNhELaAFmNbuFHZefu5v4O+96TjfIWHJrDaowowYfVHoBh3s
++9aERDBjFRdd0TwyjxFghbJM6N48zh2FJN/xcBHNd6EXj8XOWWf1LPrwNn4APD3VjLHGJKm+F11G8
++J0f7/HOoYTxXWQy79PCE91sQG3LhPiZOsaBLgjXZWtiotg5y7uAI+prx7Pju/aE1+/Tsy0G/nsGL
++6b58sa9XgetbIrnwkC3DBPbr2RAeC2nss/tXXGQud0QVRp0KJ80IQ/xkCi++2svv+2kz/HznfNhm
++f82HX+zJl7v3q61u+LeFk0XvqBigcdPm7ums5GRQwqLT8eGr+Wpx1Zn2CxfPONnygHCNuL6atYlZ
++EDarg4wRrOIDRjO6mZqwGUTP5jB3IL1NOCNL6ULXyjHCaHRv5kJ7sfkwuh/q2vWDUV3Ab58j8nAe
++Jd1Jb2GPLDc854hZPoQLfY9c+LAzQmi5CL+tGWeNldwpfj5yFh53LXIasBudcpnXhnNixd8ub4Tq
++azti0vHr7oMs9wQjsrKscinu+nEahRotcxgvy125HJbbXLpQoGpN6CSl+CnL9eD9cyA5V3u8h60o
++cJmPx6bVmPrOGln2PSgtsPy20mGGLZlAfWmDL71TcE7NEHrcMubfkCV4yHccWBNWuYkz6Ahtu/XI
++EcYIsgRrVYR4yfE2jCVOgqe9Q6Vs+c0jiK51+GtOkHfakiMydbEMltGIs7ThYgDp/IMXT4FXagx0
++g7f9io1lGwehbzOCWsZvlTnrufoSIrh2LmEveLYb33zmxDks+K+GHuj8jsU5M2rIvdYYl5+Bg313
++jHChbbK7ISwiQjjc3wuREbq1xdr3hVIa6GTrwjwmnvSmOrJjmkZwKo9449XC1+1RSh7CnLhrfV8f
++M0pzS04b4cJlfCpxRqrssDEro0OsBgovQnObYQqaw2Lc236e2mz0bkrbDIzUJe9mRvWyy9cKNeyI
++io1fS8ft4sXXg6sQI5x7juAqF9a28HCBdWQJvMFgVKlKZGRgJ2Nkh5C7kOq2y+UxhgaoWwO5yxgz
++iPBD2ePtYArZCDlWtx3Xr8vwq6eGw+Vtc30S7ofonMuoXmsM1C14lC0M+x8c4cXDXwz71RxeTvjl
++q71ehxYQ0/j00IRW9zgYKIusp0cQfY4u9BvzOyOL9GUqShUhDHO/6rhmpBpCWKpGMJei4mGHCYVw
++w/OqgT375tFNrsOVKnZ5xQauQRwfQvoC6FkTQqYz6sE+uJzGeY2cfCxOUiBRUV5EKmHmjXpGaJ1u
++GpNrXkBFj9uDynjfnPFbQiJG9HfzDlz8mjnwEWH81cfy/iUfdhhCPAw74goquwr66Q==\r
++ ]]>\r
++ <![CDATA[\r
++ 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
++XoAXy5O5MtcjBZpx1wgTaWd47H3vgQ2/TGRB4vPKSrPaO+NK0m/EOBlPgUMhts1UZ/EqothTZoIL
++EgvzBGnd2eSijwg8YLfUhV352pN5082Cesisnl/u/nlmseYssn8eB6znWqmXI8J3yXOtUN2YYAzr
++pkyHPiQH85pM4EBQQpVfK50LIJrlvDfe6xiPupFcP/qE65F0EyOKD5oX6o23Fwq846npJD82HIEi
++M+2akGOqFeScO2JSQSxi4YNagstyOniweygjL4o8GDINdgdPBAEP0gtTcAgCcOF3P23U34YNHDhN
++hczHAMWzDiQPMSthi87uCA3BPLAfHggxtLNjxdaRZoe4/RPSBYp+ndgLj93EQoSdFcu+mWzNkonk
++BWlBSiHIuZenAIuS2SpONlLp9MfECKdhqmRaNGk01sKwXKprOMTynzCL4kuZD6A2O9g6GveZsVd3
++3aRmxxKMKvqakWDihR36MqW9UVWpJz0itU/s0gLJX/PyKsEGquD0oXw8xQvbzHQ/1iRHXwdGhhaZ
++gGbMwRpI7MBoMBk5e473quRKHO6lmjiEAmlY1+F+koYNOCvrkd1W+xzbP6Qd7r1bnw==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ oXVjRqqUdKf3JQtrfBpIlxEipsEuZ6OjINECzsh52Izi6y/6JdNTCfLjhAeu3p0lOfVJmKWAoKc/
++Od9Gi4GT8oTg12nFzcrVsmogOxoeGX/cbfj+hp+co2A6wom7z3KD0E06LeGrQ7ISu/tc5yicz8vM
++v3+mv0p0KRSTCWVnbho1oaBNpHxzV8mhqmNxSIAM4IlZcnyE7jx4zipoyB+B50gizV5egn1ak+Mp
++r1vrsg/DHRtv7/AsuJwalxOmLO8rAxjcdEkLwewlH+Av0/oRqjLEv16X58yuXlNdQvAA2KStFvJY
++B64RKoZ8fCMvEumQhJol1aGTw3fZcjmLPlyD6KoQFcpJXYSnbipVFNApqAdIs7vSyi/v9TaNf+iN
+++bYtPmknK74ylywyBFAxrl7YWOnB2daKrK1IESObvPPQGlyMim+2rZ05QCyAdfI97czwYYg2R5gI
++xzyR5bJObmkVZ1c114FdEkRQdEeju49vZLxuml+RONhFSCxcU8Hqu8vrhFo8oWrPTeKHAatcGYtb
++i6yr7rBbrWCzy6CSI32E5VSQZhfC0mIDD2T4h6u70K+840OmaE+yepbhGVToqNH/p3Tku1QSVlOo
++q3RRYIrlmiQd4x0U8dXWQ2EhgxwitG/gn5vFJRhgu6SbHLH2BNtBzcU9faGIn1p09SLVWk4CRDc/
++vEPyfnP+CqV7eH+ww2tY+dXsuOukxvy4rSc/5PRa0mJTUjFT0DB5PUrbFLKatKD9KltqL3eYHXe/
++8iMj8hAIZEE8eW8ZlRjkI6hD4ucCFRrScSQE3EifxeXbbvft5XIOrvG3w+33P9KHe99wn1zugQBX
++KNV10/W6iICFcmE3bbFgd4X78Lpng/0dHQT3QyM8YcKz6P3g+uNqF4kwvbYM0vdJO0nUmY2ltYyS
++6WkTQRjWVj5uhZioYnMXPX7TRw51lO+iy6FCc6jlHAs/hyrRoZ70TXx6Pkq5mlwzY/Y5V8EEM+rJ
++vbQN1no+Q6/MCqdklf7ukUFbbJI6dXk0PIMKEPg8nI5XTPvLTJp4tMKZ0UxCKEKL+JKTQ5EvYWUo
++saMGpCTfSSMY6hqoNFaj0xmhGkbIStrQMZCbwjZcQ3bWjN1q+lo6WP4WmSTVR8ZSwTwKzhPCK/O/
++b0v6smGqHClJ9Mf07LIdI2cud8/5nxTSO+ioblL9EGXTzwwpTKDth3EPGhwZYA8fxTsRbBxPRbRE
++MU3QFccoHgAOk84yI3H5QqGnKzREfXkkwPAVh/ahfVRXdv/I1Gml6eoqHUD13M8zzAffnbgnifTR
++TXpY4vxD9aPmpDv2cgJc20ok6RIYDmCOiG4YQ24TpZIj0f5pzr1Qkmp48mzYbfShGlqHbK/yKR8q
++WMRTaDz1RqT1ts93ypCJyg9BYp3vj4u80cdVCinUTIoFluLu32Gb8F/0yTALgZZZLHr2ppCGAS5N
++1MN263Fv9uHhYzXYlX1DVRHVmQFzJBCKwwjZY3PBoJni18yu2NsMaftx73Ivinzdm/piKS/nFgjs
++z+RkxnLRAnhvv3MpHxkSahxOl3V21WHZC4T7N8MbYYDuOdtmwi1iouJQO3upOboCywP/vrmMQLPG
++P7ZFmfZoZBQOVVKnh6AZJ9/Pr+eh+sT0EZILSiARoCeCq7YoCAkjQIne/Cd0jJYzZVHXFTGXKj0O
++RkyUzzH70fhGNU+PsOXS7Ru9mRMrvvK3xCezEQTZgCjENbOH1tIGvD2uR+WcNBIYc3N9z+kc1ebC
++knJbQr9KMjbZdBrlquTfOoTcQbVb29aG8hIjucbdqFLh+X65Ov763gcqLelqJNrD/NPtcNgbXQQx
++UiSoeQfw6wxdfhwO+8szXN7vnyEy+45pBq46BEBfoNJ/C1x1nHL9VWb+k+ZQkj4Ur/8bKN3/ceHX
++O/YV+NtpghfLaNxocC2hIAsVRHjl5LIgIoLhMMYs6qwNTji5VNn5COKTIfrO2bh45plvF/aRrqZe
++1aNkSS5+KCQjxn+QzosHm3Kg+ggbiYFE1VCj+WaiF0yvL+jB6iP8S3uwZor7KMhyk88OkWF5BjxX
++Il1Pgd/NFcMkZ8Ja94bMeHKtOzEOyLwteo1iPJ3BEsi8y7B9hZ3Coaj6wKQmF2ZvUCPGCKLRdP4c
++4Njds0TJ/PZwQd321juGF5zUS8vloDnzrwIVlh25iVmEshe3tlFBj6lLN6pb66qwz1XYEevWPqv5
++7LJJvRBYHWTD1JFoVVWmjl5L96H08bq5WZGGFpGoZQ0G54yFQjh1DGt9az73SXvQqS7saXdrgBd2
++ywv76t2a8IUd+8LefrdGgFHXwB71F+y3ZoRh58Kwx+E9IRJkT8I8SxTB8seM8AkA17ODCCGolIoR
++Wv3KFHnqYBE2tknlEeNrZTjpK7FL4tosaGs+1r9FgfhDMmiffbiXZ4x5QFpHaM6V2KwqF+Tvvhwc
++nw+xdDFSn0A9KgpIEVCaTO0BI/QHopkwN1mn/mPmB8KOin8dqjtss3hpyPi36N4YQ6pviOOw51XY
++GytsozWOPmDxyslIrvknSkrte7xxCE6OYMw3zHMMkA6h1H8ZJO8jQv85QvtfgP775sd/Wd+wP65O
+++WvZ2rs2/QvK1t/8Nhz1rXD+y+u9/nv6TSorvyX9P3/3/6rht7/7h3/134yvP3qz/et/8+/X//Hv
++/vwP//Y//z//9//1P/39f/kv//if/wzrv/3H//M//vmr/b/9X/7857///Md/+E3Nv8H+W/vvZPB/
++I//j7/6rTrf93/Rb/vJI//3rv/2nl+2//tZ++x9++9/+9/TbP/yr1//uf9Yp2en1jlLtWg+p635s
++P7/YupUnfz7+aWDyf/lnPM//aLPweLC//zLsNLii/334GVIukyKHPwNojML/lMLyz2iQn/qhPpRs
++DY9njS+SzJKp11LFAkLjJ+3JWGFaaoRCcKaEo3SboWRvMjnalxE57B/8i9XgKcpQtTzPcmobq38w
++4pdyrTxFwl/uKZ4ZN6IO2zQ5sCbb9+gzlI6nPYqIYu9pcGToWIv2uFEM1/B+GkpGV3dBW/l8GcHi
++AJk3qJrLM/QMI7A7OsNWH5TC1GzrjPDLzJ+PIozbgilSAVr/KK/fbcyzeb32pSofmwLP2fABapyu
++lKT21vEwuy3+WNs72SyZQGzwDD8ejzdm3pxqJ1PvzAtG/slepKcDrU3uOYx71vcvW6zj3BKpnHWW
++3C9/7kyUdFgsm3+RKktq9ydpuZAGq9riZrQQVo2jcT2/3Cc+iefc1kSfKxu1c4DV2m/hI5x5qmRb
++8veftEP2Ut6zuTyB5RnXSaJ/93DWgEpnZFOKIJkehr7epso9hCF1IvoZoFgDAVlIyIrKb61/jizU
++Znn31+tBRk8l5V0efgtnrMFuzarUZukAXUfYQKIlN3GQHJ1dsY9WsVe0ZP2Tj5atmsDavhnr4Moo
++/HNv0/vjL1gXqjRkdhMHtldcGNyJ1MX0S47RHxv6XWt6W4oN0Y+zV/6JhVH8cJ0qIe9P93LJsb40
++z/vT7XbN6rbP9di/DnP2hXeJldUk0aZz59vWiqV+zUzKt+r72+2QJhcDqKCaXiMNRtn35myKvUOq
++v5kCtB2SCYu3+aUwHoRYsS8cYkPVWX/SDAkJWVDIne9m+A17c2R831/uTKx4NOqxSQlfICufbp+2
++u7prYQixPtkm6ISZq7E1Gsdh23fylRS1AOkNkc5uMI6Nffj2DOfx5FizQcbDIxXe/xgJn0XLnz9p
++B8hV9gKPMZFwWL5NG4UKwCiQD+v4GBUw2C3zRkocAVmwBfFOM4JWLX/LJZDldV5BGGY7l/MMhX+u
++zcUReKnOB2tJ7KVOLhnoQIjcQuXRpkAXM448MQ+Hyy526FvodZHcGRFRdh5Oz3nrbJAn8A7U9GTw
++xbeGapsYp8lvCe6krnr+4sI92eni6wi4iOR/vYcvmI2/9eg+s1FktBGgLLId7brEdXajSkvBTTxb
++bbKbyuqm1mHGisNqmNZ1uK6+LLnGrekpbzHzWBfm/Ovf/vSfj8lNKwCNn/Ew56hZTBgbII0O6l4m
++02MPKkTfn7SX1QsvjsYWE6ByyzI1yrYac8VBsR+3n1AOR31cSWZUrU1bOugMJF0jMh3F+mgXstgQ
++SrYo6u5bWkQu/LgP7KvtN60gQFwxRRqO+NvV6b+tfDNWQF9GKAkpqMhVoPYmuU3sqIyKMfO5fIEt
++6riI8RRIpBeKFRtX9xYv8lxzcYmiYYG0AFl0Sx9Il5QeF37aEL94OteuQbL/tFODsRwx6pRMwAcb
++1qMQeQwjj8uiQFV+bzvX7SQ5X/6X5fNcutvdJNVe8JWVrXfQ80RarE/wx1xBiStoehc4+XH3EYYv
++FvRw0ljBusC9PwMfT979dYjClT6KqmLOxXdKx5zS3RrWovX7r1Ly5tGzjY0vxmG+a/ck4NsTPJ8t
++VR4ICv/1h2uZ21i3zk//m4OusQYWx274TH4dDF78PC/+LL/8RX8YkSGtCy+kjLJPt6fqMzW9xcjg
++pi9oCp+1nN8f5/wPjoDuzhqcVY7w8tf3Y02aEZSyL/tY7ACgyAop039syOWzwPRpJ925g34x1eRV
++6Y1kSiynRs8MuBbVuZ30V0+9XXVxk7uULfuPd2MEcwpjYDmqZlR/FsYMBatLd7GslQovR8oeZ8k3
++060r82jwSk+DSl8aKa0s8ij+YNDgTVKLavCWH+2GpT/NomvNWmAarNjLqrDZTQB92A+L59qTkFUS
++fstUSQIaxQZgT6Rqak74pVnQb143ulcARLHH2JfyzyEjnoS1mTz4n7Ad50ALcD4Aupyob4xam+tl
++6HVrkyWNmkywS77ukdFJhZRrPQoLRYNya53Xx2JrKs2d2tI/PFoZ4ew3bkLRSeRlw/48Kft5Nw1u
++40cK9DUfXzdli/zWI9DSX/qDvSKufkZ4vQQ2FV8iU61KX4Ltqor7D+mIlKRMhq9cd/j3kmLmRyNR
++LiX3+LvJU/kAWvNSe0MNTz57qlgyrRoAXaS2G7f0PNqUqqrtJ4vMGJZYZxMWWU2oVKXxyJ9QDTkN
++u5TtIOtn6Q9jedjIy6oQaVLjWMOA09kJUSWcolPSrQyGoaAqNl8ODfyltKh4qMGTkypE49yfV4OO
++n7S/Vgn9Fz7Fsj4iNvGoV6fl63c8uXMiqe4+tq4IOwRSoa/kOuubuCFdp65gpM2opo8Ade7kPx6m
++QYIDx8rgMsHFS4EZJVO7/Xrj6dQ8YMxn2HMlKgDGR0CpaUGqE8Mi7yXXB0d9TNg6La4SG1ZwVZkR
++5TK9l/zUZDLg6a/J0cur5jRGEjjB5vPOzjN6DyYnW/KePgKs8C+hjJyfPP2fOb3i6ue+ufwWrI94
++6VGc1htoNLoiQIIUMvWf84tOCNgCLiEkf6572FyNpiXX0p5fw2MFd8wKt7V7V1wTnW90c9k963Un
++ZE6FC7M3cynt1fbIZ4RZGXiTKib+ROtfXerAIznOytvjfbo98QVb9vdrA2NTqVqMuQ==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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
++/cIXv/L8iy/+7u9965u//fx3vvcnz//io49c+usHP/uuf/8N2OMtb9x4+Jehye//3W//7d/9zve+
++953f/sJnHv3UL333O8f9T/yV+//Lqx/4EV6iW95y1y9/6++++Pe+971v/fr+7PPf/e4vffxn3/3j
++7/7U17/26I+/6V1/7b/7jZ9/G7e89e33/9a3v3D4X3/3u//V/e/9q5/6+tc/dcdb3/TvvfPBL33p
++wR+97ac+8+Lf+pC2fMcDX/v2X78we+Hrn/zJN/8HD+UG73zDLRn8rd964Eff+oEvfOsLH3jLLdLn
++h3/7j37zY49/9Wsf/4k3YVfv/Eu3/iX8y4+988Nf/OZn3v2mW2ScH/i1P37xswff/B+P+//w3fD1
++n3rnO975U/CXO+/85PNfe+Rdb5CdedO797/90m/85h9//8XLH//U51966Zc/9eADD37q83/4h5//
++9Kd/6TvPP/gOPR1veNfHf/8f/dHf/9P/+5/8wddfeOnP/tkfv/iVL33p6y/903/60gsv/OH3vmFa
++3vqOh178/j/4zv/yz/7spRe+/gf/JP/C86e1fPuHv/rHX/svfvV/eunzn/r45Re//0ef/+SD+vVv
++f820zFP6le9+cfbZ33nh0+/5j8Plb734n9/5Yz9256dfeOHT733vp5//8gOm5Zve/dnf+/r+YW55
++50/89MUXf+fTpuXXvmRa5ik98sJ3fv03XvruL33yr+Wv5n89+OAnfylva/763/ni/W8vLfN+fumP
++/vClfDae//LzcETyjPDfL7z40t//Fd0iHGh87ssv/M7f/ubXv/qVr379m/Av/PcLv/MH/9vf29ct
++woH+J/d+8oknZrMn4B/+V/737PA3XvrGo7pF1HL7P9t5Yu6fi0//5ktfN4uUW77Z7f/Gl75c//OV
++r77w+3/wD//R8x9+e93ys3/zt/DnX/rSb9E/X/rKN/7nP/1//t8//Vvbb7Utf/jHwv0f+9Qv7PzC
++Jz/24AP0z0OfeOYb/8e//tf/+6/f/TYzzh+69Yff+h/1Dz4++/SHN3/8R+Eiv+NHf8IffOv/+rf/
++9v/8vV/4K2+0ROGWN/2nH/8b3/w7L3xueOsbiDq89Wd/7R//q3/37/7VP/4bP/OWquVb7vrCn/zg
++X/zZ1+7nO3Pr2z78uz/487/4iz//we9++G2Wet36I/d99Z//m//vX/z3siantsx9/ur3/+W/+cE3
++ZE1uecvPZODP//xffv9XR19/409+4ivf/+d/8isCE/CDH3z/K5/4yWpGP3Trm+/8xK9+9QuPKIzA
++N77xq5+4880jIvuGN//kXffdtfGXbzXAz9x//8/85Jvf8EOjfzLB+5G3vPHWCshk+40LyHYmorfM
++EV6L3HHHzx1eBFvN7bc99vPFwi82owfE2NlsfBT+aNgqBP977O6xpb7dePb2zRhTA+a9BGbXuBW7
++tmezfAMmcDRXCn5BDJ7OuQRGsmar731HeO5oK4CZO+M92cMz/nCxft2fP/6Z26GDfqvxDVhMU/6E
++az3bYmEg3keDUwcLf3Qg33Qx4Tdd/mabyq/MD+dAfQVa37Jt1HdlmOi3gANstoZ2aLnXvgv8q8Mg
++bgZmRehrQ/5Gbgm/0pJFnn+l22qb4Bb9SvJbrRdjo2vTIMvQb6VEc01befCD/kpqPPQNveXv9Um2
++CufaoAFccPoVOQwPzh2GHfghbv8QtxoX0FSdtjpXRg54j/iwFYOLbJR1eXAwtrxGfdNv0LKEjg4K
++gKETyzjYjbvO4AC2W23kTiM4LjAE9loawaC/D7hH23zIC5/QiA470rSOLOsBxsIj8A==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ tmeDXRPMGCiXg+J8Rli4OwVEpYb24NtePifPfk+6YQTVIFjuT5aamvJY9VojKVGhMv5cR6QB8nu6
++NFoceFobeyT7npXVktUWbmZLtd5Aph6zHm4gTZC926itbspj1XMic1Rrc85xUIcNPeu6+6p8DiWg
++BxzDEQlELg2VrMpVdcL2VprbCm5LAcEzQKO6LZtsG+sOF918IS8ZG3ycO5BFd1w2zeiuvedUJiP9
++edVYtN8GNES+fKolRY0OgaLQFK9BVraPQWNfOK2xTLjqtoyhB76mkEg66VKErl5z00Mmoa6zU1PN
++L8sw0jOB6N8yBim0TW0WupXkLo5jUFtV72S8WvBF358WtMJxnhPOjTt1GGqDlJrjqvZ2Lxks7Dyx
++PmBlKQI1xmrQ14KWbCUXGS13NxtRyLYv9auUQp4G9qZ0MnCsDZf9U3k2sof0CCSXkVHZP1C5oN+f
++rc8HzBOJVi1EmDbCPJGX4qhonx/YBVIXmMDIYyhHJDQUlD3eS3AzhgetsksFztBOIPsPhEZ0QbDD
++yXgQNVQXDvZS3qVBDMbQtoT7oM/k3IEsuLkUFtTbWqZbX+1BFMhAB7j6IfiM90Le1PwPMeZewcFw
++oWw9bU0hu0GERqCasY56EjKkIyCPSB0Zgcw2mIlpFNLoYgOud1hC5WHN1bY2iAeSOBWNqicGSH3U
++i1GTrSngluQ8L40UvwqOchhwt/pMZLwLA++73CBwHYuDGCn5ycaBRbnuRVKX5GuEc5gaDKwRuinE
++xQysXgdHgg99rpR292QDhoHxTQmoShMzZ2hN7RyUbAnn8jDgY0t1TNsSBaiOtyNDqdbOsW+VejHL
++u7RpXNr0veUOgBdo+b2VJevJVYkwUbj3ZNtAECUs7YAyZ2PjpNV7UAxAUBdXPNoANBWIWtHxtE7p
++Mbhf916YGVY2qAe0TlZ7CL7jxWkCudrAypDUW4PkAjjuwXEcFAxNHFnBsY+ZJEkorM7zI3M+eM33
++jcUZTA3zXq3rJKaNMu4A2LnQl2UU3itpBcdQpKKEDhCEUVkjZf+4A4sHytK3BGhYUI2gsxyvxlhY
++JtbYMrhbtXFQUJzlujWiA8DEkS3grY6pT5VpV0sNJTS14oAWZwKRRBQ5GmoyqsuLWc8Myp0mYoJL
++JUGIX+ERBJs3B/FW+uWIbw12QZCF5hqsRoDiY/U5yCoSaWJBa0iCGWyQ6sQlqQTgib1DgmpTAcTC
++MgBq2IUa0urasMVuZ5xZKlDcD6DGSR/ZJ8EIhxoaaKvLVqDpoYDoF6o9UOzRqHEBTbespB2NQW2K
++RsQtxs4apPCpcQ8Snlh97hSQ+aG5HgoujAuYfH3P3kaetWda10uKUqsVl6ITrbuSAdXdScMVBduW
++329czwoEeWZiUut01FikeVP2jJKVs6nbmLjYOeJgHpfE8sZ2ljQgzYDRFvNAo09gDbfWH8xM45BY
++B6z6Mrg/wQ5cexB7BZs5sAfzJeqRdaQCqnaw4FqwPbJPNIxJS4JG1a7nD6be6Be7QSzljaoXmW2G
++/KWioplbw21cY+6bdWCo/TsYo1L4DFZL3fiMVSM1xdWmSJPgeUXK4qYotgKX4QHQqEP1+95aSxUN
++Ydwu6lpVQ5/pnFT4EBeXA8XZKNIpw5kxIlCIaVnJXmwyxivgtLZ8NDqrhMRXksCSxXB+YBfMPog9
++jG3XB/O4lFbxUQ0YgxS3htWN6qhZb8UgXgsuaAxMg9HAaNQYytHr2CoCx8fYK9n+ljRQD4ZFGw++
++EJzqbn4O1TGjxxcMJkPZkki/XRtMIoWxERi9gqT3AytKa/X8xXE1FKsCalwI5Gje+TFsSwQI2lLo
++eqAHxkFBHd8vqRtfzC4Adn0/B6JVqwyOxCxoHMs96Bw7nUj1K7hJpUh20LhFPORCJXwpORoid9Dr
++7snaj0dQ8FKeVM5xLO7yoyXYNrdJiFxHkWB6mwKfl07LRHrJboxgW+6Y6xl0JZcH3iepqe2GQZ3F
++vXQrDKgx68J71ZsLJXZsxscDXghKYlGdoGyeJ9NjIRckSkIi52Iz4yrrAPZuNDrCzOCo31AIfCB/
++MwRd6mRwIQ3cElWm2kM/CDFv1ZZN4iJAZXlGM7CTo0o66mZZznar7peimYuqY3XEFlQnCN0so7Ez
++tmQohyz/rpDzQcvYN2qUH43B0gUWEcWIqcPD5wDxWKpCe9eyZUSjR9jNJo29QKPKLJgalNsOrVhx
++pAAYuMsksS2hE7Z2wOyBc8UAbscrSTLnJ1FdnsaxHIEiQ7k8bHSMWuAIQPZyjaX0dxB/OjBMQAL/
++oh9LYm4wlLPx9B7zAvJGkQuGyDLlZegGtmIo/xPETwmkIXEoL4biVLmyBPELhMag7uEBkxLWGao5
++tw7b1WtNnQyopNYVQhUJyZyc0NWrgzSIrE7dZFBnQcJlP9jXFlMDUmONTMJClNStGPLGQygPQ9Fv
++NhTur6NjB0GUvZX4dYNjgXrolPB0oRFTBHDSZu1IMhqKBi5wHCGC8rgo6RrZLQKFwpN2pFEnHpbv
++UInRiYlONGUNFdsz7grRm9lVTEoNjtbBXmE+yqyyKzd4iKzf4AT8BAYBy7ssml5HDguF8egSN+5b
++PQEyaaflXc3oKq1hoFhV0qaIfTYIvwBax0GdPKgIGRpKgnGEYO9uUP5IgGqkake0wuLvNl6EBcuT
++JakBqPnBGDeWUAuqJVS595El1OJJKRyqC1G0Nh4OKHcQ2JvfZzsD/H5QYuHZduwtO4XhfgtGIISv
++Gq74pZiJBVGqClhokOJNoYNi7QefxKAbz6E9NiQ4yuf1l2FWLUuuGiw0twkV+aFXHuJ1wI22vP7E
++w2dc3R4Cl/cEUEJW0UGtYRHYN0Y4pACJzhaWL7+OovTCAZSxqS+amOEPBB968UIR9j1wsUQ07hfS
++ERLRy66KhwJ2QgKXRBuOThaRv5ZKkLe8uWB48r3115LPiYXIk2xGWKE9ozlUjyOpcUFj5J15HFH+
++IA2TuCQELhgNoJRsVBEwz7PokTxrthCXiqKwFKyWBDlApTdmsBDsTA+970V5J9xDEKsLqMiCvifi
++ClDp05AkDYyHXl0ZKekfTqywzKNVoAV67yPlGFF8baJDrvRDIpcHyja4SbaLvuHwTXEjhUQ1lPJo
++iKQ+UHMEDgxxzxEfkN2jIa9XqBPaSBaPzNpISHUpb4yVRgiVGu1gX6Bi3wCGXqxjODEE+1LAHixA
++VHEQwi2KT7PEWjiqzGKZUA09rhQFGmZM/Bzno7DxvSUim0NLZmKY4tQTNu63RE9DqlaVr2UfPBkv
++yyPDYbBeS9D54nzsi6dN6Zbje0ciWhXKKxOrTrCMgN2V50Zgon5LrLbp1Lb0g/VuKqHArS90iRsn
++S5oLODjDamFi3irKR5hGwsajGv16gUvUcflS65UIjC6DcmqR9WVjVRYkDm+71uCbqInsifVFx3ti
++4zH9eWA9YTS6zMTFH0m0Jg8TSCTvRAbXvHJgmiAIXwz9fUE17qRAoiaEr7QSBGa0lFBeNgVXN4Zq
++rcQHG5/7BNclcuCA8drXwpGKnwpCPEfTzvdgcS3yXD7X0/YRyG4zdWwYZNWkiFBw20+9NEb1x+mg
++2QVIJEr034R6Q9JSeuybTl2MoYYr2SLFMZx7sLgWEoXXy1vvcgIpXKRy9obsrbFyAq+bJoE6kggK
++eK3f78Sh1PjBZ1CcxTmSjnuwuHD8pocKpBKg4x56VW2WKIHUk7cmRS9wpFHy/DTi+6Ka2VJ4lWHC
++XMBqXQsxuukz+fUCRynlSn6Ycvk/IS25FiwmcObjFdj+3Q9FZ15KzEs4IQ9Va7FL6oRNW7zeUOaq
++JdpaZ9IDl4k2tN187hTQlXRbBi/vi/lcBcq3eutJc1rjhd0WMJYCpVUPfe+0aDqVujdvHFSp7ynr
++SPVKlnrwdQ9lwOI0YLrlx1fHID2XDB2m2wrkIvMCbssYCi5uhaVCOFSMZheQUjm95hXM50xjO2Ad
++g11JV/yizPEz6wCcXhPnQK5wLBu0PT7VvOwXBJdLwO0vjNvzubog9xjZOzzzYrsHakjlIIdYaFnD
++AvPoHjeS79Lc2UIgSwCQocc1JbE4OjqOQYlFMSCTuNm4hxKjYh6QCpSnhsG5d6mtJtxLt0qTGwkz
++qBXIFS5pzipQXxULmhQkFa7vklSBHoGNhvqYyGuDl8jrCsSHlMgi5gBr+Hn0rNOIgwj4EMTHUn8E
++uosOCI0nh9mZ9ND0jnkHVCgS6AZJQSI53LVGtsYGbksPVPjaxgxqiWzLklQgMvhzLJGI1oV/M0Ga
++GWywYq0yb/z7XhxuLVNnQZH8KxCFkNm4B6cOS5qg1nr5a4Jaq90dNxaDaPQajLIQrOJDoqZ2AA0z
++b3xkyZAGxo5Q88zttmQix/pOngtBQdROSUQO71w+iLGHfwUAORE5pPRDQqE81oHg7MIB9T3SKGsv
++cmkcuWpAviKzMiUx9YgsEoH4e+ZQEmddBWcADrZy5Dup/G6eKZMQUfJDankQcYnvF363laLsQO5g
++v2fCJTVUIROYhEi+C8D4UCpfePdZnEieR0scQnlzgTWgtyZw3UwsZI8+schlsFVpnhfQ5868z6wY
++T4FjZrCx1IsvYP1QBLKbI86KfBjCIKKmZDCbZwXmOI+goUN5FQamrk69pea5TV3HwlgqMbfM7QJ+
++dcwxs0+e5XiZ8SS6xDpgIJhkzYDw6BLCjkSsYUO1uKDn8+Si5zstfizlNvIdm41vaaMauxjF8QYM
++1ZKPIIMhsq0Wrf7lQJI2EgQwdkeAcXHjoKbLOFA+1ELtZvP00shaQuCNTGVBQ3Gh+Bqb270qe/AJ
++l1uMblTyVDq2c5rUc1DBQCUlcdfFehQN30HJI1i94WgW0odOkj61mr0WCLyGjooHLeSI9JI1BH0i
++yma2A9tJlbxETieLHi9MG1RmlwBNpS755LBzjqgtobBXbJg2SmYXAJ23SacWHAdsfEFwiSVrSDNC
++5JByhSPV5XhQA1YppjTBuuIVoa1BSuauT8+29NCwOVW0i+Bx1VGoUieOHpqkXjD+fmt0wlJfAD7l
++B9bINpx2VtPRj2dQ3LvMkyh50auXtkyLX9rt0bsij2093QoUt7Eq4UTGB81NNnCmXaiZRgY+k0Oi
++DKxOvBGZO0uUm4w/l6fctOynpGnGi+tbzVxAaFvgWQzM0EcneVHgQLHvG/s8UUOg8ryQDXmB4kK2
++rNaEUgYcu6o5CsA7klMrOSMkQ+4QPkqq3sf6bIETLrW9fJ+qI1AYp3HElKxkEDKgnqOo+iXLBb9I
++UNgpRDYDmCIr4Pfp1SlQk7KLwyQfqhrMj4VxoXQpCcgLhdVnLCLOk9UvDkPH5pEknIamYgFPRGEe
++CmiTrBkvy04cxzQd/WlYCUCCXyffeDDPsEk2Or0tEOXVyffFx7PDHdIOAufP6tWDPHIUNoJKRcol
++ruIjjUtoCaY002Lr1f/P2Lu06rIs22F9gf7D6bgjWMdVWVWZWQY3zFRzdXWwWsZMMA==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ HNSEVjIpWLCYccVnke8TJco6C2msNdlm0Q0mlIATFYm+jYvN6lJeQmAVixJhv3WIVzMx0I35U7Ky
++ZgKgFsWAHSwOjSdlVo4nF6q2D5grOELEdsdEojEDlxBfnjJwBshoGpN9PjGR3m7McGqQ6CtfytAi
++ldepZ4UeAQuiYlbUhPD6S9IcAjbBHNeuZkQnBOw9lfKdMp+D3O1SopeEchGdTkcEe5GHPTckn0Hf
++cBNG6BNAnn4Yb02tcZQl4hOODSKKb58EdALOhsLVQaeHBIPihO0DbSBWGWwugv3cN+77iXKZBY7Z
++/zDNN0SqTpQuLEOeiE/zLaz9uAOei70KPc4nN0qMhUaUTBHox8kQyh4tdfNK8PCUnDiwHPjAI9qw
++nIIYsnJQ9GOOIgN+hYlhRFqAT/qB9VrCi8McZYdTKLrCTwwLnJ3D4s83eAYQc+4YLjrCK08wOp0c
++AgI6wZi5AliQJOkYCcrMQ9d0RED+8lYO33GpQO5vwMnUiYiuE4jHlZDA+kwiEpAks5xdUchhjmE/
++9eTYD97SRBcEE5flF3iIJ4G1uswlKrhi+9aI5ORwJ/iGI5YdAvtYj3uOdGSKlEsZQq4rl9mE4BHL
++3HHFx5bwDZH016IjQXZccntFGmUrAA1CGml/x9ntuHYOeptQTsqHqZgNwDNhfxgJpVivxGuyUmuU
++YiEmVxFFEkCiL9TmEp7hilzENCuGD2NCXXnaTaQIBCAmfcoxZfi+0Zrg2GWVQeFtxOpt+V1AQXSc
++xf2Ue5HCy0mLpOBgF4FCONG3BIwbSIiLUN1SYkR8aolh+gKJ6ChPzOYwBqWprKR4fmR4FYEOhsyQ
++1RC8NyRpK8h6DvIfWULeVa5kcKQjoqUJsSXHqJLATpguCU2HVhl8JaoYVsTaDtAGSyqYxaJDjL6i
++WEXCxQxRIYmoRIp9ziODL+9SJKppfswh6TiYdFdFu5bDsy8Wf/EQHDdcXrB+ahCn7UYxEZurzHpI
++okiAEkVlgNBBxZCDQownSjD780KOYrwWl2C7E4LH9sX3xyXnbwhHgZ4xqouSMyoQHSnWfpRQ3EI4
++ipPkpKW8wFKE5LArDCWyuQPVY1/K0AduHnR0CrKrEbhm8kSCtcIrCcwQgS8Fc/CWXDwU200RbujY
++xnbO5ngqNAV5vBDQC7NP+nhARg/BybMK4pvahAkBONEJhVFa4niUQDGD3mT7u0F3xQk/jsDGVuni
++9JKQrmzluIa5HXde+zeeKzl8iQmJrstamOCUYthL4EoZdsw5QFf6nBNKIKSS8ClQcwTaIBFvMySL
++dzL8UcTogKqZ5fePOjpr3kkOo1Ui3L2oArqsY2uBwnXxAz+NXZceRvd789rYeFsmCH9nxaJjG2mk
++LI0Wne7IBomm0sA1b/D5cTRu9kofT4wgReoCq6CEKNuQHNyTqibsdGQYw+nJxDwZZMLsCXeEJKnl
++dIk5UjoGsVs5wpbnEHwtnWIQ2AbXsZx60Q2SgUZdO1wQEX19RgWR3ZiAEUPCfXA47ghUjki4NODc
++X5oK0oR8qIAETYIL4Wo/ZAWFWRUhka+2FfMvmzKU+Kcqc78KjxM2AHUWb5Uxs8zgBmXbVVwIIZe9
++SCLs3ViYluGgo1hRyjv9FPBJwxCfwBNrFFify9IcRynJCVMvccrxeLsWuQ2JSSz7h2/0AIdvSN2s
++62H+ezOB16DQkYcNrIvQgn2xYpISCS1A3ZU5FRwKCudEY1TAuzTr5agwsQnO8nt0XSZkwxzLKQR1
++Zrr0QmOiZ2fgfSFZiPwwyPyEwpDRquSFdk7geDxH8NrPyuGwIcixI5rgIEanUNhxFTccmEYiTjR7
++szHEwrEijFxb3yMEUMxRRqNmS6oyV/aoXTKphU+RzZau6jukkfqpAg4x0SHTTRv9BhITVplt6yhF
++m0np7IqEih3T1fnptPJY43Z8P9MMlbDKLehvrmuUIF9iF2iaKS4TwdStQw1LXuUL8QKOS0yv9ISO
++B4cxCjgRY9KsMjjoW8EhJghZrqjY48fRW4gTadNUzBBlHerSoydGHEqinBQMAI6yT66ZI7AydCAu
++O7zg03SZhC4ZUrUkEHpO7I3StIQ49I32Zx4PY4f1RHOIcSk8inaajJrsm50mFiRSUPxi3+VNPpLT
++USjHHdzFnYxZIiF/Z7Hql9g5xjIjh8HQOBUmFBHSJ5XXDl+PJsayBlo4HaBh+2S4J0ikaZck2fB4
++VNrF9IHXEqK0+9wgdnVF1dyTghGGyCpD7i6UUHmQVh5wH7JzcoJgyHLBlmshwls4flyOCX7kJDIM
++sTk7RI4vL0sy5w8vEC0A/QNL7I4KjY7H6wCodRzTcnNAihyxziHQmKXdu45YvNg9DQNQXSXWKyc2
++B/WsXC/NiP3IOq2hI3yZNfxebBSNNIoKZxjHLDHAY0mFpdl7TIyniFB2TXAGsjgLWbtIkpwYyoR8
++c3n0PcFCYadP1MqU8BNKrG9C6lBxhe/NrVbMNycJWXWsaqlAia1fot9hPGPRop1U+XXlSWRfsBXX
++QCyfNjA+ZPiyvgzgVyJkuqjrU2gmJHLUR5INdYMcPpoD908ivRO7gTkAeNI7OY0szekDnymHXaJR
++sfogFcaIciiadcSSMQnC3MTcE1wmh3AbiOfVZzOU48ZRmigKXmA31HEC3u7M+S0xLIop5Ud+S4oz
++Ez42vEk+ETlZJmrh1vXYRQTVQsJGkdtPTqRwM+VmA10ghw52iEgoWqHiF7riRYWJZKZXHNFoqZty
++vPZahqJrUhQLNJ14Mgo0o9K+fMjBrtgbLQhtiPyY+YXQ5yRKSULJKBv7AmdIxL0xP4nop9ZAsW8P
++5FggJIDfwwgOHgHOt6Bw8oQiZbi1QjdGLm1ukDGdsekTgS58YzoLfYk6CYw6xnHxEAINXIK2+Y1z
++lMGuAhMecUpglJQcSwQDgtIsE2liAn7kYfD1cr2cUtPE3B3Kp2MqedzBZaFl2UQfAHQYj2QCacXR
++IW/9QCDv0UxHAWo4iK5l4Ddu/5E5IGJkUECRQeYKD8+kHgUFuWTEypx6yaneJRFnnQ0ZKAFyLMt0
++jDT3Pjso0v0qslB7FMfppRzAYN0ix0dmgLNeK1AmvgwmXoqxMwj7CRacw4XuVgEjj+4kIKQBGmid
++adiXC1yuCHoXVdfY5WAHgUJwkYiF5yPeMlm6KFFzYk7sy7mIHS0g2tXxBNmI6Bow0Q8Dez5iUCaN
++barwRcS5CJWLHKlcTlsyYg1HXXGnok3f3CMb3zwYF4FrMzZ9nchRfRgkFkc8Wui9YeYUnH8CHnXr
++WjhJIp4kotvl16NiL51ccoPQUDjzlUpZfo6XEhMEErKoPLpnp8SAKWU40XZrdOUwh66AxrPQZXBl
++PFMIbnkgITLoLSDcP57nsr9gEtiw5YhtztfEmQhqyKGbAPQO8+0M1zMQImQMQRZcV5wPEVqJElOP
++RJyBsq1CFxPzGnh3uuZxAjrGREbKgRGieYbOopbXK3gTJ4JaIt47sYlqRFdXDpZwTTAazFWbpJER
++iDGHl37smmjQMEVydwlDABMzeP7AuiTenRkAX5i05GqNBC6xBFEkfLER2LwaAV/2BLQ7WV65in24
++OSd3uqHNrOAcLOQxGaO2wdBj6DZYZuXw0SYk750SK4d0lSTM2i8xxwRKEGApJpIXTBIaWkYqwziU
++WK7asSe0QRJTJZWJuWDDdOhZPY0x7sVpGTJVQ8HBzkvrYz3sSsSHY97nkQ8+Fu1IQ7xQAjWdJLBf
++h/jebJwl5zUMZ/Ll9kkcMhORqXiLZxmFwWfQF5uWeGLAeknPnELFkTdkldaXAGorFmJOBNgqS3P0
++LuVSDnp58uOJ0Ie6zDuG2OxYRISmATNu4M5BxicD/QaJclcRGcrDGAWCy4mOBe0dG8Qr5LpnbAKf
+++DEx0ZWCPQmLg1saO3wCfDWdhK27rJwhQ2KcyNUNxzIAbyo78vhkXrC8Y/UeIaZyvqYAJjG+PmDa
++aXqbz67rLoWkFKf1QG0ScxjrFysXStA7o55BWmRib21yZsxx2eE44kMBlitOy6gvcDVYKIKp0V5O
++jmgCEJ3JuJgRmMkltEOWE1DRhhLa7mR435WJWEq5SpGKNvLyCnb59oHhr42TLuAhQ7pHuJYtkAw2
++CmO2+YTsFRmFpOaSPPTDzKBIXExsieaQwvbSW0CYMIlHxuckiy8C84tnHtNIl6SzN+X3RKsSz3Xy
++ZkccpUTWdc4aKihXAaiDnkEYgzIrnY7hQr5r7aJ4A045oc2WA0xQPl8fiAsrkNTx5XZExgKet+Rn
++rfyMyxR2ayQxSOL/HsHyE4dZQdSAVcFy0rOcfpDUl26Dk9Dgd+tEiVVRRPlOVfMCJbWILadzRDIM
++eHkzYXnMTLEsN3hXBP8EajCela3NQVxz4jRME+y4LvccXkjR2LF3qYopJqs4HWq5SYkN5TkkxgnL
++P58Q2jCR7u7xHskSEKAmO0Zc+p4hQLWYkpnKJxCFAhKVkykD93sacI/jMhEK1OfERNqXmUsVi/tU
++0hvWVgzecixql8iwA+ISZTZcZbQZh6gtCi5mSyDwmEEOwzFBIuE4QCJrfJDoCyCAbZgsUMM8d3Eg
++WdYN5l+jH4FNA2wC5BHLghLjRMLrJQYickxMsyJ2V9OKgMwvePJi1wxURF1UTKIAcVdbYMSmPlVj
++bEWcce7EgP4I3wjUlrGBJwrIIhKl98ygGVAwAXDyZiL6wZzF6Zl4IyW3XNCJzEwB7iV0rI4SCp6k
++xIgcRKKEAnFL0zII5pjqpyQ6hR0AgR+c6SKgDEIIAz7OxAq5hlcGKGOx9YE8TkyekChwy4mhcERq
++cM+32+grxTlZ/LGYqVMgx2WlGDwIaeaBRIs5IiqkemEiRsKblWTQqiLXjnZEpzJsJSyiIppQHG4S
++Zy8PMCcUSM3IInwF9u9ATCqCnxPilT6HRSF6WcHZWuDSFMk8E48tLJkYJcwRfBoBost5PEU24ZzY
++ypFE3yuUaBdcapdR8PG04KhQPaIoc2jHbHKsRpoyyxKXk0MBQZgo+I14JdvLrlHC1iqcDyVpDooJ
++yrEdOyAAKFEcf+r5RpKyKySGJJkoytjlyYZSwz5TBx5Pf0M07JOZHhOFOBziU+KApyFaoqyzI0Ya
++6RxfoN0p6FYAvfCio+BIF2cGpMAcIIN3TmIUcUehE649qFZ4kWFStYehUFoGeWZ7Fo6Yw82IotoJ
++7Eg7ZjgCtB9HCaEOexIj1ZUr0eGKQH0VQ3MaIzvHotKmydSfKg1fjm38XnTaoeNINhgIkeFQ45e9
++ANzdSVuHwiKT6HoSOeNlvKTsHD/jzwIIwhG7Bxh3q1D8WTDomrRqcDFxxKkf0ePsGrLh3EkjZSCC
++NZZogcRA+3Jgv8rlQgok8hg8pmEYStIuJAY39KGNJDqTjeKKL/JacDSqUNBkKdeZpZXpayMBEvRi
++coxQ4jRAkIMOD28anUk5CJCDObh8ZddMONGAIAL0DFUY3OqjTOB1SrscqEx0NVp0KA==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 3mrx18Q1/at4Tiw4+dJz+6qLiG287OGXXn1h9xuv/va2S04/qtsTQ8Dg0YOXrICoy4uLGTaROtsv
++vOS4CBaEGSff89pf3nvlmRefffiXp/UDouprDHr1l82FUe0Y3LqKkdGrTr/sBxEtiXVd8fQfn739
++wpvv23leN37ivymsftPiDhTCjsHB1SBk/wtafdHFx02LKOO4ux6/6chY5tzLGXkDgLeYPnfdKqpz
++ZxEjVf8TTKC1P7ri7I0RRWy7/tYdHbFp2354HAHNRo+KjZ+3ZVt+GUqalsgd1ixm0xhAck477rIr
++T662/M467Zc/zYt/tx757X5EzIwbHWstnnZ6gQCo8/q7Raf+l0mSu/bM6y79VpXhteeSX12AfZQ4
++9WSIn/wNe2xs8ckX/YSGb0p2KwDHDplB0emnnnD1zT89uoLSYfYPb7n19JnwXxvOPO9IsRBYU74e
++6zr9qkuhZjEr972ToNxJs3kwN5x7y+3np8qLyF//yK3b8b96L7r2R2ti1qLpYhS+87Prvg+B9Jed
++fhkK5KgFi0m+ph177V03n1EWY3/F5b996W4KObv1upsvOjpx+OEdQogK5/3yypPFf6SvuO1y/Gbb
+++kW0fMz9/i33/OL40MjOPeuJd95/BCLjzi1etfPmHdkjT/suIF9nHnPFTT8/rSt2wl1P3IRgoPa+
++dQwsSl1+z10XhtCxg3f/ec+eZ38MqNTbH33gst5Y4syLvw9Q6Lnfvu43d1xz7j2vvvUIRo7uzGxk
++iHDLidff96tTFNBw5TUAMProqfN/fMvTr72885S22Iqzbr757B7xwQXn3vfMH55+/W97/nRbMuZ3
++9edWyPWt44Jf//oiGfR68YVPI4bg4zdee3fPnt1Xi76fcdqdu+67GJq//fbfv/Dc8+/t2fP6zd/5
++7olHbghALyfc/dDVjDxp/cHDYaDHiwi3K93x8u6HdohlZsu199973YWPiTJ233ftDzMhpPOpDz11
++AwfrTv3qjTB24dUdkJi84Y2PXv+V+EjqwuvOXB379qPv73n3qeuORsmJzUkVtx///ftffv5GDnx/
++1CNl+KZ3bwYcSPuVu/d8+IBYwvrO/qFYCzsv//3br917OgjC1I1HXHzLvY8+9cKf33vu5yRdsy99
++aU/Z75kLALT0vef37PnDmbHFp551JHR77ldPPXoxABunHH3VfS++/SFgzN566CdEJJC8qQJ+8/5D
++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
++K2++cidRQ7f+5OGnrsZIR9uvvVry7T4hS0B28n9T87B4f8iM88GjHOvlpCfefPaGozpjG695/OGL
++aDCPU+FJfnei+PNghXvK3RO2RT7LHNinPfu3v775yC2X7Xz5vT/+hshvz1ChL577kfhzapucVj23
++hi2vb12LNpfOX4LJ+2/vvwV99OoVIBAbb1VxSd7dmYrNSK6Ta9WcS8IRPj568DhIPP7RkE34gwe/
++LXr06lC2N28//QenZKfLZhz3eNiC/MdbRNf33FQWmurdh8/98R2vhE1Vbz1+09lpOY1j6VvKsr9x
++x9nn7KwIcPPh669VmAB37/yOQmnFZp+5q8wq+/7rrw1t7Xvxmt5ApGLLrxp2rJM/3nVSa6iE2OA9
++9Qzh1b+/vvGb75ebyebveKhBlmr8vfPsLadW2hkXn/toowboj95+7p6L8tWxI5b98Pbn/jx0cKC/
++vvfiw7eePzC/6n0YkOJFd+7a/W4dbIGQrN1P/s/Fx22eF/U+ymbmW5ff9sCul/78QWQUj4///NJv
++rjghXZfIWBTSO3jiFeUhPJ548rd/2P3mGy/99sHbLxxozExZFr8DAngcc8olP7/uog==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ fyF0km0geymXbzxzRpyugm6okVssH6meqpo3kD9c8wayBzVvIHN5zavlADKjytqdKNQVd8gICoBY
++NhKlIcQU8ubFvpHObsoN+fFCuDnRebA1MlOzYddsdk9qEyg34VN/9IKNuTfnukvgkDZ0Ttq4YPse
++qqpF5YFUJ1P5XhOVLVnoaS6lM4GeHTWrIFMxmczWnaKUKZ9JKk0ietWjfIlMqnmw0Yx99cQQsuUK
++vaq0uplkSVHbAOTJ54rpIYQOsonBz6v4fkK1cWtlzBUglN1QcpzMFJqVEtudSSS3DJFZ7qz5XKne
++XIKsobUwWu6EcA6lU0CW7nSpP5Gv2lBrZcemJIr0ViN5c0MIvcrYzXftdXP2pIrp3uyQ/Z7PF5rx
++vFxXdiBXn1jjiqm6iyfm29pgvrL70DrFDb3AiFyh4fM0o9mIXLZEvnQ/kBOW7Rq25zR79fOHdw2v
++2aqfOdgzhswa2jE8S69di7Kusn27dvvCvRW1jkEesXInBjJ1tyqRq4EDRLGU4Wz5fE+dj0I+/miQ
++sXaRIg9M2Uyk1agqc4FCipddHdetAb2gDh9VvqdRXxLbNjjqirkUuhCZqu7wwGe0ReaOh86/Qx3g
++ak1e+F6iNNRiUBBqZaGYgvIKdRoPWYtb0nmxrGa3DLkQgjLB7o4RrZyf654nNI1wG4OrOZFrdmdX
++fHHlZUTZdRpnAv9qCA5MMWvh8rP+hRq/NkeGRoXX6Iqt5gFHvUQ3R5NX0DXPrJrXPFx9vrVZFn3B
++U56pq+bVDuVrhUudVr7UWVp2qdPoFR0UU+9eTg9faGZzwV1QPJ3F+yTY0CMv8SIEcvyaeZnMACqe
++oqvyez03jAg5hNZ0trVvqHHnUjO/vCMP1QwuykVFWhN5ui5Pp+odiWRBc6AHxbRa1jfQ351NpDP1
++9lD50op0aqv4d3v9vVnmbheitjLVDS81UCGMcQ0BqAmRtiCd7QnLfqPvVU0Bw4jS7mq8PQ+2opbu
++3GDowFj/3dBVWKjK9Ye8/DW+pJVv2kN+cpno/q7g7rfuKBcS2/eiT8tfG2aXlr88rB6FV4ffoRVv
++Dac/4dVhdOfCXDaX7AMAc2SnRt881Xu5qmutuuMCRdTpWquhr0d3cP2pSW+0FOopSjL3skK6fyHc
++YDSQV+wCjWZF0Z9V/7ZArZKiY+bVvwQIFlRUgaAWywKzb63TfmUbV6aGuv2RbyzGg0C7GADRi1tz
++hS0dgb47vBdnDXlBVfPVpXtd22X1L3/ke7PgxqRjiFurssxLhzr4lOUeTjXK+qmeeFOl09l6x2yZ
++F60v81pb2aqidtq6Mz+w8KCBp4EqKbWxkW2W9KFlIUNv41pVnQLFc1KwQqpMjavrWm8uTGyrp8k2
++VEQ6W1urbaQA0nRnVd7oN/w+aK2stJLOuhdlsIbcNZTpY4j3Q1p4/SWNdMSWZCHXnSh1JLanCiHU
++hsjCLVPKatXpxa80yeUTWXVrL7N1rZgDMk3SXaq+M+TnYFWN+Ih4ipOJDiRSvoKHoo7JdMgwYYTe
++yyZzISyAFTxBd6rQOq7OA+IZhhpD624+kYzKsCwlRjk4aYYfdfZuikhdlagCskAdMulkULmpEQeL
++UCSlCqclGELyZoKxlg8h7qN4EE6KpnyYON1pGjOzOGHV6LYF85Ob2icsMVpmHj5r/XhrxuKN092V
++ptYzNTVlbBb/nDqvmNvUvrFj4OD2URPXaBVpE2es6J6sGZmS3bJ0WfuymVPy63znMKf/MPGZaU0b
++23NYmvjg1GJL18Dy8S3Z7t4ivzT98P6WBStnH1QoTD+0u2VSftH8mQv84nRv7rSVze25w6wVswtr
++D9PaDmtfvaz90JZDk1jexOmH5sdaRXPMkokz+kqm+EyjNRpGdRLZOZkVm7tnbVy4pKVlUlZfJz4z
++dYa+wms7qGdgdlvr3LXroiozPT9hWl4UPrep1Rhz6Ma25oGZy1vctRtWO6vzemf7uCWrMvytZMu4
++tk35CXrLsvmlgSBNfIaSF6yaUBIFzR9oa17cN61QsNrSmuGMzs9ccXDXGMqva52J9gmlcYnZk9Yt
++mjzLmWSM5oI25mYWClOLy0TvTZqn6U2bp2DtqJ9mLW0FB8qi115aYazPbRnnLEkdMtEe1TphsTVt
++yZRlEw9d6vQV1mnFac1mh29MnD5n1DiraBQXiuqs8JonF705lnf41M3izwkTtJ5xq9vKv7q2sG7h
++2iX4VZC08g+Ll9319pR565sjv7p+zKKOml910gvmjI36qvhMoTBt1PhCUR9biGpu0evU11qjjSmH
++RH21ePCkhU01vmr3jU8cvHo2flV8pqq51oS1E6cZvUsivzq6fb110PJ8piPqq1r7rAUzo74qPiM+
++7Bw0JluYcGh0J1ur12vtmxZ1RX91zqhp4/T5G5ZFfnXOXGMZfhVXgepONg6bvmwjflU/pKV7dvnQ
++riysHZjeAV+dWj2u41ebazL6BPHVpknBV+EzJFAd2ixubufBB1d81bb7N+RrfXVDYV1fdlmNr85M
++OG77GF18puLDLFAzNi6t9dW5Y8zxU9dGf3XaqHXFg/pSSyu+CqsAfXhJ64Tph4/p74j66sSpmSnT
++a3zV7jtkxmEzF0d/1Vq9Wmv3tUUgaVHNHd3e645Z2m8sjvqq1r5uXXuNrzoHjd2SXdha8VX4jPxw
++QpszaeOK6K/O0VoOTo13V0f2cOmgSTP4q6ubxlf08IxF1qFrab8RH569dkt7WXMPm6Z1uE06fHVa
++1VfnpnLO0kSTIb6qNVW2tWPNYYmKr9JnuLnulp729bW+2qYtPGSdH/3VeYdPmbm5sGhp5Fe7ph4M
+++02N5joHLUh1mVqNr65p0ro2TBgd/dUFc1OL1hw2YXzwVdjWgg+vODjbW/OrXX1LNnbX+uocbcWC
++/LTor3aYY8VnlrfPnHZoZHNX5OePrvnVFRvmjC7V+upibeWMBW3BV9UmTR9eOH32hvVL1q2L/Oq6
++xVvm1fzq5tV2T3uNr66FpVNbV8w0RTd30eZ8/2LfMyO/umFeU7bmVwtjuyaOCr6K21p41i7XZqf7
++50d+1VvUNHrUzHVNs8VXzebKyTOwwd3AX+02J1RMHvGZCYd1JA7BDxsHTx8/t7y5HdrGQ6a0wFen
++V3xVlLv5cLkHOJMrv1rMjTuUv1qaMRHGpry5o9Ym1kygr85arc8rXxcnFYrLp4+Cr86sXp7mNcm2
++TtMrvgqdNnXuaIc+PENf0FSxLk7KW4to5zHHTGldUP7VMYVCojsLX51V2dZCSyonZXgWSFrl9m5v
++nsI7z4wpS5orOnl0LrVxGe2yqcQGp7xOc5ePW5+bEvWUNml77uolev+KWq/3aXM3jh2o+VQsxG3j
++ajwVgzBuYutYuXRqqc0ptyKD4+kbZM2LW7zKp9m+0atqPnU7501ZGzytFgHPOGTpxpqve32J9QfX
++fNpijDssGfVUajYdE7MzjJqvd3Qv3jS15tPFo5Pdc2s89eaOmztteVF12qaDD/crXl8+MS011036
++6CmVT7vnd2VrPl3RNnFLIXha3Wkrx3ZPHlXz9ZVr26YcWvPpxrHr3TFRT2WnbS515ufWfH3LCmPW
++kppP+7e0T19f66norCVT7aDTqjPMN6zpq2o+TWa7uzpqPR03aty8tYfU6bRxs1sWdv/f2r6zK5Wm
++WfT7sxb/YWMECU4OYCCjiAqKAmZExACihHvu+XJ/+63qnmEGmGEaxPOus5+9iwnV1ZVDT8v19oJw
++uMa7/Zr0CxvBmDvR5CMuu79jLjwWiE9Jd6hSHhwav6aje1O/Vp7yO0n7r1L4AlVLmYZ76chOGr3O
++4ffDfbr9VsHsYHL/QD/aQP6qBoyY+rAZc4kMB7XE9evVZbJS2awSbZWsnL5I2Ub/djOU6g3OLBi8
++BsA320TpxXjNf0YUm3/nJM77w5mLqj98/XDpDz++VPyB2+AI/1YCRvxM+yMnj/Js3FhvJ8vipQZo
++p0MQwfY+lQ1VfyUB+47gN2PPey33OLxrJOLf/FqmEFqXzcVtdZO9zANw67q+Jmzvlw4yrZ3sJhFA
++DHduTUI6X0f3RjvCeEyffym57iCWvq17XgeB2vPGxad1HSZJ3C7d2dzz9zwfqawzrwaiNfUieM/w
++yI0vMf7IcN3m+ftpg2U1yjoa+ibDI7ePn6Nt87r1bi79WtB2TwstFf65s55UbzqiEUkHwVy+7lFu
++4QZCJ1lJfuW4giztUObBJAnE1LJg2WJlrS6dZm+aP6+77/vPQeVGKR4Z0bW61R+b5HSy93MVJMpm
++dluCgcPbznwEMeK+Z8FuLdeITqQfXBHkcid7pSkEHXdEOss8OWFHVaeFYP2RCcH8hsKCXb68fmOP
++CNwQ1I4mWMaVfPWL+dghp9H9PTu5ZkEwm73KjcmXSV6GPzfgAeX67vt6LDzxhtDeDKfFbMjw2/JD
++5rWSERFpCRe3Z62VD1/xEeut/ZGY5hjeihHB5IuJ57zkW0Ox3jCLb/0mhOGEUeIt/SY9mnsDXujB
++dybbLFUUMwnZHmWb9VaNwky1fpI5ftkHByo36qjx8nkJM5HC+NcL/BvE6p/6MaAd/sylD2OXZOvt
++gccgdHCQ3QZ8L3cQyyhZ+MF34GVgpHUmc5J0re3NTvJqfR89BW4tednx93NZ7WLXeOhZ8yd0UNrq
++4WvQvCnDAJ837tx4yVCXGnBL7b61Mpv0D2CGKjytpBjxGLxwvC1kIRnMRuQmF5Kxpx/IQjZtf+Cr
++Y08/pZjN2k4g+LMQdlQ85yL4LB45IeiA3Y4rdmQ1BoIDFgQJoxLeNB5Z0NwWPLKeN2YB1zXDHxd0
++wTTR47BgiL6K8xdMiMa8I9trS/KLqaFndiRf6iIvt1Gg1qkCUgrEw73WDvT8VQlCq61N8oewfcgd
++IybH40eVTS1YUuDi2wzuDURQ14ybzMCCPX4n9ZHjeF3+SIiJG/TstgJWlqPCvcDWbm6af0g7hmSS
++3IIpmdSfe+oPnmGr4hFWGsJrmMQuf/fzGxraXHWDjOhD3/xaUCwaCqkbvUBynRNkXIiGDtrtwkm7
++WeJZD39PU5r7fkgvp92yiE7eoolppJ3Jkj/ZwldfOLJA9u58OLVf8veuXpraL6LsCQu46PuJR177
++GR5p/NGoZZBER+4s8JAVN+InxYn9Wt923K9WKbpl7I0D0Q5j5dMVES0TYtxNrK1R5eisJh6ymFGo
++TpncxXGC1yBaUVa0PHCCwLbuhJOT9fQiFeeFUy+0b7kVRCkYclOYg2A6ejuXaFuWf2IXY5LwtFVx
++HST5co6f8izMuAHeYkz3xlGSc04Ol8PuWy7XLXmkUZybeB6aNfLIw0D2hImhbEbnVHdWmLBgqqbH
++0kc9mykBDGjOPuEEuW1s0Vg7FeYTksjNBGdYq4fbh/nx6r+th2uVre3TfOXu44XjU3ftTPTiKmy1
++D5BXw6Ou+pZ6Mq2nk5Ga7+FOPLI2mG/0kAXs/Ojtf31qw8X9OXjN3EeOVuMiWmbtUw==\r
++ ]]>\r
++ <![CDATA[\r
++ 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
++3Jt1uH3AOFm83Me9p57nmz191DMoY/m492KTxWwf9/bmF2M1zB/3Zh6lnvyy95y+TlYWdPy4N0Nf
++528/7u1AQ+d0N/PHvVlpiKthO/2TVVB6Tp8Z8jkN+zHTcCbL4nmMgUdwPG9yfNVlIpfJcYZE33Sv
+++jKT4wxj49O96kt/8mT+2PhCmVuXyfGliLaa04CnxsZ/VV41JsdX0c7DMDnOgBPdm99NjjOMjbsS
++bckcl8vYuM/8CPcqD4CYHRv3uXzQaZHJcfZOyF9NjjNk4NzLROyT4wxj4zbxXHpynEHjua+GfXKc
++/XPvv5ocd9jI6bHxOZ7NAo/0nKR0NGsLTo7bmNdtbHze3rBOji+yN7+YHHck5GShYjV74+kY+xY8
++fdRpcnwFH69nmRxn8EB81ueplp4cZxgbnyhF/HYO331sfDJaW25ynIGarv3QC0yOM4yNL15enZ0c
++Z5iAduwdXHBynGFs3Odxth3L5DjD2PhUO89Sk+PLE23BiU7PsXFPuWEYh2Yw3FOR9FKT4ww4Wa29
++y0+Oz+Lk1Kv+68lx1sH/X06Oe4+NT3R343Jb092JzGt1Oixo/MFxrHjM/eY4+yD9vA==\r
++ ]]>\r
++ <![CDATA[\r
++ D47PNvX9aqTdTUf5pia9WBFc8IPjng3+q/nguM1IO39zfOkdmfjguI/5QMBffXDc0bmdN+HN5OjM
++LNjnfH6a9c3xX0/Jk/FumhdYIhO42AfHrYrHUlPybO7NAmc/vM3M6DEftQJOkr1GcPJ30+w+lwNo
++VzzNzpK2W8E0+7RO+6Np9jlEW+U0u28FhzUyTLP7WA9r/N00+0RH199Ns/tYPuLw+2l2338ezUyr
++mWZ3aE76i2l233jYz3EIelXT7D5rgFlllLhlptl9y37Zb7Fpdg+irWqanfRDLz/BxTrNPlPF/Ztp
++9tle9T+ZZmcejPndNPtkl+qfTbPP7VJd3TS7b6FTFJeeZnezniueZmdmgd9Ns08lU/5qmn228/5P
++ptlXwWkM0+yTabs/m2af5LQ/m2b3/cc+3vCLaXbnJouVT7P7yCGnAmuddtlpdsx1znwtfvXT7OxN
++5L+aZrczNPuM3MLT7EZ20M0TWtU0u+FyiKuinMuMnOP8zeqn2V2yHKueZl8hp80Wxh1OUVxwRm7B
++afapLMdfTbP7pk8c+5tpdp/7AbSrnGb3jUewtpmPkFtimt33m9N52KfZiRbw+kr47z0Qn/m5d4aR
++ml9MsztnB1c+ze7BabPT7IuOnk8eaeT4qYvVTbP78MvlTh3aq51m99Evyf6+NWz+NPuMsvmbaXbS
++/eCRs1jBNLulbPg11k+3LjHN7lvyVKsFp9nnJVNWOM2Orvp4oP1PptmJpZ70bP5smt1nffxkgS8r
++LzzNzlJYWcE0u1MY9QfT7JQFXMecVzXN7rONY7NmupeYZvfwBVY1zb5YwL70NPtsdvBPptlJc5I5
++0P530+zYL+Bw8OWqp9lxNeOB9r+bZncurKx8mt1WWGHORC4xzU57B936nVY2zW5pgXRU/btpdq8G
++/xVNs/sWOj9t6Wl2n8v5afOn2WdJNWeaHcfWffjl8r+aXLfG1lEL/NnkunUdIdpfTa5b18Fr/m5y
++3WM1q5pct66D1/zd5Lo1ATzuHfyLyXVrbN02rrD6yXULO9/EZ6tXPLnOOPj/28n16cH/P5pc9x78
++X8nkujVAjhHBn02uW2PrY3vzF5PrhoXotLGE93eT65bHaIZRfzK57tp5v9rJ9WnP5o8m12cyUH8z
++ub7CDwjOm1xfZm5ticn1+Z94XdnkujW2vkwHMfPkurXgmXzaKifXnZrI/2By3bmJfOWT61ZN3GvG
++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\r
++ ]]>\r
++ <![CDATA[\r
++ WOysHX+PvT9or/ADjzrNkEdAIdN6793mN/N3H9nnSla2ngY6LXWl1Brf12SnkS0vM61aUBz/8yn1
++Kez7TUtytI0n1bykOtGLEERJ90Hqqme3gOOlbC7QOrxP9t7Od4wYzfrh5eM222jI+oF+LPQoXU+P
++rj8T/XwXnIrgQzkTvWgK5NfJiCCNuvoeV9N+qzyC453cd3BzY7aEOqipNdCuVxuJeK9bT50PG4N4
++K7b5RWO040HvNfdUHG1bXQcWzDc+evLgp0sO1wGXUt2O3xS/DvKd69pd8kh8KyfD31wipCuHd4nd
++4V4hsTv4PgSX+rSQGTVK5+SSzGHosgKwn2u4ZCdDPDD1OrJ2mns63VLHr+G/k1EisGNpRSsnjLLN
++m31iLi/ArO31UVDfcUeOwT8QRZLvQNmvEMFT481aZOq6bGhHQR9a2f94Ps4+RxLHhv482q0kz7nv
++U2Q8ClNGXfEZWOCnQjwWcroY6INamni9IPFSALTrT5N4IHuRp1zPOoVM03u7+Jrk5fB7lDy5CWqE
++HwmYwi6+Pu+yz1s7j0f7d2KVOs3nP8Fm6ny0HUDFdpR5fVj7PFq/yEdB6d9V8Vyjn1yg8BEAwvQ4
++41Gjski77dZBkrnwLg8ccABP0wXQhu11UOvbBdjuny1wb+qB5EXneyfb/PzRwTFKRvBd78RmgXiE
++b8AaJNYI05DTkfaD1dA7IQxZsM848Bw/GRUlOXI+/xDF0ZvsWi6bCarWpY4JDr7yHgCcuDfwmNbe
++UpFYZoNqzfEfEEG2sF8AnnGxliyftT6SUnvUnOQDPNpA62UKO7cb8IzWt80dbKbAkOMW6NLj7cVe
+++CZzl8uElZDNoh5e7FVzga37d/QFni9PRtlQMYrJ4NRm5iT1JObuXjbahAUQxoNSiA/BVT73651c
++8y7eugq+p5o/a31Dg2ysDXLB0nssdKBeH6WfPlM7mdbT6Cb3OHzrJGK5zQbRAsZva6Bn7g+oYrlR
++2nfgp53YfBwIlBQ1l+mEqWlEYU8pw5Phfu6xs+tPxLLxUlKPn0TMHQ73wCFpj3LJLjklfnyC0xmY
++98f1RGwQ6U3WexYMN+yn/EU2EoNgjRyhd1K4eUrzV91Bzr9zGbF+gx9e28AHsppSwnwNH1lIffKN
++ZiZ3d9rOht4eblAyn0jiKv3+oeyCZ1UdqX3x6D1VvOnVqNEV428bxFV/PZMSsbNPPXVe+n4H1ye2
++pX/0/bcGf1E998qlOt3vCJFpmzN+02xx/f7+Ll6yDu7N6wlP5MB6FIl0ML7ZknvWsV91sIYXa7lg
++vQTeUTpyQDxRZIYkRv4RDGg4C/PZF/ZDVlZsP9CJvwNJ28jQiZ/keiKxF355IceZkXzD+o8yOrV5
++nbMvLNkOFkOyONGEHuiV3jg0zn6Ys1z/1o1QYFzruutafeT8NLLc3o7TcmfXqqz7N1MbmblrLU+t
++1YUF6ELE49uuPb54aZeniMvnanl+nL1KxYTn3XcM8hoYbnwQy0cUBbzG/O35ZMo0kgvibf/mR7ZZ
++fxJSncJuFyLJAxnTlyn8zkIx9xTrSbmArgSzkVDv24rIdt/DMZTRGz1RLW+uEZ3mcPvDaxa0UOVE
++jb2nM29EEaN/EEDFGo6/hvs36Zfr6ikJk/GHMEZ6OgQeeSDkM7eReX0ti+PYN0giguhxOM4dvvrh
++qt0Hy5Tr59ft89zDXY8aqdgZ13lURhdiNf2mHL/Ag0oyyajgoZLgr3/fPiTPi0c3GAeUc09CUqac
++thfvXpCi19H5KJMfqq2UnIlc2y6IN89PwVKVemCp9Aao6eaAokN8htETbzvP0I4TGNgpnEiWY4zW
++bR9ssTtamcHlHJw6V2euOGHOxh2t0lbXhVT0vMwzV5wmD2Q8I0HhWC/D7h9lQ2e9CoRCZzvJUvey
++nUs3L9KYPbpB2RPS7/upkONbL7rCg5l9zgwyhdDOekqqCimMVjnicgy+LoG1dkcThE+IcEFwBEan
++UJt9a/DOJoD2kPG9TOmaS2aa1gpR2ViEp6Q9btRm3xrjnek6PPhxZ8HxXuNqHLdbaJct0lp0xU9E
++F13oSlboTFfff/Twzp1EdadB0AKJCz9MoYUns97R7S7vxO+cmMwJJ3CXPk8JToShZ9B6mLfdBjFc
++ccLjRu+ncELVyYDWYWV45kYqFpxQdS6CFgNOWFkNztUC3sppSc00Xwtg05WDFLCJABG8Mw68/twd
++rsZJJZqS2aau78Rm1F0k875hPHdW3OlqQPbmSTweQKsfIAs0Hd5as1jAbYft59zaFNEhnnBUWFwK
++XUVwggWWlEKsT0bmaxwMCv/CwEzxFbxmgrXeRsuz1r7gYrXuvsdGepnnumnt0uPP1EMnlc3S+LYG
++rshyuZRyTloUXZ47WMu1OZfn9vwLEQGTkFP4jkV3ZXL71KauurPoDtbyR6l5clv/cnlu83HqoROr
++ASp9zNUH9Xs3PXPvohQvv+wjWBPCVpT2nTSDeHhVLDpQ5MFl++o9NwcqXAzFHd6QEFJ1/tjhDa1x
++ifoj+7z7ioWS8gNxx+kdmOlPfZ5GhjR5f1fNNtcVI6t+/qAcGNUNGvGKWxjJXhl/K7x+Ygrngg99
++qtscf5Ls5muH+89J7qDQNTO8AKvv+Jvpt9sUrXSgZ3NSrXawQvRj1qyCCk3NjJNKQIIOplrWDzKv
++lTIWh2520q/7byUM9mnif+9ZiX+lPgMXr/HWtlLC/brFOwoQzRx90WRKOYQQbVxquoPYL7BuZiKD
++P+Pg6QNUYpajpSPSqEGrbLn6Ay078Cefw1yCK1wBJaI3xj+3M1XidWJ9jNYPEJzMf0qThahjrIcI
++ycr1VQi47z5kj3kgItnLdw7q2efeUSRZeom/2MpfYvBrHSK9KwwKM8edq6upRKpVWzITxOEBBmWb
++5OGJvUi1lfosfvRJhnGyONRIXm3tHcCGX59bT7FXozpWDOxY5RKO0t+US07ql1/mdg8/aK3m5PBH
++sipJuKXv6feHR4HAqBa4icO27ATHJakdWDi3g8wQsJXaCh/rP2Q1alXca9jfT0q+twMp9bmdz5mx
++f2DTWibx09IH98ZA2fhO/qTeBopsdrAGptCg8P2h8AWc1lew+LemfyazQLmgOK7F1vwggif9MXWG
++tCrbf28GidxQfKtaosYFo+Y/t95zgRMOd046BdlrbFGOeNkKn+R2hAPB3MgbDYPz99zT9sk9iOL+
++OqmzYCY0Ywm+ketMQJhe6yYrp9kTWyrJSCNv6nhJHGD+j2T5DJwELB1ZFBmXpHQUhiKtRmGkZ/1A
++5eaklIh3D9K2OtK9mO3QBJ5ZZSL5rLpZg1L6icv0yQW4JsFjUhrERKqGZYxb85LUR1Jr3tQyu7Wy
++Sgsr+/dWgQu2KvOaiN8lCw5oqVh+2k9+PTeeqNzgSUB724NWOxtYu25ncpuvhckKVUGpdoNItGTv
+++/s5JY1S5ZkqV/jnLXc4uLsOHazvreNNR0D90IayznPV3dPLT3RfDzfAbdq5pVwiPB0fgMo6HNgK
++op3NCvoCtgrRZIEHvLngK3hdOezVWdcwl90bV56uj9Yv9uPIEafANNtDkrWgaeHpTtTg3rfZ2juu
++35z/yVsn2q6tTjWO3y68ZI4bn6XZmlmwoJV1LQ8qsVUhVXfjDlLg68vFVCQej5E6AKiMzVG62Bui
++9URUv01pEUbpt9FFBescOVOdEVj3I1lJX72ShdgL2FjHK90W7rKP3y8fwJFrsvkoUmLiM9mNyFuV
++uIORwDBZinQqRlcB/rN8dnmdywRfzmlHwGfrHh5U5BupzufxpdklAOw+DERPZ9sHjB+U9R//Zf57
++Y4+cQfwdaK0haYtqvHl1QewY6S4h9DULUYa1tUxtrP2VKqdAZ6+lijfl5IS9PeSwRB9FK/dFlIeh
++BfZSnTs9RvCYqvzEXzv5di7RTtxRUSAbyaee32auI2UffXBIPp5Ar8MvHiR+Ev09moQsaMbt+rs/
++u/21VQa0+NvpBpSD/EmAlEISsVrgPSV8RI2CO70uHO3SYku6eRmbKsCQ17RGDUAh2TJ8klq9mH2O
++vrRIEYemocBcDoyiT/86b7RgpFJ+cCEOEmbpKLBFZPRg6zL2Hjqo96j3QIpIxHpiLrfW+CkQxX20
++/3DNmUxmFYykzUy+nnhOfh36e5njW2WdNv6KewEpKb/krxI/r+0v49yy2jBKhy/ew7EQuldE2VSq
++GzvZJ+W7abt0ZhxF2QC0cj+YvP/Ahp2+UUod/4E1TjMKvH3JPm++PFt8QDQ0sAKSKmN2YFk2c2M7
++l/kM5/err+kEJ6x/vmaDD402OB+VQfamNdwybOD262ZiT/54R+V8T/UB0Ctp9hNm8TXYWEOak5Jg
++WwQxEWsUv1JvT6d3qffk3VP2uVwfmzqziFR9OqikOmtfOVI10pV8sInVHfTOahnyg7pXVR6xteYd
++i/CoOrPhyuuuDTf8Kgew8Y9RZ6GaRE8+JfaO0lF8WtyoPxubHEtehhPggbxXhqSnZtab3iZnPxj9
++moP/B5Goqur8P02CP3YvRp1W/7z/3n7/+hf2/Rf3/bebPOb5q6+XXq7falVa/3eY6TVH3dbX8F/s
++327yMn18rIH6bfZeWnjD5kQlqPlqtV9ajV+sxWbHDoEbpYundZM6q9FGpsQH2PkaAIvYHsyUpw8a
++X/nO9cdz6um0nEyGv/j7+CF/rWXWX0bZTPro7t4s2X5Pj1hh4OSNzAKYQDQQ/j4rJE70wYF2tFeN
++5no3Eibqsv27Gy5zk6tXcvvJ/aYTRqbGpO7Rx0JVe2tGhaFqL3fPzar9SzynB06D2Wqqfpbt3+49
++zq/aj19DPH/iVdAYoPO1hgHJI63GXz3kGsrB9+2ZrWcDYVrlLlVNfW5pQ7v0frw3qCodG01Sezcj
++Gj7cbpM6dyD7XHnfy5yc7G1PRkBFiBm6YWwlKk30/N2ridh5oIUqJz/hnjZuU5+ZI25s/Xkuc29U
++qdK3LdCY+g4t7pDmANINID1F7q12RqNXAPQv/ee4fcuCxU743V2rTmTEABqsYW89lwnfy7nHg2TD
++vYPPPWa66Z3CQvK6YcMige64aU8njW/E5uinYNiaUeKDD7MvsYPubGde9QsDzWj+/i4QS7cuS1ez
++3X+2MuOlFVvhaqyWvdNG+ZDGFtZ2V0+/jwn6EyHUtR+29PDHDusGtnOB5t1Ys96Dy1q62SUV/3ED
++DzZEZI67+9gt2KmD+bzXbb10GJWlOq0Un+ief5eNUuHrqW41IGIxcov2ztu7iIo1CFM4rA0SRYpb
++kMs25Z6GvaIK2NDDKzAkgzCJe0wEk/3Mce5mzfznHmB+Unu1L6n5swk+0kPEND1GTymtcShlo00x
++cosN+vS7dZLpj5C23mIrk9sKllPydXlo9rfZUx/wzwO0ptWfXOC4djHeoFPSg0v6HSIJzHRwG6Q1
++wQwrKs9jikTMIMX/iK7jxWyTHflh/4j4lFbUMu7cwylCEtmYffgzgZMpozc3wvZB4A==\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ <![CDATA[\r
++ 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\r
++ ]]>\r
++ </i:pgf>\r
++ </svg>\r
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Created with Inkscape (http://www.inkscape.org/) -->
++<svg
++ xmlns:dc="http://purl.org/dc/elements/1.1/"
++ xmlns:cc="http://web.resource.org/cc/"
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:svg="http://www.w3.org/2000/svg"
++ xmlns="http://www.w3.org/2000/svg"
++ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++ width="744.09448819"
++ height="1052.3622047"
++ id="svg2"
++ sodipodi:version="0.32"
++ inkscape:version="0.44.1"
++ sodipodi:docname="architecture.fr.svg"
++ sodipodi:docbase="/home/olivier/dev/telemeta/doc/devel"
++ inkscape:export-filename="/home/olivier/dev/telemeta/doc/devel/architecture.fr.png"
++ inkscape:export-xdpi="300"
++ inkscape:export-ydpi="300">
++ <defs
++ id="defs4" />
++ <sodipodi:namedview
++ id="base"
++ pagecolor="#ffffff"
++ bordercolor="#666666"
++ borderopacity="1.0"
++ gridtolerance="10000"
++ guidetolerance="10"
++ objecttolerance="10"
++ inkscape:pageopacity="0.0"
++ inkscape:pageshadow="2"
++ inkscape:zoom="1.6081777"
++ inkscape:cx="373.30355"
++ inkscape:cy="835.63412"
++ inkscape:document-units="px"
++ inkscape:current-layer="layer1"
++ showgrid="true"
++ gridspacingx="10px"
++ gridspacingy="10px"
++ inkscape:grid-points="true"
++ inkscape:window-width="1016"
++ inkscape:window-height="677"
++ inkscape:window-x="0"
++ inkscape:window-y="31" />
++ <metadata
++ id="metadata7">
++ <rdf:RDF>
++ <cc:Work
++ rdf:about="">
++ <dc:format>image/svg+xml</dc:format>
++ <dc:type
++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++ </cc:Work>
++ </rdf:RDF>
++ </metadata>
++ <g
++ inkscape:label="Layer 1"
++ inkscape:groupmode="layer"
++ id="layer1">
++ <g
++ id="g3137"
++ transform="translate(230,109.9563)">
++ <rect
++ y="152.40588"
++ x="-110"
++ height="49.956299"
++ width="290"
++ id="rect2160"
++ style="fill:#4e9a06;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <flowRoot
++ xml:space="preserve"
++ id="flowRoot3021"
++ transform="translate(-618.8906,-61.10662)"
++ style="fill:#eeeeec"><flowRegion
++ id="flowRegion3023"><rect
++ id="rect3025"
++ width="279.50085"
++ height="41.732269"
++ x="520.49915"
++ y="220.62991"
++ style="fill:#eeeeec" /></flowRegion><flowPara
++ id="flowPara3027"
++ style="font-size:12px;font-weight:bold;fill:#eeeeec">Modèle</flowPara><flowPara
++ style="font-size:8px;fill:#eeeeec"
++ id="flowPara3035">Le Modèle fournit une couche d'abstraction des données, à travers une API bien conçue, pour les méta données et fichiers audio.</flowPara></flowRoot> </g>
++ <g
++ id="g3053"
++ transform="translate(310,99.9563)">
++ <rect
++ y="162.40588"
++ x="110"
++ height="50"
++ width="110"
++ id="rect3055"
++ style="fill:#729fcf;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3057"
++ y="182.40588"
++ x="120"
++ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ y="182.40588"
++ x="120"
++ sodipodi:role="line"
++ id="tspan3083"
++ style="font-size:8px">Système de Fichiers</tspan><tspan
++ y="192.40588"
++ x="120"
++ sodipodi:role="line"
++ style="font-size:8px;font-weight:normal"
++ id="tspan3348">Stocke les fichiers</tspan><tspan
++ y="202.40588"
++ x="120"
++ sodipodi:role="line"
++ style="font-size:8px;font-weight:normal"
++ id="tspan3377">audio WAV sources</tspan></text>
++ </g>
++ <g
++ transform="translate(90,159.9563)"
++ id="g3067">
++ <rect
++ style="fill:#729fcf;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++ id="rect3069"
++ width="410"
++ height="40"
++ x="30"
++ y="162.40588" />
++ <text
++ xml:space="preserve"
++ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ x="43.980469"
++ y="181.52307"
++ id="text3071"
++ sodipodi:linespacing="125%"><tspan
++ sodipodi:role="line"
++ x="43.980469"
++ y="181.52307"
++ id="tspan3079">Base de données relationelle</tspan><tspan
++ sodipodi:role="line"
++ x="43.980469"
++ y="192.53607"
++ id="tspan3346"
++ style="font-size:8px;font-weight:normal">Stocke les méta données</tspan></text>
++ </g>
++ <g
++ id="g3335"
++ inkscape:export-xdpi="600"
++ inkscape:export-ydpi="600">
++ <g
++ id="g3142"
++ transform="translate(20,19.9563)">
++ <rect
++ y="122.40588"
++ x="100"
++ height="109.9563"
++ width="160"
++ id="rect3144"
++ style="fill:#204a87;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ </g>
++ <flowRoot
++ style="fill:#eeeeec"
++ transform="translate(-390.4766,-71.10662)"
++ id="flowRoot3091"
++ xml:space="preserve"
++ inkscape:export-xdpi="144"
++ inkscape:export-ydpi="144"
++ inkscape:export-filename="/home/olivier/dev/telemeta/doc/devel/architecture.png"><flowRegion
++ id="flowRegion3093"><rect
++ style="fill:#eeeeec"
++ y="220.62991"
++ x="520.49915"
++ height="81.732269"
++ width="139.50085"
++ id="rect3095" /></flowRegion><flowPara
++ style="font-size:12px;font-weight:bold;fill:#eeeeec"
++ id="flowPara3097">Contrôleur</flowPara><flowPara
++ id="flowPara3101"
++ style="font-size:8px;fill:#eeeeec">Le contrôleur reçoit les requêtes des utilisateurs, administrateurs, et systèmes distants, en général via HTTP, et met en oeuvre le Modèle, et la ou les Vue(s) adéquate(s).</flowPara></flowRoot> </g>
++ <g
++ id="g3107"
++ transform="matrix(1,0,0,0.583181,169.9999,144.3046)">
++ <rect
++ y="82.405945"
++ x="120"
++ height="102.88401"
++ width="240.00011"
++ id="rect3109"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ </g>
++ <g
++ id="g3117"
++ transform="translate(320,49.9563)">
++ <rect
++ y="92.405884"
++ x="150"
++ height="40"
++ width="60"
++ id="rect3119"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3121"
++ y="110.13611"
++ x="179.79346"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ id="tspan3125"
++ y="110.13611"
++ x="179.79346"
++ sodipodi:role="line">Vue de</tspan><tspan
++ y="121.38611"
++ x="179.79346"
++ sodipodi:role="line"
++ id="tspan3356">sauvegarde</tspan></text>
++ </g>
++ <g
++ transform="translate(170,9.912598)"
++ id="g3127">
++ <rect
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++ id="rect3129"
++ width="50"
++ height="39.956299"
++ x="120"
++ y="132.44958" />
++ <text
++ xml:space="preserve"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ x="144.70776"
++ y="150.01953"
++ id="text3131"
++ sodipodi:linespacing="125%"><tspan
++ sodipodi:role="line"
++ x="144.70776"
++ y="150.01953"
++ id="tspan3350">Vue</tspan><tspan
++ sodipodi:role="line"
++ x="144.70776"
++ y="161.26953"
++ id="tspan3360">HTML</tspan></text>
++ </g>
++ <flowRoot
++ xml:space="preserve"
++ id="flowRoot3141"
++ transform="translate(-220.4766,-21.10662)"
++ style="fill:#eeeeec"><flowRegion
++ id="flowRegion3143"><rect
++ id="rect3145"
++ width="219.50085"
++ height="51.732269"
++ x="520.49915"
++ y="220.62991"
++ style="fill:#eeeeec" /></flowRegion><flowPara
++ id="flowPara3147"
++ style="font-size:12px;font-weight:bold;fill:#eeeeec">Vues</flowPara><flowPara
++ style="font-size:8px;fill:#eeeeec"
++ id="flowPara3149">Il y a plusieurs Vues, pour la génération HTML, les sauvegardes XML, les exports OGG/MP3, etc.. à partir du Modèle, comme requis par le Contrôleur.</flowPara></flowRoot> <g
++ id="g3153"
++ transform="translate(290,-20.0437)">
++ <rect
++ y="162.40588"
++ x="120"
++ height="39.956299"
++ width="50"
++ id="rect3155"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3157"
++ y="179.97583"
++ x="144.69238"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ y="179.97583"
++ x="144.69238"
++ sodipodi:role="line"
++ id="tspan3354">Vue</tspan><tspan
++ y="191.22583"
++ x="144.69238"
++ sodipodi:role="line"
++ id="tspan3373">d'export</tspan></text>
++ </g>
++ <g
++ id="g3165"
++ transform="translate(230,9.912598)">
++ <rect
++ y="132.44958"
++ x="120"
++ height="39.956299"
++ width="50"
++ id="rect3167"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3169"
++ y="144.53296"
++ x="144.94287"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ y="144.53296"
++ x="144.94287"
++ sodipodi:role="line"
++ id="tspan3352">Vue</tspan><tspan
++ y="155.78296"
++ x="144.94287"
++ sodipodi:role="line"
++ id="tspan3367">Dublin</tspan><tspan
++ y="167.03296"
++ x="144.94287"
++ sodipodi:role="line"
++ id="tspan3369">Core</tspan></text>
++ </g>
++ </g>
++</svg>
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<!-- Created with Inkscape (http://www.inkscape.org/) -->
++<svg
++ xmlns:dc="http://purl.org/dc/elements/1.1/"
++ xmlns:cc="http://web.resource.org/cc/"
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:svg="http://www.w3.org/2000/svg"
++ xmlns="http://www.w3.org/2000/svg"
++ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++ width="744.09448819"
++ height="1052.3622047"
++ id="svg2"
++ sodipodi:version="0.32"
++ inkscape:version="0.44.1"
++ sodipodi:docname="architecture.svg"
++ sodipodi:docbase="/home/olivier/dev/telemeta/doc/devel"
++ inkscape:export-filename="/home/olivier/dev/telemeta/doc/devel/architecture.png"
++ inkscape:export-xdpi="144"
++ inkscape:export-ydpi="144">
++ <defs
++ id="defs4" />
++ <sodipodi:namedview
++ id="base"
++ pagecolor="#ffffff"
++ bordercolor="#666666"
++ borderopacity="1.0"
++ gridtolerance="10000"
++ guidetolerance="10"
++ objecttolerance="10"
++ inkscape:pageopacity="0.0"
++ inkscape:pageshadow="2"
++ inkscape:zoom="1.6081777"
++ inkscape:cx="373.30355"
++ inkscape:cy="802.18075"
++ inkscape:document-units="px"
++ inkscape:current-layer="layer1"
++ showgrid="true"
++ gridspacingx="10px"
++ gridspacingy="10px"
++ inkscape:grid-points="true"
++ inkscape:window-width="1016"
++ inkscape:window-height="677"
++ inkscape:window-x="0"
++ inkscape:window-y="31" />
++ <metadata
++ id="metadata7">
++ <rdf:RDF>
++ <cc:Work
++ rdf:about="">
++ <dc:format>image/svg+xml</dc:format>
++ <dc:type
++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++ </cc:Work>
++ </rdf:RDF>
++ </metadata>
++ <g
++ inkscape:label="Layer 1"
++ inkscape:groupmode="layer"
++ id="layer1">
++ <g
++ id="g3137"
++ transform="translate(230,109.9563)">
++ <rect
++ y="152.40588"
++ x="-110"
++ height="49.956299"
++ width="300"
++ id="rect2160"
++ style="fill:#4e9a06;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <flowRoot
++ xml:space="preserve"
++ id="flowRoot3021"
++ transform="translate(-618.8906,-61.10662)"
++ style="fill:#eeeeec"><flowRegion
++ id="flowRegion3023"><rect
++ id="rect3025"
++ width="299.50085"
++ height="41.732269"
++ x="520.49915"
++ y="220.62991"
++ style="fill:#eeeeec" /></flowRegion><flowPara
++ id="flowPara3027"
++ style="font-size:12px;font-weight:bold;fill:#eeeeec">Model</flowPara><flowPara
++ style="font-size:8px;fill:#eeeeec"
++ id="flowPara3035">The Model provides a complete data abstraction layer, through a well designed API, for both audio content and metadata.</flowPara></flowRoot> </g>
++ <g
++ id="g3053"
++ transform="translate(320,99.9563)">
++ <rect
++ y="162.40588"
++ x="110"
++ height="50"
++ width="100"
++ id="rect3055"
++ style="fill:#729fcf;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3057"
++ y="181.52307"
++ x="120.66016"
++ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ y="181.52307"
++ x="120.66016"
++ sodipodi:role="line"
++ id="tspan3083">File system</tspan><tspan
++ y="192.53607"
++ x="120.66016"
++ sodipodi:role="line"
++ id="tspan3344"
++ style="font-size:8px;font-weight:normal">Stores audio source </tspan><tspan
++ y="202.53607"
++ x="120.66016"
++ sodipodi:role="line"
++ style="font-size:8px;font-weight:normal"
++ id="tspan3348">WAV Files</tspan></text>
++ </g>
++ <g
++ transform="translate(90,159.9563)"
++ id="g3067">
++ <rect
++ style="fill:#729fcf;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++ id="rect3069"
++ width="410"
++ height="40"
++ x="30"
++ y="162.40588" />
++ <text
++ xml:space="preserve"
++ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ x="43.980469"
++ y="181.52307"
++ id="text3071"
++ sodipodi:linespacing="125%"><tspan
++ sodipodi:role="line"
++ x="43.980469"
++ y="181.52307"
++ id="tspan3079">Relational Database</tspan><tspan
++ sodipodi:role="line"
++ x="43.980469"
++ y="192.53607"
++ id="tspan3346"
++ style="font-size:8px;font-weight:normal">Stores metadata</tspan></text>
++ </g>
++ <g
++ id="g3335">
++ <g
++ id="g3142"
++ transform="translate(20,19.9563)">
++ <rect
++ y="122.40588"
++ x="100"
++ height="109.9563"
++ width="160"
++ id="rect3144"
++ style="fill:#204a87;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ </g>
++ <flowRoot
++ style="fill:#eeeeec"
++ transform="translate(-390.4766,-71.10662)"
++ id="flowRoot3091"
++ xml:space="preserve"
++ inkscape:export-xdpi="144"
++ inkscape:export-ydpi="144"
++ inkscape:export-filename="/home/olivier/dev/telemeta/doc/devel/architecture.png"><flowRegion
++ id="flowRegion3093"><rect
++ style="fill:#eeeeec"
++ y="220.62991"
++ x="520.49915"
++ height="81.732269"
++ width="139.50085"
++ id="rect3095" /></flowRegion><flowPara
++ style="font-size:12px;font-weight:bold;fill:#eeeeec"
++ id="flowPara3097">Controller</flowPara><flowPara
++ id="flowPara3101"
++ style="font-size:8px;fill:#eeeeec">The Controller receives requests from users, administrators, or remote systems, usually via HTTP, and routes them to the proper View(s) and Model calls.</flowPara></flowRoot> </g>
++ <g
++ id="g3107"
++ transform="matrix(1,0,0,0.583181,169.9999,144.3046)">
++ <rect
++ y="82.405945"
++ x="120"
++ height="102.88401"
++ width="240.00011"
++ id="rect3109"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ </g>
++ <g
++ id="g3117"
++ transform="translate(320,49.9563)">
++ <rect
++ y="92.405884"
++ x="150"
++ height="40"
++ width="60"
++ id="rect3119"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3121"
++ y="110.13611"
++ x="179.79346"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ id="tspan3125"
++ y="110.13611"
++ x="179.79346"
++ sodipodi:role="line">Backup</tspan><tspan
++ y="121.38611"
++ x="179.79346"
++ sodipodi:role="line"
++ id="tspan3356">View</tspan></text>
++ </g>
++ <g
++ transform="translate(170,9.912598)"
++ id="g3127">
++ <rect
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
++ id="rect3129"
++ width="50"
++ height="39.956299"
++ x="120"
++ y="132.44958" />
++ <text
++ xml:space="preserve"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ x="144.70776"
++ y="150.01953"
++ id="text3131"
++ sodipodi:linespacing="125%"><tspan
++ sodipodi:role="line"
++ x="144.70776"
++ y="150.01953"
++ id="tspan3135">HTML</tspan><tspan
++ sodipodi:role="line"
++ x="144.70776"
++ y="161.26953"
++ id="tspan3350">View</tspan></text>
++ </g>
++ <flowRoot
++ xml:space="preserve"
++ id="flowRoot3141"
++ transform="translate(-220.4766,-21.10662)"
++ style="fill:#eeeeec"><flowRegion
++ id="flowRegion3143"><rect
++ id="rect3145"
++ width="219.50085"
++ height="51.732269"
++ x="520.49915"
++ y="220.62991"
++ style="fill:#eeeeec" /></flowRegion><flowPara
++ id="flowPara3147"
++ style="font-size:12px;font-weight:bold;fill:#eeeeec">Views</flowPara><flowPara
++ style="font-size:8px;fill:#eeeeec"
++ id="flowPara3149">There are several Views, for generating HTML, XML based backups, OGG/MP3 exports, etc.. out of the Model, as required by the Controller.</flowPara></flowRoot> <g
++ id="g3153"
++ transform="translate(290,-20.0437)">
++ <rect
++ y="162.40588"
++ x="120"
++ height="39.956299"
++ width="50"
++ id="rect3155"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3157"
++ y="179.97583"
++ x="144.69238"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ id="tspan3161"
++ y="179.97583"
++ x="144.69238"
++ sodipodi:role="line">Export</tspan><tspan
++ y="191.22583"
++ x="144.69238"
++ sodipodi:role="line"
++ id="tspan3354">View</tspan></text>
++ </g>
++ <g
++ id="g3165"
++ transform="translate(230,9.912598)">
++ <rect
++ y="132.44958"
++ x="120"
++ height="39.956299"
++ width="50"
++ id="rect3167"
++ style="fill:#a40000;fill-rule:evenodd;stroke:none;stroke-width:1.93383527px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
++ <text
++ sodipodi:linespacing="125%"
++ id="text3169"
++ y="144.53296"
++ x="144.94287"
++ style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
++ xml:space="preserve"><tspan
++ id="tspan3171"
++ y="144.53296"
++ x="144.94287"
++ sodipodi:role="line">Dublin</tspan><tspan
++ y="155.78296"
++ x="144.94287"
++ sodipodi:role="line"
++ id="tspan3175">Core</tspan><tspan
++ y="167.03296"
++ x="144.94287"
++ sodipodi:role="line"
++ id="tspan3352">View</tspan></text>
++ </g>
++ </g>
++</svg>
--- /dev/null
--- /dev/null
++<?xml version = "1.0" encoding = "UTF-8" ?>
++<uml version="5">
++ <argo version="5">
++ <documentation>
++ <authorname></authorname>
++ <authoremail></authoremail>
++ <version>0.24</version>
++ <description>
++
++ </description>
++ </documentation>
++ <settings>
++ <notationlanguage>UML 1.4</notationlanguage>
++ <useguillemots>false</useguillemots>
++ <showvisibility>false</showvisibility>
++ <showmultiplicity>false</showmultiplicity>
++ <showinitialvalue>false</showinitialvalue>
++ <showproperties>false</showproperties>
++ <showtypes>true</showtypes>
++ <showstereotypes>false</showstereotypes>
++ <showsingularmultiplicities>true</showsingularmultiplicities>
++ <defaultshadowwidth>1</defaultshadowwidth>
++ </settings>
++
++ <searchpath href="PROJECT_DIR" />
++ <member type="xmi"
++ name="class_diagram.xmi" />
++ <member type="pgml"
++ name="class_diagram_ClassDiagram1.pgml"
++ diagramclass="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram"
++ diagramname="Class Diagram 1" />
++ <member type="pgml"
++ name="class_diagram_UseCaseDiagram1.pgml"
++ diagramclass="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram"
++ diagramname="Use Case Diagram 1" />
++ <member type="todo"
++ name="class_diagram.todo" />
++ <historyfile name="" />
++ </argo>
++<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Mar 26 22:14:57 CEST 2007'>
++ <XMI.header> <XMI.documentation>
++ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
++ <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion>
++ </XMI.documentation>
++ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
++ <XMI.content>
++ <UML:Model xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077B'
++ name = 'untitledModel' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Package xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077C'
++ name = 'Model' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000800'
++ name = 'contain' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000801'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A0C'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A0B'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000804'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000808'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000807'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000809'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000080A'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000080B'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000080C'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000080D'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000827'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000826'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000833'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000834'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000835'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000836'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000837'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083B'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083A'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000787'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083C'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083D'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083E'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000083F'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000785'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000840'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000846'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000845'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000787'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Stereotype xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E8'
++ name = 'import' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Stereotype.baseClass>Permission</UML:Stereotype.baseClass>
++ </UML:Stereotype>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085B'
++ name = 'notifies' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085C'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085D'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085E'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085F'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000863'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000862'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Interface xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E5'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Class xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'
++ name = 'Collection' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'
++ name = 'MediaItem' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'
++ name = 'Part' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Interface xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E5'
++ name = 'IMediaItemObserver' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/>
++ </UML:Namespace.ownedElement>
++ </UML:Package>
++ <UML:Stereotype xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000007EF'
++ name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
++ </UML:Stereotype>
++ <UML:Abstraction xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000864'
++ isSpecification = 'false'>
++ <UML:ModelElement.stereotype>
++ <UML:Stereotype xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000007EF'/>
++ </UML:ModelElement.stereotype>
++ <UML:Dependency.client>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000860'/>
++ </UML:Dependency.client>
++ <UML:Dependency.supplier>
++ <UML:Interface xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862'/>
++ </UML:Dependency.supplier>
++ </UML:Abstraction>
++ <UML:Abstraction xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000871'
++ isSpecification = 'false'>
++ <UML:ModelElement.stereotype>
++ <UML:Stereotype xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000007EF'/>
++ </UML:ModelElement.stereotype>
++ <UML:Dependency.client>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000086F'/>
++ </UML:Dependency.client>
++ <UML:Dependency.supplier>
++ <UML:Interface xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862'/>
++ </UML:Dependency.supplier>
++ </UML:Abstraction>
++ <UML:Package xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000873'
++ name = 'Core' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000087C'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000087D'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000087E'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000087F'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000874'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000880'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000884'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000883'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000876'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000885'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000886'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000887'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000888'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000876'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000889'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000088D'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000088C'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000878'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B0'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B1'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B2'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B3'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000878'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B4'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B5'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008B6'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008AE'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ </UML:Namespace.ownedElement>
++ </UML:Package>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008AE'
++ name = 'Interface' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000878'
++ name = 'ExtensionPoint' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000876'
++ name = 'Component' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000874'
++ name = 'ComponentManager' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000787'
++ name = 'ItemDynamicProperty' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000785'
++ name = 'ItemDynamicPropertyDefinition' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Abstraction xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008EB'
++ isSpecification = 'false'>
++ <UML:ModelElement.stereotype>
++ <UML:Stereotype xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000007EF'/>
++ </UML:ModelElement.stereotype>
++ <UML:Dependency.client>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008E9'/>
++ </UML:Dependency.client>
++ <UML:Dependency.supplier>
++ <UML:Interface xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862'/>
++ </UML:Dependency.supplier>
++ </UML:Abstraction>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F4'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F5'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F6'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F7'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F8'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008FC'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008FB'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Interface xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:DataType xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008FD'
++ name = 'int' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'/>
++ <UML:Generalization xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000912'
++ isSpecification = 'false'>
++ <UML:Generalization.child>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000086F'/>
++ </UML:Generalization.child>
++ <UML:Generalization.parent>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909'/>
++ </UML:Generalization.parent>
++ </UML:Generalization>
++ <UML:Generalization xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000913'
++ isSpecification = 'false'>
++ <UML:Generalization.child>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000860'/>
++ </UML:Generalization.child>
++ <UML:Generalization.parent>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909'/>
++ </UML:Generalization.parent>
++ </UML:Generalization>
++ <UML:Generalization xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000914'
++ isSpecification = 'false'>
++ <UML:Generalization.child>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008E9'/>
++ </UML:Generalization.child>
++ <UML:Generalization.parent>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909'/>
++ </UML:Generalization.parent>
++ </UML:Generalization>
++ <UML:Package xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000915'
++ name = 'ExportView' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Dependency xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A08'
++ isSpecification = 'false'>
++ <UML:Dependency.client>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3'/>
++ </UML:Dependency.client>
++ <UML:Dependency.supplier>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:Dependency.supplier>
++ </UML:Dependency>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000860'
++ name = 'OggExporter' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
++ <UML:ModelElement.clientDependency>
++ <UML:Abstraction xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000864'/>
++ </UML:ModelElement.clientDependency>
++ <UML:GeneralizableElement.generalization>
++ <UML:Generalization xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000913'/>
++ </UML:GeneralizableElement.generalization>
++ </UML:Class>
++ <UML:Interface xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862'
++ name = 'IExporter' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:000000000000086F'
++ name = 'FlacExporter' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
++ <UML:ModelElement.clientDependency>
++ <UML:Abstraction xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000871'/>
++ </UML:ModelElement.clientDependency>
++ <UML:GeneralizableElement.generalization>
++ <UML:Generalization xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000912'/>
++ </UML:GeneralizableElement.generalization>
++ </UML:Class>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008E9'
++ name = 'Mp3Exporter' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
++ <UML:ModelElement.clientDependency>
++ <UML:Abstraction xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008EB'/>
++ </UML:ModelElement.clientDependency>
++ <UML:GeneralizableElement.generalization>
++ <UML:Generalization xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000914'/>
++ </UML:GeneralizableElement.generalization>
++ </UML:Class>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'
++ name = 'Exporter' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
++ <UML:ModelElement.clientDependency>
++ <UML:Abstraction xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E9'/>
++ </UML:ModelElement.clientDependency>
++ </UML:Class>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909'
++ name = 'ExporterCore' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Abstraction xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E9'
++ isSpecification = 'false'>
++ <UML:ModelElement.comment>
++ <UML:Comment xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000864'/>
++ </UML:ModelElement.comment>
++ <UML:ModelElement.stereotype>
++ <UML:Stereotype xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000007EF'/>
++ </UML:ModelElement.stereotype>
++ <UML:Dependency.client>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:Dependency.client>
++ <UML:Dependency.supplier>
++ <UML:Interface xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E5'/>
++ </UML:Dependency.supplier>
++ </UML:Abstraction>
++ </UML:Namespace.ownedElement>
++ </UML:Package>
++ <UML:Package xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E2'
++ name = 'WebView' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Class xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3'
++ name = 'MediaItemEditor' visibility = 'public' isSpecification = 'false'
++ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
++ <UML:ModelElement.clientDependency>
++ <UML:Dependency xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A08'/>
++ </UML:ModelElement.clientDependency>
++ </UML:Class>
++ </UML:Namespace.ownedElement>
++ </UML:Package>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EA'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EB'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EC'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009ED'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EE'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EF'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009F0'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009F8'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009F9'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009FA'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009FB'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009FC'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A07'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A06'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009FF'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A00'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A01'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A02'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A03'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A04'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A05'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Comment xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000864'
++ isSpecification = 'false' body = 'The Exporter refreshes its cache when a MediaItem gets created or updated.'>
++ <UML:Comment.annotatedElement>
++ <UML:Abstraction xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E9'/>
++ </UML:Comment.annotatedElement>
++ </UML:Comment>
++ <UML:TagDefinition xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000866'
++ name = 'documentation' isSpecification = 'false' tagType = 'String'>
++ <UML:TagDefinition.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000868'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000867'
++ lower = '0' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:TagDefinition.multiplicity>
++ </UML:TagDefinition>
++ <UML:Package xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000954'
++ name = 'BackupView' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Namespace.ownedElement>
++ <UML:Class xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955'
++ name = 'Serializer' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ <UML:Class xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957'
++ name = 'Unserializer' visibility = 'public' isSpecification = 'false' isRoot = 'false'
++ isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
++ </UML:Namespace.ownedElement>
++ </UML:Package>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000972'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000973'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000974'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000975'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000976'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000988'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000987'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000979'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000097A'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000098A'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000989'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000097D'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000097E'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000097F'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000980'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000981'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000098C'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000098B'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000984'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000985'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000986'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000996'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000997'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000998'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000999'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000099A'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AC'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AB'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000099D'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000099E'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000099F'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A0'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A1'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009B0'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AF'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A4'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A5'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AE'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AD'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A8'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A9'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009AA'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009B8'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009B9'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009BA'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009BB'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009BC'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C7'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C6'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009BF'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C0'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C1'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C2'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C3'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C4'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C5'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C8'
++ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C9'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009CA'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009CB'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009CC'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009D2'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009D1'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ <UML:Association xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009DC'
++ name = 'contain' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
++ isAbstract = 'false'>
++ <UML:Association.connection>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009DD'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009DE'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009DF'
++ lower = '1' upper = '1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ <UML:AssociationEnd xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E0'
++ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
++ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
++ <UML:AssociationEnd.multiplicity>
++ <UML:Multiplicity xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E4'>
++ <UML:Multiplicity.range>
++ <UML:MultiplicityRange xmi.id = '10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E3'
++ lower = '0' upper = '-1'/>
++ </UML:Multiplicity.range>
++ </UML:Multiplicity>
++ </UML:AssociationEnd.multiplicity>
++ <UML:AssociationEnd.participant>
++ <UML:Class xmi.idref = '10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783'/>
++ </UML:AssociationEnd.participant>
++ </UML:AssociationEnd>
++ </UML:Association.connection>
++ </UML:Association>
++ </UML:Namespace.ownedElement>
++ </UML:Model>
++ </XMI.content>
++</XMI>
++<pgml description="org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram|10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077B"
++ name="Class Diagram 1"
++>
++ <group name="Fig0"
++ description="org.argouml.uml.diagram.static_structure.ui.FigPackage[80, 328, 720, 400]pathVisible=false;stereotypeVisible=true;visibilityVisible=false"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077C"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig0.0"
++ x="80"
++ y="328"
++ width="720"
++ height="400"
++ fill="0"
++ fillcolor="200 255 200"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig0.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[80, 328, 670, 3]"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="black"
++ visibility="0"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig0.1.0"
++ x="80"
++ y="328"
++ width="670"
++ height="3"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig0.2"
++ x="80"
++ y="328"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ >Model</text>
++ <rectangle name="Fig0.3"
++ x="81"
++ y="330"
++ width="668"
++ height="2"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="200 255 200"
++ visibility="0"
++ />
++ <text name="Fig0.4"
++ x="80"
++ y="348"
++ fill="1"
++ fillcolor="200 255 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ></text>
++ </group>
++ <group name="Fig1"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[96, 440, 160, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig0"
++ </private>
++
++ <rectangle name="Fig1.0"
++ x="96"
++ y="440"
++ width="160"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig1.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[96, 440, 160, 2]"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077F"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig1.1.0"
++ x="96"
++ y="440"
++ width="160"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig1.2"
++ x="96"
++ y="442"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Collection</text>
++ <group name="Fig1.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[97, 484, 159, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig1.3.0"
++ x="97"
++ y="484"
++ width="159"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig1.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="97"
++ y="484" />
++ <lineto x="256"
++ y="484" />
++ </path>
++ </group>
++ <group name="Fig1.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[97, 463, 159, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig1.4.0"
++ x="97"
++ y="463"
++ width="159"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig1.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="97"
++ y="463" />
++ <lineto x="256"
++ y="463" />
++ </path>
++ </group>
++ <rectangle name="Fig1.5"
++ x="96"
++ y="440"
++ width="160"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig2"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[320, 440, 152, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig0"
++ </private>
++
++ <rectangle name="Fig2.0"
++ x="320"
++ y="440"
++ width="152"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig2.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[320, 440, 152, 2]"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000781"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig2.1.0"
++ x="320"
++ y="440"
++ width="152"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig2.2"
++ x="320"
++ y="442"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >MediaItem</text>
++ <group name="Fig2.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[321, 484, 151, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig2.3.0"
++ x="321"
++ y="484"
++ width="151"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig2.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="321"
++ y="484" />
++ <lineto x="472"
++ y="484" />
++ </path>
++ </group>
++ <group name="Fig2.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[321, 463, 151, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig2.4.0"
++ x="321"
++ y="463"
++ width="151"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig2.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="321"
++ y="463" />
++ <lineto x="472"
++ y="463" />
++ </path>
++ </group>
++ <rectangle name="Fig2.5"
++ x="320"
++ y="440"
++ width="152"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig3"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[544, 440, 152, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig0"
++ </private>
++
++ <rectangle name="Fig3.0"
++ x="544"
++ y="440"
++ width="152"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig3.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[544, 440, 152, 2]"
++ href="10-0-1-2-529699b9:1117f3aa477:-8000:0000000000000783"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig3.1.0"
++ x="544"
++ y="440"
++ width="152"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig3.2"
++ x="544"
++ y="442"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Part</text>
++ <group name="Fig3.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[545, 484, 151, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig3.3.0"
++ x="545"
++ y="484"
++ width="151"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig3.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="545"
++ y="484" />
++ <lineto x="696"
++ y="484" />
++ </path>
++ </group>
++ <group name="Fig3.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[545, 463, 151, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig3.4.0"
++ x="545"
++ y="463"
++ width="151"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig3.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="545"
++ y="463" />
++ <lineto x="696"
++ y="463" />
++ </path>
++ </group>
++ <rectangle name="Fig3.5"
++ x="544"
++ y="440"
++ width="152"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig4"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000800"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig2.0"
++ destPortFig="Fig3.0"
++ sourceFigNode="Fig2"
++ destFigNode="Fig3"
++ </private>
++ <path name="Fig4.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="472"
++ y="464" />
++ <lineto x="544"
++ y="464" />
++ </path>
++ </group>
++ <group name="Fig5"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000809"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig1.0"
++ destPortFig="Fig2.0"
++ sourceFigNode="Fig1"
++ destFigNode="Fig2"
++ </private>
++ <path name="Fig5.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="256"
++ y="456" />
++ <lineto x="320"
++ y="456" />
++ </path>
++ </group>
++ <group name="Fig6"
++ description="org.argouml.uml.diagram.static_structure.ui.FigPackage[856, 344, 480, 400]pathVisible=false;stereotypeVisible=true;visibilityVisible=false"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000915"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig6.0"
++ x="856"
++ y="344"
++ width="480"
++ height="400"
++ fill="0"
++ fillcolor="255 200 200"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig6.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[856, 344, 430, 3]"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ visibility="0"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig6.1.0"
++ x="856"
++ y="344"
++ width="430"
++ height="3"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig6.2"
++ x="856"
++ y="344"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ >ExportView</text>
++ <rectangle name="Fig6.3"
++ x="857"
++ y="346"
++ width="428"
++ height="2"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="255 200 200"
++ visibility="0"
++ />
++ <text name="Fig6.4"
++ x="856"
++ y="364"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ></text>
++ </group>
++ <group name="Fig7"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1080, 536, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000860"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig7.0"
++ x="1080"
++ y="536"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig7.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1080, 536, 90, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000860"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig7.1.0"
++ x="1080"
++ y="536"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig7.2"
++ x="1080"
++ y="538"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >OggExporter</text>
++ <group name="Fig7.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1081, 580, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig7.3.0"
++ x="1081"
++ y="580"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig7.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1081"
++ y="580" />
++ <lineto x="1170"
++ y="580" />
++ </path>
++ </group>
++ <group name="Fig7.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1081, 559, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig7.4.0"
++ x="1081"
++ y="559"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig7.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1081"
++ y="559" />
++ <lineto x="1170"
++ y="559" />
++ </path>
++ </group>
++ <rectangle name="Fig7.5"
++ x="1080"
++ y="536"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig8"
++ description="org.argouml.uml.diagram.static_structure.ui.FigInterface[1064, 376, 118, 60]pathVisible=false;operationsVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig8.0"
++ x="1064"
++ y="376"
++ width="118"
++ height="60"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig8.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1064, 376, 118, 15]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000862"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig8.1.0"
++ x="1064"
++ y="376"
++ width="118"
++ height="15"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ <text name="Fig8.1.1"
++ x="1065"
++ y="377"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ><<interface>></text>
++ </group>
++ <text name="Fig8.2"
++ x="1064"
++ y="391"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >IExporter</text>
++ <group name="Fig8.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1065, 412, 117, 23]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig8.3.0"
++ x="1065"
++ y="412"
++ width="117"
++ height="23"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig8.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1065"
++ y="412" />
++ <lineto x="1182"
++ y="412" />
++ </path>
++ </group>
++ <rectangle name="Fig8.4"
++ x="1064"
++ y="376"
++ width="118"
++ height="60"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig9"
++ description="org.argouml.uml.diagram.ui.FigRealization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000864"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig7.0"
++ destPortFig="Fig8.0"
++ sourceFigNode="Fig7"
++ destFigNode="Fig8"
++ </private>
++ <path name="Fig9.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1128"
++ y="536" />
++ <lineto x="1128"
++ y="436" />
++ </path>
++ </group>
++ <group name="Fig10"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[944, 536, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:000000000000086F"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig10.0"
++ x="944"
++ y="536"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig10.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[944, 536, 90, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:000000000000086F"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig10.1.0"
++ x="944"
++ y="536"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig10.2"
++ x="944"
++ y="538"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >FlacExporter</text>
++ <group name="Fig10.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[945, 580, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig10.3.0"
++ x="945"
++ y="580"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig10.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="945"
++ y="580" />
++ <lineto x="1034"
++ y="580" />
++ </path>
++ </group>
++ <group name="Fig10.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[945, 559, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig10.4.0"
++ x="945"
++ y="559"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig10.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="945"
++ y="559" />
++ <lineto x="1034"
++ y="559" />
++ </path>
++ </group>
++ <rectangle name="Fig10.5"
++ x="944"
++ y="536"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig11"
++ description="org.argouml.uml.diagram.ui.FigRealization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000871"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig10.0"
++ destPortFig="Fig8.0"
++ sourceFigNode="Fig10"
++ destFigNode="Fig8"
++ </private>
++ <path name="Fig11.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1016"
++ y="536" />
++ <lineto x="1016"
++ y="480" />
++ <lineto x="1128"
++ y="480" />
++ <lineto x="1128"
++ y="436" />
++ </path>
++ </group>
++ <group name="Fig12"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1200, 536, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008E9"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig12.0"
++ x="1200"
++ y="536"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig12.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1200, 536, 90, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008E9"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig12.1.0"
++ x="1200"
++ y="536"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig12.2"
++ x="1200"
++ y="538"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Mp3Exporter</text>
++ <group name="Fig12.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1201, 580, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig12.3.0"
++ x="1201"
++ y="580"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig12.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1201"
++ y="580" />
++ <lineto x="1290"
++ y="580" />
++ </path>
++ </group>
++ <group name="Fig12.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1201, 559, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig12.4.0"
++ x="1201"
++ y="559"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig12.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1201"
++ y="559" />
++ <lineto x="1290"
++ y="559" />
++ </path>
++ </group>
++ <rectangle name="Fig12.5"
++ x="1200"
++ y="536"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig13"
++ description="org.argouml.uml.diagram.ui.FigRealization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008EB"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig12.0"
++ destPortFig="Fig8.0"
++ sourceFigNode="Fig12"
++ destFigNode="Fig8"
++ </private>
++ <path name="Fig13.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1248"
++ y="536" />
++ <lineto x="1248"
++ y="480" />
++ <lineto x="1128"
++ y="480" />
++ <lineto x="1128"
++ y="436" />
++ </path>
++ </group>
++ <group name="Fig14"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[896, 432, 96, 65]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig14.0"
++ x="896"
++ y="432"
++ width="96"
++ height="65"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig14.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[896, 432, 96, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F0"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig14.1.0"
++ x="896"
++ y="432"
++ width="96"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig14.2"
++ x="896"
++ y="434"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Exporter</text>
++ <group name="Fig14.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[897, 476, 95, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig14.3.0"
++ x="897"
++ y="476"
++ width="95"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig14.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="897"
++ y="476" />
++ <lineto x="992"
++ y="476" />
++ </path>
++ </group>
++ <group name="Fig14.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[897, 455, 95, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig14.4.0"
++ x="897"
++ y="455"
++ width="95"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig14.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="897"
++ y="455" />
++ <lineto x="992"
++ y="455" />
++ </path>
++ </group>
++ <rectangle name="Fig14.5"
++ x="896"
++ y="432"
++ width="96"
++ height="65"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig15"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000008F4"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig14.0"
++ destPortFig="Fig8.0"
++ sourceFigNode="Fig14"
++ destFigNode="Fig8"
++ </private>
++ <path name="Fig15.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="992"
++ y="432" />
++ <lineto x="1064"
++ y="432" />
++ </path>
++ </group>
++ <group name="Fig16"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[1072, 656, 96, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig16.0"
++ x="1072"
++ y="656"
++ width="96"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig16.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[1072, 656, 96, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000909"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig16.1.0"
++ x="1072"
++ y="656"
++ width="96"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig16.2"
++ x="1072"
++ y="658"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >ExporterCore</text>
++ <group name="Fig16.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[1073, 700, 95, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig16.3.0"
++ x="1073"
++ y="700"
++ width="95"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig16.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1073"
++ y="700" />
++ <lineto x="1168"
++ y="700" />
++ </path>
++ </group>
++ <group name="Fig16.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[1073, 679, 95, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig16.4.0"
++ x="1073"
++ y="679"
++ width="95"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig16.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1073"
++ y="679" />
++ <lineto x="1168"
++ y="679" />
++ </path>
++ </group>
++ <rectangle name="Fig16.5"
++ x="1072"
++ y="656"
++ width="96"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig17"
++ description="org.argouml.uml.diagram.ui.FigGeneralization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000914"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig12.0"
++ destPortFig="Fig16.0"
++ sourceFigNode="Fig12"
++ destFigNode="Fig16"
++ </private>
++ <path name="Fig17.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1256"
++ y="600" />
++ <lineto x="1256"
++ y="632" />
++ <lineto x="1120"
++ y="632" />
++ <lineto x="1120"
++ y="656" />
++ </path>
++ </group>
++ <group name="Fig18"
++ description="org.argouml.uml.diagram.ui.FigGeneralization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000913"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig7.0"
++ destPortFig="Fig16.0"
++ sourceFigNode="Fig7"
++ destFigNode="Fig16"
++ </private>
++ <path name="Fig18.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1120"
++ y="600" />
++ <lineto x="1120"
++ y="656" />
++ </path>
++ </group>
++ <group name="Fig19"
++ description="org.argouml.uml.diagram.ui.FigGeneralization"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000912"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig10.0"
++ destPortFig="Fig16.0"
++ sourceFigNode="Fig10"
++ destFigNode="Fig16"
++ </private>
++ <path name="Fig19.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1016"
++ y="600" />
++ <lineto x="1016"
++ y="632" />
++ <lineto x="1120"
++ y="632" />
++ <lineto x="1120"
++ y="656" />
++ </path>
++ </group>
++ <group name="Fig20"
++ description="org.argouml.uml.diagram.static_structure.ui.FigPackage[80, 136, 320, 176]pathVisible=false;stereotypeVisible=true;visibilityVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E2"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig20.0"
++ x="80"
++ y="136"
++ width="320"
++ height="176"
++ fill="0"
++ fillcolor="255 200 200"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig20.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[80, 136, 270, 3]"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ visibility="0"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig20.1.0"
++ x="80"
++ y="136"
++ width="270"
++ height="3"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig20.2"
++ x="80"
++ y="136"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ >WebView</text>
++ <rectangle name="Fig20.3"
++ x="81"
++ y="138"
++ width="268"
++ height="2"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="255 200 200"
++ visibility="0"
++ />
++ <text name="Fig20.4"
++ x="80"
++ y="156"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ></text>
++ </group>
++ <group name="Fig21"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[168, 216, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig20"
++ </private>
++
++ <rectangle name="Fig21.0"
++ x="168"
++ y="216"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig21.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[168, 216, 90, 2]"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009E3"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig21.1.0"
++ x="168"
++ y="216"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig21.2"
++ x="168"
++ y="218"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >MediaItemEditor</text>
++ <group name="Fig21.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[169, 260, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig21.3.0"
++ x="169"
++ y="260"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig21.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="169"
++ y="260" />
++ <lineto x="258"
++ y="260" />
++ </path>
++ </group>
++ <group name="Fig21.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[169, 239, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig21.4.0"
++ x="169"
++ y="239"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig21.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="169"
++ y="239" />
++ <lineto x="258"
++ y="239" />
++ </path>
++ </group>
++ <rectangle name="Fig21.5"
++ x="168"
++ y="216"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig22"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009EA"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig21.0"
++ destPortFig="Fig2.0"
++ sourceFigNode="Fig21"
++ destFigNode="Fig2"
++ </private>
++ <path name="Fig22.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="192"
++ y="280" />
++ <lineto x="192"
++ y="368" />
++ <lineto x="328"
++ y="368" />
++ <lineto x="328"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig23"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009F8"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig21.0"
++ destPortFig="Fig3.0"
++ sourceFigNode="Fig21"
++ destFigNode="Fig3"
++ </private>
++ <path name="Fig23.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="200"
++ y="280" />
++ <lineto x="200"
++ y="360" />
++ <lineto x="584"
++ y="360" />
++ <lineto x="584"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig24"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:00000000000009FF"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig21.0"
++ destPortFig="Fig1.0"
++ sourceFigNode="Fig21"
++ destFigNode="Fig1"
++ </private>
++ <path name="Fig24.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="184"
++ y="280" />
++ <lineto x="184"
++ y="368" />
++ <lineto x="136"
++ y="368" />
++ <lineto x="136"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig25"
++ description="org.argouml.uml.diagram.ui.FigDependency"
++ href="10-0-1-2--159db96c:1118e45989a:-8000:0000000000000A08"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig21.0"
++ destPortFig="Fig14.0"
++ sourceFigNode="Fig21"
++ destFigNode="Fig14"
++ </private>
++ <path name="Fig25.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="258"
++ y="280" />
++ <lineto x="928"
++ y="280" />
++ <lineto x="928"
++ y="432" />
++ </path>
++ </group>
++ <group name="Fig26"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000085B"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig2.0"
++ destPortFig="Fig41"
++ sourceFigNode="Fig2"
++ destFigNode="Fig41"
++ </private>
++ <path name="Fig26.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="448"
++ y="504" />
++ <lineto x="448"
++ y="664" />
++ <lineto x="560"
++ y="664" />
++ </path>
++ </group>
++ <group name="Fig27"
++ description="org.argouml.uml.diagram.static_structure.ui.FigComment[872, 672, 170, 56]pathVisible=false;"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000864"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig6"
++ </private>
++
++ <rectangle name="Fig27.0"
++ x="872"
++ y="672"
++ width="170"
++ height="56"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig27.1"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="872"
++ y="672" />
++ <lineto x="1031"
++ y="672" />
++ <lineto x="1041"
++ y="682" />
++ <lineto x="1041"
++ y="727" />
++ <lineto x="872"
++ y="727" />
++ <lineto x="872"
++ y="672" />
++ </path>
++ <path name="Fig27.2"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="1"
++ fillcolor="178 178 178"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="1031"
++ y="672" />
++ <lineto x="1041"
++ y="682" />
++ <lineto x="1031"
++ y="682" />
++ <lineto x="1031"
++ y="672" />
++ </path>
++ <group name="Fig27.3"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[874, 674, 156, 2]"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ visibility="0"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig27.3.0"
++ x="874"
++ y="674"
++ width="156"
++ height="2"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig27.4"
++ x="874"
++ y="674"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ >The Exporter refreshes its cache
++when a MediaItem gets created
++or updated.</text>
++ </group>
++ <group name="Fig28"
++ description="org.argouml.uml.diagram.static_structure.ui.FigPackage[80, 760, 576, 176]pathVisible=false;stereotypeVisible=true;visibilityVisible=false"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000954"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig28.0"
++ x="80"
++ y="760"
++ width="576"
++ height="176"
++ fill="0"
++ fillcolor="255 200 200"
++ stroke="0"
++ strokecolor="black"
++ />
++ <group name="Fig28.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[80, 760, 526, 3]"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ visibility="0"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig28.1.0"
++ x="80"
++ y="760"
++ width="526"
++ height="3"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig28.2"
++ x="80"
++ y="760"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ >BackupView</text>
++ <rectangle name="Fig28.3"
++ x="81"
++ y="762"
++ width="524"
++ height="2"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="255 200 200"
++ visibility="0"
++ />
++ <text name="Fig28.4"
++ x="80"
++ y="780"
++ fill="1"
++ fillcolor="255 200 200"
++ stroke="1"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ></text>
++ </group>
++ <group name="Fig29"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[128, 856, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig28"
++ </private>
++
++ <rectangle name="Fig29.0"
++ x="128"
++ y="856"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="0 255 255"
++ />
++ <group name="Fig29.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[128, 856, 90, 2]"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000955"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig29.1.0"
++ x="128"
++ y="856"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig29.2"
++ x="128"
++ y="858"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Serializer</text>
++ <group name="Fig29.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[129, 900, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig29.3.0"
++ x="129"
++ y="900"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig29.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="129"
++ y="900" />
++ <lineto x="218"
++ y="900" />
++ </path>
++ </group>
++ <group name="Fig29.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[129, 879, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig29.4.0"
++ x="129"
++ y="879"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig29.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="129"
++ y="879" />
++ <lineto x="218"
++ y="879" />
++ </path>
++ </group>
++ <rectangle name="Fig29.5"
++ x="128"
++ y="856"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig30"
++ description="org.argouml.uml.diagram.static_structure.ui.FigClass[304, 856, 90, 64]pathVisible=false;operationsVisible=true;attributesVisible=true"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig28"
++ </private>
++
++ <rectangle name="Fig30.0"
++ x="304"
++ y="856"
++ width="90"
++ height="64"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="0 255 255"
++ />
++ <group name="Fig30.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[304, 856, 90, 2]"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000957"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig30.1.0"
++ x="304"
++ y="856"
++ width="90"
++ height="2"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <text name="Fig30.2"
++ x="304"
++ y="858"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >Unserializer</text>
++ <group name="Fig30.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[305, 900, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig30.3.0"
++ x="305"
++ y="900"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig30.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="305"
++ y="900" />
++ <lineto x="394"
++ y="900" />
++ </path>
++ </group>
++ <group name="Fig30.4"
++ description="org.argouml.uml.diagram.ui.FigAttributesCompartment[305, 879, 89, 20]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig30.4.0"
++ x="305"
++ y="879"
++ width="89"
++ height="20"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig30.4.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="305"
++ y="879" />
++ <lineto x="394"
++ y="879" />
++ </path>
++ </group>
++ <rectangle name="Fig30.5"
++ x="304"
++ y="856"
++ width="90"
++ height="64"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig31"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000972"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig29.0"
++ destPortFig="Fig1.0"
++ sourceFigNode="Fig29"
++ destFigNode="Fig1"
++ </private>
++ <path name="Fig31.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="136"
++ y="856" />
++ <lineto x="136"
++ y="504" />
++ </path>
++ </group>
++ <group name="Fig32"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000979"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig2.0"
++ destPortFig="Fig29.0"
++ sourceFigNode="Fig2"
++ destFigNode="Fig29"
++ </private>
++ <path name="Fig32.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="376"
++ y="504" />
++ <lineto x="376"
++ y="552" />
++ <lineto x="144"
++ y="552" />
++ <lineto x="144"
++ y="856" />
++ </path>
++ </group>
++ <group name="Fig33"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000980"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig3.0"
++ destPortFig="Fig29.0"
++ sourceFigNode="Fig3"
++ destFigNode="Fig29"
++ </private>
++ <path name="Fig33.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="544"
++ y="496" />
++ <lineto x="512"
++ y="496" />
++ <lineto x="512"
++ y="560" />
++ <lineto x="152"
++ y="560" />
++ <lineto x="152"
++ y="856" />
++ </path>
++ </group>
++ <group name="Fig34"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:0000000000000996"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig30.0"
++ destPortFig="Fig2.0"
++ sourceFigNode="Fig30"
++ destFigNode="Fig2"
++ </private>
++ <path name="Fig34.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="328"
++ y="856" />
++ <lineto x="328"
++ y="808" />
++ <lineto x="296"
++ y="808" />
++ <lineto x="296"
++ y="520" />
++ <lineto x="344"
++ y="520" />
++ <lineto x="344"
++ y="504" />
++ </path>
++ </group>
++ <group name="Fig35"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:000000000000099D"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig30.0"
++ destPortFig="Fig3.0"
++ sourceFigNode="Fig30"
++ destFigNode="Fig3"
++ </private>
++ <path name="Fig35.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="336"
++ y="856" />
++ <lineto x="336"
++ y="800" />
++ <lineto x="304"
++ y="800" />
++ <lineto x="304"
++ y="584" />
++ <lineto x="608"
++ y="584" />
++ <lineto x="608"
++ y="504" />
++ </path>
++ </group>
++ <group name="Fig36"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009A4"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig1.0"
++ destPortFig="Fig30.0"
++ sourceFigNode="Fig1"
++ destFigNode="Fig30"
++ </private>
++ <path name="Fig36.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="248"
++ y="504" />
++ <lineto x="248"
++ y="520" />
++ <lineto x="288"
++ y="520" />
++ <lineto x="288"
++ y="816" />
++ <lineto x="320"
++ y="816" />
++ <lineto x="320"
++ y="856" />
++ </path>
++ </group>
++ <group name="Fig37"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009B8"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig14.0"
++ destPortFig="Fig3.0"
++ sourceFigNode="Fig14"
++ destFigNode="Fig3"
++ </private>
++ <path name="Fig37.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="896"
++ y="464" />
++ <lineto x="720"
++ y="464" />
++ <lineto x="720"
++ y="416" />
++ <lineto x="648"
++ y="416" />
++ <lineto x="648"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig38"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009BF"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig14.0"
++ destPortFig="Fig2.0"
++ sourceFigNode="Fig14"
++ destFigNode="Fig2"
++ </private>
++ <path name="Fig38.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="896"
++ y="456" />
++ <lineto x="728"
++ y="456" />
++ <lineto x="728"
++ y="408" />
++ <lineto x="400"
++ y="408" />
++ <lineto x="400"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig39"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009C8"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig14.0"
++ destPortFig="Fig1.0"
++ sourceFigNode="Fig14"
++ destFigNode="Fig1"
++ </private>
++ <path name="Fig39.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="896"
++ y="448" />
++ <lineto x="736"
++ y="448" />
++ <lineto x="736"
++ y="400" />
++ <lineto x="184"
++ y="400" />
++ <lineto x="184"
++ y="440" />
++ </path>
++ </group>
++ <group name="Fig40"
++ description="org.argouml.uml.diagram.ui.FigAssociation"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009DC"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig3.0"
++ destPortFig="Fig3"
++ sourceFigNode="Fig3"
++ destFigNode="Fig3"
++ </private>
++ <path name="Fig40.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="696"
++ y="496" />
++ <lineto x="768"
++ y="496" />
++ <lineto x="768"
++ y="584" />
++ <lineto x="664"
++ y="584" />
++ <lineto x="664"
++ y="504" />
++ </path>
++ </group>
++ <group name="Fig41"
++ description="org.argouml.uml.diagram.static_structure.ui.FigInterface[560, 632, 107, 60]pathVisible=false;operationsVisible=true"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E5"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ enclosingFig="Fig0"
++ </private>
++
++ <rectangle name="Fig41.0"
++ x="560"
++ y="632"
++ width="107"
++ height="60"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="0 255 255"
++ />
++ <group name="Fig41.1"
++ description="org.argouml.uml.diagram.ui.FigStereotypesCompartment[560, 632, 107, 15]"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E5"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig41.1.0"
++ x="560"
++ y="632"
++ width="107"
++ height="15"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ <text name="Fig41.1.1"
++ x="561"
++ y="633"
++ fill="0"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ font="Dialog"
++ textsize="10"
++ ><<interface>></text>
++ </group>
++ <text name="Fig41.2"
++ x="560"
++ y="647"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="red"
++ font="Dialog"
++ textsize="10"
++ >IMediaItemObserver</text>
++ <group name="Fig41.3"
++ description="org.argouml.uml.diagram.ui.FigOperationsCompartment[561, 668, 106, 23]"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ >
++ <private>
++ </private>
++
++ <rectangle name="Fig41.3.0"
++ x="561"
++ y="668"
++ width="106"
++ height="23"
++ fill="1"
++ fillcolor="white"
++ stroke="0"
++ strokecolor="black"
++ />
++ <path name="Fig41.3.1"
++ description="org.argouml.uml.diagram.ui.FigFeaturesCompartment$FigSeperator"
++ fill="1"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="561"
++ y="668" />
++ <lineto x="667"
++ y="668" />
++ </path>
++ </group>
++ <rectangle name="Fig41.4"
++ x="560"
++ y="632"
++ width="107"
++ height="60"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ />
++ </group>
++ <group name="Fig42"
++ description="org.argouml.uml.diagram.ui.FigRealization"
++ href="10-0-1-2-2007e52b:1118f7e9684:-8000:00000000000009E9"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig14.0"
++ destPortFig="Fig41.0"
++ sourceFigNode="Fig14"
++ destFigNode="Fig41"
++ </private>
++ <path name="Fig42.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="920"
++ y="497" />
++ <lineto x="920"
++ y="640" />
++ <lineto x="667"
++ y="640" />
++ </path>
++ </group>
++ <group name="Fig43"
++ description="org.argouml.uml.diagram.static_structure.ui.FigEdgeNote"
++ stroke="1"
++ strokecolor="black"
++ >
++ <private>
++ sourcePortFig="Fig27.0"
++ destPortFig="Fig42.2.0"
++ sourceFigNode="Fig27"
++ destFigNode="Fig42.2"
++ </private>
++ <path name="Fig43.0"
++ description="org.tigris.gef.presentation.FigPoly"
++ fill="0"
++ fillcolor="white"
++ stroke="1"
++ strokecolor="black"
++ >
++ <moveto x="872"
++ y="672" />
++ <lineto x="865"
++ y="641" />
++ </path>
++ </group>
++</pgml>
++<pgml description="org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram|10-0-1-2-529699b9:1117f3aa477:-8000:000000000000077B"
++ name="Use Case Diagram 1"
++>
++</pgml>
++<todo>
++<todolist>
++</todolist>
++<resolvedcritics>
++</resolvedcritics>
++</todo>
++</uml>
--- /dev/null
--- /dev/null
++====================
++Telemeta - Maquettes
++====================
++
++En prévision de Telemeta 1.0, deux maquettes graphiques (bitmaps) sont
++nécessaires pour présenter l'orientation visuelle et la faire valider
++par client final.
++
++Dans le cas où une première proposition ne conviendrait pas au client
++il peut être nécessaire d'avoir à en faire une seconde. Il faut donc
++prévoir deux propositions graphiques (2 x 2 maquettes).
++
++Page d'accueil
++--------------
++
++Dans le prototype, Telemeta 0.4, il n'y a pas encore de page d'accueil,
++car on s'est concentré sur des détails fonctionnels dans un premier
++temps.
++
++Cependant, avec la mise en production, la page d'accueil devient
++importante, même si Telemeta n'est pas un site internet, il faut que
++son interface soit attractive au premier abord.
++
++Ce que nous avons prévu en page d'accueil :
++
++ * La page est charpentée de façon similaire à Telemeta 0.4 : logo, menu
++ horizontal (avec champ de recherche intégré au menu et à gauche),
++ pied de page
++
++ * Le corps de la page contient :
++
++ * un texte d'introduction avec une (ou éventuellement) plusieurs photos,
++ éditables par les administrateurs
++
++ * Une petite mappemonde google map, qui est un lien vers l'affichage du
++ navigateur géographique
++
++ * Un bloc de news reprenant les dernière modifications de la base de données
++
++ * Un petit lecteur multimédia TimeSide pour la sélection musicale du mois
++
++
++Page intérieure
++---------------
++
++Pour la page intérieure, il suffit de décliner le formulaire d'édition
++d'item avec une nouvelle charte graphique. La structure de la page
++apparaît bien sur la maquette suivante :
++
++http://telemeta.org/browser/trunk/design/maquette_v0.4_item_edit_2.png
++
++La charte graphique doit cependant évoluer. Par ailleurs, sur cette
++page de formulaire, il faut faire apparaître le lecteur multimédia
++TimeSide avec marqueurs, comme vu ici :
++
++http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
--- /dev/null
--- /dev/null
++
++==================
++Telemeta - Widgets
++==================
++
++.. contents:: Table des matières
++
++Introduction
++============
++
++Le présent document décrit les différents widgets prévus pour composer
++l'interface utilisateur de Telemeta. Il est destiné à permettre la
++conception HTML+CSS de ces widgets, dans un premier temps sous une forme
++purement statique (galerie de widgets).
++
++Chaque widget est associé à une classe CSS principale. Un travail sur
++l'interface a par ailleurs déjà été effectué, si bien que pour un
++certain nombre de ces widgets il existe une référence (ref) donnant un
++aperçu. Les descriptions ci-dessous priment cependant sur ces références
++qui ont pour seul but d'illustrer les premières.
++
++Définitions
++===========
++
++Ressources :
++ les ressources sont les structures de données centrales dans Telemeta,
++ telles que les collection ou les items.
++
++Données CREM prioritaires :
++ certaines données ont été identifiées comme prioritaires. Au niveau
++ graphique elles peuvent être celles qui sont assorties d'un petit
++ icône. Il s'agit de :
++
++ - la cote (code alpha-numérique identifiant une ressource)
++ - le titre
++ - la zone géographique
++ - le nom du collecteur, c'est à dire le chercheur qui a collecté cet (ces)
++ enregistrement(s)
++ - les instruments de musique utilisés
++ - l'année/date d'enregistrement
++ - l'ethnie / le contexte ethnographique
++
++Widgets
++=======
++
++Tableau de ressources
++~~~~~~~~~~~~~~~~~~~~~
++
++:classe: resource-table
++:ref: http://crem.telemeta.org/items
++
++Les tableaux de ressources listent des collections ou des items, soit leur
++totalité, soit un résultat de recherche, etc...
++
++Ces tableaux peuvent avoir un nombre indéterminé de colonnes et de lignes,
++mais possèdent toujours des en-têtes de colonnes.
++
++Les lignes impaires doivent être différenciées, ainsi que les lignes
++survolées par la souris.
++
++Une ou plusieurs colonnes sont généralement mises en évidence (titre,
++etc..).
++
++Chaque ligne est cliquable dans son intégralité, les cellules contenant
++donc toutes un lien qui ne change pas d'apparence après avoir été visité.
++
++Il peut y avoir une ou plusieurs colonnes contenant des icônes cliquables.
++
++Les en-têtes de colonnes sont cliquables et permettent de trier le tableau,
++elles doivent donc pouvoir comporter un indicateur (flèche) de tri.
++
++L'impression de ces tableaux est importante et peut donc nécessiter des
++règles CSS print spécifiques.
++
++Liste de ressources
++~~~~~~~~~~~~~~~~~~~
++
++:classe: resource-list
++
++Les listes de ressources présentent le même type d'information que les
++tableaux de ressources mais avec possiblement plus de détails. Elles
++ressemblent aux résultat de recherche Google, c'est à dire des blocs
++d'information successifs, avec un titre bien mis en évidence et cliquable.
++
++En plus du titre peut apparaître une description, ainsi qu'une ou plusieurs
++propriétés (données CREM prioritaires uniquement). Les propriétés
++doivent s'afficher de façon différenciée de la description, et être
++soient en dessous, soit au dessus (à choisir au moment de la conception
++du widget). Elles peuvent être assorties d'un icône (à voir).
++
++Au dessus de la liste, un champ déroulant permet de sélectionner une
++méthode de tri.
++
++Menu principal
++~~~~~~~~~~~~~~
++
++:classe: main-menu
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++
++Le menu principal est horizontal et contient un certain nombre d'items
++texte cliquable. Il n'y a pas de listes déroulantes.
++
++Un champ de recherche rapide est intégré dans ce menu, sur la gauche.
++
++Sous-menu
++~~~~~~~~~
++
++:classe: sub-menu
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++
++Le sous-menu est horizontal et apparaît à droite. Il permet notamment
++de changer le mode d'affichage, par exemple de passer d'un tableau de
++ressources à la liste de ressources correspondante, ou encore de passer à
++la vue dublin core ou à l'édition d'un item lorsqu'on le visualise, etc...
++
++Il peut contenir d'une part des liens texte simples, et d'autre part
++(en dessous) un ou plusieurs boutons (Edit, etc..)
++
++Titre de page
++~~~~~~~~~~~~~
++
++:classe: main-title
++:ref: http://crem.telemeta.org/items/BM.000.003.001--04__01-01/
++
++Le titre de page est par exemple le titre de collection lors de la
++visualisation d'une collection, ou encore "Geographic Navigator" lors
++qu'on est dans le navigateur géographique, "Recherche", etc...
++
++Le titre peut éventuellement être assorti d'un icône (à décider au
++moment de la conception du widget). Dans le cas où l'icône est différent
++suivant le type de page, prévoir un maximum de 10 icônes.
++
++Bloc de propriétés
++~~~~~~~~~~~~~~~~~~
++
++:classe: property-block
++:ref: http://crem.telemeta.org/items/BM.000.010.001__01-ii
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_edit_2.png
++
++Sur la page d'une ressource, apparaissent un certain nombre de blocs
++groupant des propriétés. A l'exception du premier bloc, ces blocs
++possèdent un titre et contiennent une liste de propriété qui peut
++être replié.
++
++Les titres de blocs et/ou propriétés peuvent être assortis d'un petit
++icône. Notamment pour les types de données prioritaires CREM. D'autres
++icônes peuvent s'avérer nécessaire. Il y en aura en tout au maximum 15.
++
++Outre l'affichage, ces blocs peuvent servir à l'édition et à la recherche,
++contenant alors des champs d'entrée. Cependant, pour différencier les
++trois contextes (affichage, édition, recherche) il faut une variante
++graphique, par exemple un titre de bloc de couleur différente.
++
++Par ailleurs, les propriétés d'un bloc sont susceptibles de s'afficher
++sur une ou deux colonnes de largeur variable.
++
++En plus de l'affichage de propriétés de façon horizontal (titre à
++gauche, valeur à droite), des tableaux de propriétés sont aussi prévus,
++notamment pour les formations musicales.
++
++L'impression de ces blocs est importante et peut donc nécessiter des
++règles CSS print spécifiques.
++
++Formulaire de propriétés
++~~~~~~~~~~~~~~~~~~~~~~~~
++
++:classe: property-form
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_edit_2.png
++
++Ce widget pouvant être utilisé pour l'édition comme pour la recherche
++contient un certain nombre de blocs de propriétés. Les champs d'entrée
++peuvent être de 4 types:
++
++ * champ texte (input)
++ * champ texte multi-ligne (textarea)
++ * liste simple (select)
++ * liste arborescente
++
++Les champs texte peuvent utiliser la complétion, c'est à dire faire
++apparaître une liste d'éléments automatiquement au cours de la frappe.
++
++La liste arborescente est destinée à sélectionner des éléments dans
++un thésaurus (instruments, lieux, ..). C'est un menu déroulant avec un
++nombre indéterminé de niveaux. Il est possible d'être plus ou moins
++précis dans la sélection, c'est à dire qu'il n'est pas nécessaire
++d'aller jusqu'au dernier niveau pour effectuer une sélection. Par exemple
++on peut vouloir chercher les collections enregistrées en France, ou plus
++précisément en Ile-de-France, ou encore Paris, etc...
++
++Pour cette raison, le premier item de chaque niveau doit être différencié
++et servir à sélectionner l'ensemble des éléments de ce niveau (ex:
++France > [France : Tout], Bretagne, Ile de France, etc...)
++
++Dans les blocs de propriétés, comme pour l'affichage, ces champs d'entrée
++apparaissent généralement avec un label sur la gauche, mais peuvent
++aussi apparaître sous forme de tableau de propriétés. Dans ce dernier
++cas, il doit être possible d'ajouter et supprimer des lignes.
++
++Historique de modifications
++~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++:classe: history
++
++Telemeta conserve un historique des modifications de chaque ressource. Une
++liste affichant cette historique est donc prévue avec pour chaque entrée :
++le type de modification (création, modification, ..), la date, et le nom
++de l'utilisateur.
++
++Il y a cependant deux formes d'historique : l'une pour une ressource donnée,
++l'autre pour différentes ressources (dernières modifications sur toute
++la base, ou sur les items d'Afrique, etc...). Dans ce dernier cas, chaque
++entrée doit donc comporter le type et le titre de la ressource.
++
++Cet historique est destiné à s'afficher en pleine page.
++
++News
++~~~~
++
++:classe: news
++
++Les news dans Telemeta sont généralement des historiques de modifications
++compacts, destinés à occuper un espace restreint sur la page. C'est une
++boîte de news, avec un titre, des boutons RSS et ATOM. Y figurent titre,
++date et (dans la majorité des cas, c'est à dire l'affichage d'historiques
++compacts) le type de modification (création, modification, ..)
++
++Graphiquement, il faut vraiment les traiter comme des news, et donc utiliser
++un (ou des) icône(s) spécifiques.
++
++Enumeration
++~~~~~~~~~~~
++
++:classe: enumeration
++:ref: http://crem.telemeta.org/admin/enumerations/physicalformat/
++
++Ce widget composite est principalement destinée à la partie administration
++du site. Dans Telemeta il y a un certain nombre d'énumérations, c'est
++à dire de listes plates de valeurs. Par exemple la liste des ethnie.
++
++L'administrateur doit pouvoir consulter, ajouter, modifier et supprimer
++des valeurs d'une énumération.
++
++Pour ce faire, un tableau simple est prévu. Chaque ligne peut figurer un
++ou plusieurs des icônes suivants : édition, suppression, et alias. Dans
++certaines situations des éléments de l'énumération peuvent être
++en lecture seule et soit ne figurer aucun icônes, soit des icônes
++désactivés.
++
++Un bouton ajout (pour ajouter une valeur à la liste) est également
++nécessaire.
++
++Ce système d'édition d'énumération doit aussi permettre d'éditer des
++structures de données plus complexes tels que les thesaurus. Pour cela,
++un fil d'ariane peut optionnellement s'afficher au dessus de la liste, pour
++indiquer à quel niveau se trouve l'énumération en cours d'édition et
++permettre de revenir à l'un des niveaux supérieurs.
++
++L'ajout ou de la modification d'un item se font dans une popup DHTML
++figurant un champ texte simple (+ label et barre de titre de popup).
++
++Pagination
++~~~~~~~~~~
++
++:classe: pager
++:ref: http://crem.telemeta.org/items/
++
++Un certain nombre de listes peuvent nécessiter une pagination (listes et
++tableaux de ressources, énumérations, etc...)
++
++Ce widget doit donc permettre de passer à la page suivante, précédente
++ou à l'une des pages intermédiaires.
++
++Une attention particulière doit être apportée à l'ergonomie de ce widget.
++
++Il peut apparaître au dessus et/ou en dessous des listes.
++
++Informations de connexion
++~~~~~~~~~~~~~~~~~~~~~~~~~
++
++:classe: login-info
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++
++Ce petit widget apparaît en haut à droite et permet de se connecter. Il
++figure donc un bouton "Se connecter", puis une fois connecté : "Connecté
++: <nom>", éventuellement assorti d'un picto. Un lien "préférences"
++apparaît également.
++
++Pied de page
++~~~~~~~~~~~~
++
++:classe: footer
++:ref: http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++:ref: http://crem.telemeta.org/
++
++Le pied de page figure le logo Telemeta, des informations concernant les auteurs
++et sponsors, ainsi qu'un lien vers la page officielle du projet Telemeta.
++
++Lecteur multimédia
++~~~~~~~~~~~~~~~~~~
++
++:classe: media-player
++
++Ce widget complexe et principalement destiné à l'audio dans un premier
++temps est en cours de développement dans le projet externe TimeSide.
++
++Sa structure HTML dynamique est documentée à l'URL suivant:
++http://code.google.com/p/timeside/wiki/UiGuide#Markup_structure
++
++Ce lecteur est "skinable". A l'heure actuelle, dans Telemeta c'est la skin
++"lab" qui est utilisée:
++http://svn.samalyse.com/timeside/tags/release-0.1/skins/lab/style.css
++
++Elle est cependant modifiée pour Telemeta par la surcharge de certaines
++classes CSS:
++http://telemeta.org/browser/trunk/telemeta/htdocs/css/player.css
++
++Outre la visualisation de la forme d'onde, l'affichage de marqueurs sous
++forme de lignes verticales ainsi que les boutons de contrôles de la lecture,
++sont aussi prévus :
++
++ * un mode playlist, pour pouvoir écouter chaque item, depuis une page de
++ collection. Ceci est actuellement implémenté à l'aide d'un lecteur
++ alternatif qui a vocation a être remplacé par Timeside. Voir:
++ http://crem.telemeta.org/collections/DI.005.005.040/
++ * une liste de marqueurs éditables, apparaissant sous le lecteur. Voir:
++ http://telemeta.org/browser/trunk/design/maquette_v0.4_item_view_2.png
++
++La conception de ce widget, plus complexe, peut faire l'objet d'un maquettage
++jpeg simple, qui sera ensuite répercuté au cours du développement. Il
++n'est pas à priori pas nécessaire de faire figurer ce widget dans la
++galerie de widgets.
++
--- /dev/null
--- /dev/null
++<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
++<HTML
++><HEAD
++><TITLE
++>telemeta</TITLE
++><META
++NAME="GENERATOR"
++CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
++><BODY
++CLASS="REFENTRY"
++BGCOLOR="#FFFFFF"
++TEXT="#000000"
++LINK="#0000FF"
++VLINK="#840084"
++ALINK="#0000FF"
++><H1
++><A
++NAME="AEN1"
++></A
++>telemeta</H1
++><DIV
++CLASS="REFNAMEDIV"
++><A
++NAME="AEN15"
++></A
++><H2
++>Name</H2
++>telemeta -- backups, transcodes, tags and marks any audio content with metadata</DIV
++><DIV
++CLASS="REFSYNOPSISDIV"
++><A
++NAME="AEN18"
++></A
++><H2
++>Synopsis</H2
++><P
++><B
++CLASS="COMMAND"
++>telemeta</B
++> [<CODE
++CLASS="OPTION"
++><TT
++CLASS="REPLACEABLE"
++><I
++>OPTIONS</I
++></TT
++></CODE
++>] [<TT
++CLASS="REPLACEABLE"
++><I
++>COLLECTION</I
++></TT
++>] [<CODE
++CLASS="OPTION"
++><TT
++CLASS="REPLACEABLE"
++><I
++>OPTIONS</I
++></TT
++></CODE
++>] [<CODE
++CLASS="OPTION"
++><TT
++CLASS="REPLACEABLE"
++><I
++>MEDIA</I
++></TT
++></CODE
++>]</P
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN32"
++></A
++><H2
++>DESCRIPTION</H2
++><P
++><B
++CLASS="COMMAND"
++>telemeta</B
++> is an audio tool which creates audio transcoded collections fast from fresh mastered files. It can be useful to backup digitalized audio media from vinyls, old tapes or whatever and include them in a database.</P
++><P
++>Telemeta first creates a simple file structure where the original sounds will be backuped. The files can be transcoded to WAV, FLAC, MP3 and OGG including the corresponding tags.</P
++><P
++>Here are some cool functions:</P
++><P
++></P
++><DIV
++CLASS="VARIABLELIST"
++><DL
++><DT
++><CODE
++CLASS="OPTION"
++></CODE
++></DT
++><DD
++><P
++>- XML generation for metadata tags of backuped WAV</P
++><P
++>- Audio marking from a given file or from tags thanks to the Festival speech systhesis tool</P
++><P
++>- File corruption security with par2 recovery files</P
++><P
++>- Collection synchronizing to remote servers (ssh+rsync)</P
++><P
++>- Modify metadata from XML or interactive shell</P
++></DD
++></DL
++></DIV
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN48"
++></A
++><H2
++>OPTIONS</H2
++><P
++>These programs follow the usual <ACRONYM
++CLASS="ACRONYM"
++>GNU</ACRONYM
++> command line syntax,
++ with long options starting with two dashes (`-'). A summary of
++ options is included below. For a complete description, see the
++ <SPAN
++CLASS="APPLICATION"
++>Info</SPAN
++> files.</P
++><P
++></P
++><DIV
++CLASS="VARIABLELIST"
++><DL
++><DT
++><CODE
++CLASS="OPTION"
++>--create</CODE
++></DT
++><DD
++><P
++>creates a collection repository</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--backup</CODE
++></DT
++><DD
++><P
++>backups and transcodes wave files to a collection</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--album</CODE
++></DT
++><DD
++><P
++>proccesses an entire directory (one shot album)</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--backup</CODE
++></DT
++><DD
++><P
++>backups a media to the collection</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--from-xml</CODE
++></DT
++><DD
++><P
++>takes tags and opts in original xml source</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--force</CODE
++></DT
++><DD
++><P
++>forces file conversion (no audio test)</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--par2</CODE
++></DT
++><DD
++><P
++>forces par2 security file creation</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--all-default</CODE
++></DT
++><DD
++><P
++>chooses default argument for all question</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--recover</CODE
++></DT
++><DD
++><P
++>check an repair the backuped media with the previously created "par2" security files</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--rsync</CODE
++></DT
++><DD
++><P
++>synchronizes collection to a remote server (ssh+rsync)</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--erase</CODE
++></DT
++><DD
++><P
++>erases a collection (flac, ogg, mp3 only !)</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--help</CODE
++></DT
++><DD
++><P
++>Show summary of options.</P
++></DD
++><DT
++><CODE
++CLASS="OPTION"
++>--version</CODE
++></DT
++><DD
++><P
++>Show version of program.</P
++></DD
++></DL
++></DIV
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN119"
++></A
++><H2
++>EXAMPLES</H2
++><P
++><B
++CLASS="COMMAND"
++>telemeta --create my_collection</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>telemeta --backup my_collection file.wav</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>telemeta --backup my_collection --album /path/to/directory/</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>telemeta --backup my_collection --album --par2 --rsync /path/to/directory/</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>telemeta --backup my_collection --album --par2 --rsync --force /path/to/directory/</B
++></P
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN131"
++></A
++><H2
++>DOWNLOAD</H2
++><P
++>Telemeta is written in python. So it doesn't require any compilation step.</P
++><P
++>On Debian or Ubuntu just add these lines to your /etc/apt/sources-list:</P
++><P
++><B
++CLASS="COMMAND"
++>deb http://yomix.org/debian/ binary/</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>deb-src http://yomix.org/debian/ source/</B
++></P
++><P
++>Then,</P
++><P
++><B
++CLASS="COMMAND"
++>sudo apt-get update</B
++></P
++><P
++><B
++CLASS="COMMAND"
++>sudo apt-get install telemeta</B
++></P
++><P
++>On other linux platforms, <A
++HREF="http://yomix.org/telemeta/download/"
++TARGET="_top"
++>download</A
++> the lastest .tar.gz archive, uncompress it, go into the created directory and just type this with your favorite shell :</P
++><P
++><B
++CLASS="COMMAND"
++>python install.py</B
++></P
++><P
++>See README and INSTALL file for more informations.</P
++><P
++>You can also get the lastest version of Telemeta with subversion (just type 'enter' for the password:</P
++><P
++>svn co http://svn.yomix.org/svn/telemeta/trunk telemeta --username=anonymous</P
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN151"
++></A
++><H2
++>DEPENDS</H2
++><P
++>python (>= 2.3.5-7), python-xml, python-central (>= 0.5), python-mutagen, sox, vorbis-tools, flac, lame, normalize-audio, ecasound, festival, par2</P
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN154"
++></A
++><H2
++>SEE ALSO</H2
++><P
++>The program is documented fully by Guillaume Pellerin. More info at <I
++CLASS="CITETITLE"
++><A
++HREF="http://svn.yomix.org/telemeta/"
++TARGET="_top"
++>http://svn.yomix.org/telemeta/</A
++></I
++>.</P
++></DIV
++><DIV
++CLASS="REFSECT1"
++><A
++NAME="AEN159"
++></A
++><H2
++>AUTHOR</H2
++><P
++>This manual page was written by Guillaume Pellerin <<CODE
++CLASS="EMAIL"
++><<A
++HREF="mailto:yomguy@altern.org"
++>yomguy@altern.org</A
++>></CODE
++>> for
++ the <SPAN
++CLASS="PRODUCTNAME"
++>Debian</SPAN
++> system (but may be used by others). Permission is
++ granted to copy, distribute and/or modify this document under
++ the terms of the <ACRONYM
++CLASS="ACRONYM"
++>GNU</ACRONYM
++> General Public License, Version 2 any
++ later version published by the Free Software Foundation.
++ </P
++><P
++> On Debian systems, the complete text of the GNU General Public
++ License can be found in /usr/share/common-licenses/GPL.
++ </P
++></DIV
++></BODY
++></HTML
++>
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++from distutils.core import setup
++from distutils.command.install import INSTALL_SCHEMES
++import os
++import sys
++
++def fullsplit(path, result=None):
++ """
++ Split a pathname into components (the opposite of os.path.join) in a
++ platform-neutral way.
++ """
++ if result is None:
++ result = []
++ head, tail = os.path.split(path)
++ if head == '':
++ return [tail] + result
++ if head == path:
++ return result
++ return fullsplit(head, [tail] + result)
++
++# Tell distutils to put the data_files in platform-specific installation
++# locations. See here for an explanation:
++# http://groups.google.com/group/comp.lang.python/browse_thread/thread/35ec7b2fed36eaec/2105ee4d9e8042cb
++for scheme in INSTALL_SCHEMES.values():
++ scheme['data'] = scheme['purelib']
++
++# Compile the list of packages available, because distutils doesn't have
++# an easy way to do this.
++packages, data_files = [], []
++root_dir = os.path.dirname(__file__)
++if root_dir != '':
++ os.chdir(root_dir)
++telemeta_dir = 'telemeta'
++
++for dirpath, dirnames, filenames in os.walk(telemeta_dir):
++ # Ignore dirnames that start with '.'
++ for i, dirname in enumerate(dirnames):
++ if dirname.startswith('.'): del dirnames[i]
++ if '__init__.py' in filenames:
++ packages.append('.'.join(fullsplit(dirpath)))
++ elif filenames:
++ data_files.append([dirpath, [os.path.join(dirpath, f) for f in filenames]])
++
++# Dynamically calculate the version based on telemeta.VERSION.
++version = __import__('telemeta').__version__
++
++setup(
++ name = "telemeta",
++ url = "/http://svn.parisson.org/telemeta",
++ description = "web frontend to backup, transcode and tag any audio content with metadata",
++ author = ["Guillaume Pellerin, Olivier Guilyardi"],
++ author_email = ["pellerin@parisson.com","olivier@samalyse.com"],
++ version = version,
++ packages = packages,
++ data_files = data_files,
++ long_description = """
++Telemeta is a web audio archiving program which introduces useful and secure methods to
++backup, index, transcode, analyse and publish any digitalized audio file with its metadata.
++It is dedicated to professionnals who wants to easily backup and publish documented sounds
++from collections of vinyls, magnetic tapes or audio CDs over a strong database, in accordance
++with open standards.
++
++Here are the main features of Telemeta:
++
++ * Secure archiving, editing and publishing of audio files over internet.
++ * User friendly web frontend including workflows and high level search methods
++ * Smart dynamical and skinnable audio player (thanks to Timeside and soundmanager2)
++ * "On the fly" analyzing, transcoding and metadata embedding based on an easy plugin architecture
++ * Multi-format support : FLAC, OGG, MP3, WAV and more
++ * GEO Navigator for audio geolocalization
++ * DublinCore compatibility
++ * OAI-PMH data provider
++ * XML serialized backup
++ * Strong SQL backend
++
++The Telemeta data model is based on 'collections' and 'items'. A collection is described
++by its metadata and includes original audio items (sounds) and its own metadata. This
++existing model has been designed to fit the one of the French Centre of Etnomusicology (CREM)
++but could be easily adapted/overrided to sue other data structures.
++
++See http://telemeta.org for more informations.
++"""
++)
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++
++"""
++Telemeta
++
++U{http://telemeta.org}
++
++@author: Guillaume Pellerin <pellerin@parisson.com>
++@author: Olivier Guilyardi <olivier@samalyse.com>
++@author: David Lipszyc <davidlipszyc@gmail.com>
++"""
++
++__docformat__ = 'epytext en'
++__version__ = '0.5.2'
++__url__ = 'http://telemeta.org'
++__copyright__ = '(C) 2007-2010 Parisson SARL and Samalyse SARL'
++__license__ = 'CeCILL-2'
++__license_long__ = """
++Copyright Parisson SARL (2010)
++
++<guillaume.<pellerin@parisson.com>
++<olivier@samalyse.com>
++
++This software is a computer program whose purpose is to backup, analyse,
++transcode and stream any audio content with its metadata.
++
++This software is governed by the CeCILL v2 license under French law and
++abiding by the rules of distribution of free software. You can use,
++modify and/ or redistribute the software under the terms of the CeCILL
++license as circulated by CEA, CNRS and INRIA at the following URL
++"http://www.cecill.info".
++
++As a counterpart to the access to the source code and rights to copy,
++modify and redistribute granted by the license, users are provided only
++with a limited warranty and the software's author, the holder of the
++economic rights, and the successive licensors have only limited
++liability.
++
++In this respect, the user's attention is drawn to the risks associated
++with loading, using, modifying and/or developing or reproducing the
++software by the user in light of its specific status of free software,
++that may mean that it is complicated to manipulate, and that also
++therefore means that it is reserved for developers and experienced
++professionals having in-depth computer knowledge. Users are therefore
++encouraged to load and test the software's suitability as regards their
++requirements in conditions enabling the security of their systems and/or
++data to be ensured and, more generally, to use and operate it in the
++same conditions as regards security.
++
++The fact that you are presently reading this means that you have had
++knowledge of the CeCILL license and that you accept its terms.
++"""
++
++from models import *
++from util import *
++
++
--- /dev/null
--- /dev/null
++from telemeta.models.media import MediaCollection, MediaItem
++from django.contrib import admin
++
++admin.site.register(MediaCollection)
++admin.site.register(MediaItem)
++
--- /dev/null
--- /dev/null
++from telemeta.backup.core import CollectionSerializer
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++import os
++import libxml2
++from xml.dom.minidom import getDOMImplementation, Node
++import shutil
++import md5
++from django.conf import settings
++from telemeta.models import MediaItem
++
++class CollectionSerializer(object):
++ """Provide backup-related features"""
++
++ def __init__(self, collection):
++ self.collection = collection
++
++ def __get_file_md5(self, path):
++ "Compute the MD5 hash of a file (Python version of md5sum)"
++ file = open(path, "rb")
++ hash = md5.new()
++ while True:
++ buffer = file.read(0x10000)
++ if len(buffer) == 0:
++ break
++ hash.update(buffer)
++ file.close()
++ return hash.hexdigest()
++
++ def __get_media_filename(self, item):
++ return item.id + ".wav"
++
++ def store(self, dest_dir):
++ """Serialize and store the collection with related items and media
++ files into a subdirectory of the provided directory
++ """
++ coll_dir = dest_dir + "/" + self.collection.id
++ os.mkdir(coll_dir)
++
++ xml = self.get_xml()
++ file = open(coll_dir + "/collection.xml", "wb")
++ file.write(xml.encode("utf-8"))
++ file.close()
++
++ if self.collection.has_mediafile():
++ md5_file = open(coll_dir + "/MD5SUM", "wb")
++
++ items = self.collection.items.all()
++ for item in items:
++ if item.file:
++ dst_basename = self.__get_media_filename(item)
++ dst = coll_dir + "/" + dst_basename
++ shutil.copyfile(item.file.path, dst)
++ hash = self.__get_file_md5(dst)
++ md5_file.write(hash + " " + dst_basename + "\n")
++
++ md5_file.close()
++
++ def get_xml(self):
++ """Return a string containing the XML representation of the collection
++ and related items
++ """
++ impl = getDOMImplementation()
++ doc = impl.createDocument(None, "telemeta", None)
++ coll_doc = self.collection.to_dom()
++ coll_node = doc.documentElement.appendChild(coll_doc.documentElement)
++ coll_doc.unlink()
++ items_node_name = MediaItem.get_dom_element_name() + "List"
++ items_node = doc.createElement(items_node_name)
++ coll_node.appendChild(items_node)
++
++ items = self.collection.items.all()
++ for item in items:
++ if item.file:
++ item.file = self.__get_media_filename(item)
++ item_doc = item.to_dom()
++ items_node.appendChild(item_doc.documentElement)
++ item_doc.unlink()
++ doc.normalize()
++
++ # libxml2 has prettier output than xml.dom:
++ tree = libxml2.parseDoc(doc.toxml(encoding="utf-8"))
++ doc.unlink()
++ xml = unicode(tree.serialize(encoding="utf-8", format=1), "utf-8")
++ tree.free()
++
++ return xml
++
++
--- /dev/null
--- /dev/null
++#!/usr/bin/python
++# -*- coding: utf-8 -*-
++#
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++import os
++import sys
++import time
++from django.core.management import setup_environ
++
++def print_usage(toolname):
++ print "Usage: " + toolname + " <project_dir> <backup_dir>"
++ print " project_dir: the directory of the Django project which hosts Telemeta"
++ print " backup_dir: the destination backup folder (must exist)"
++
++def write_readme(dest_dir, coll_num):
++ readme = open(dest_dir + "/" + "README", "w")
++ timestr = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
++ readme.write("Telemeta Backup\n\n")
++ readme.write("- date: " + timestr + "\n")
++ readme.write("- number of collections: " + str(coll_num) + "\n\n")
++ readme.close()
++
++def backup(dest_dir):
++ from telemeta.models import MediaCollection
++ from telemeta.backup import CollectionSerializer
++
++ collections = MediaCollection.objects.order_by('id')
++ count = collections.count()
++
++ print "Writing README file..",
++ write_readme(dest_dir, count)
++ print "Done."
++
++ i = 0
++ for collection in collections:
++ if i % 100 == 0:
++ set_dir = dest_dir + ("/collections-%d-%d" % (i+1, i+100))
++ os.mkdir(set_dir)
++ i += 1
++ print "Processing collection %d/%d (%d%%) with id: %s.. " \
++ % (i, count, i*100/count, collection.id),
++ sys.stdout.flush()
++ serializer = CollectionSerializer(collection)
++ serializer.store(set_dir)
++ print "Done"
++
++def run():
++ if len(sys.argv) != 3:
++ print_usage(os.path.basename(sys.argv[0]))
++ sys.exit(1)
++ else:
++ project_dir = sys.argv[1]
++ backup_dir = sys.argv[2]
++ sys.path.append(project_dir)
++ import settings
++ setup_environ(settings)
++ backup(backup_dir)
++
++if __name__ == '__main__':
++ run()
--- /dev/null
--- /dev/null
++#!/usr/bin/python
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2010 Guillaume Pellerin
++# All rights reserved.
++#
++# This software is licensed as described in the file COPYING, which
++# you should have received as part of this distribution. The terms
++# are also available at http://svn.parisson.org/telemeta/TelemetaLicense.
++#
++# Author: Guillaume Pellerin <yomguy@parisson.com>
++#
++
++import os
++import sys
++import csv
++import logging
++import datetime
++from django.core.management import setup_environ
++from django.core.files.base import ContentFile
++
++class Logger:
++
++ def __init__(self, file):
++ self.logger = logging.getLogger('myapp')
++ self.hdlr = logging.FileHandler(file)
++ self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
++ self.hdlr.setFormatter(self.formatter)
++ self.logger.addHandler(self.hdlr)
++ self.logger.setLevel(logging.INFO)
++
++ def write_info(self, prefix, message):
++ self.logger.info(' ' + prefix + ' : ' + message.decode('utf8'))
++
++ def write_error(self, prefix, message):
++ self.logger.error(prefix + ' : ' + message.decode('utf8'))
++
++
++class TelemetaWavImport:
++
++ def __init__(self, source_dir, log_file):
++ self.logger = Logger(log_file)
++ self.source_dir = source_dir
++ self.collections = os.listdir(self.source_dir)
++ self.buffer_size = 0x1000
++
++ def wav_import(self):
++ from telemeta.models import media
++ for collection in self.collections:
++ self.collection_name = collection.split(os.sep)[-1]
++ msg = '************************ ' + collection + ' ******************************'
++ self.logger.write_info(collection, msg[:70])
++
++ collection_files = os.listdir(self.source_dir + os.sep + collection)
++ if not collection + '.csv' in collection_files:
++ msg = 'Le fichier CSV est mal nommé ou inexistant'
++ self.logger.write_error(collection, msg)
++ else:
++ c = csv.reader(open(self.source_dir + os.sep + collection + os.sep + collection + '.csv'), delimiter=';')
++ for row in c:
++ old_ref = row[0]
++ new_ref = row[1]
++ print old_ref + ' : ' + new_ref
++ filename = new_ref + '.wav'
++ wav_file = self.source_dir + os.sep + collection + os.sep + filename
++ items = media.MediaItem.objects.filter(old_code=old_ref)
++ if len(items) != 0:
++ item = items[0]
++ print item.old_code + ' : id = ' + str(item.id) + " : title = " + item.title
++ f = open(wav_file, 'r')
++ file_content = ContentFile(f.read())
++ item.file.save(filename, file_content)
++ f.close()
++ item.code = new_ref
++ item.save()
++ else:
++ msg = old_ref + ' : item inexistant dans la base de données !'
++ print msg
++ self.logger.write_error(collection, msg)
++
++
++def print_usage(tool_name):
++ print "Usage: "+tool_name+" <project_dir> <source_dir> <log_file>"
++ print " project_dir: the directory of the Django project which hosts Telemeta"
++ print " source_dir: the directory containing the wav files to include"
++ print " log_file: the log file of the import"
++
++def run():
++ if len(sys.argv) < 4:
++ print_usage(os.path.basename(sys.argv[0]))
++ sys.exit(1)
++ else:
++ project_dir = sys.argv[-3]
++ source_dir = sys.argv[-2]
++ log_file = sys.argv[-1]
++ sys.path.append(project_dir)
++ import settings
++ setup_environ(settings)
++ t = TelemetaWavImport(source_dir, log_file)
++ t.wav_import()
++
++if __name__ == '__main__':
++ run()
--- /dev/null
--- /dev/null
++from django.conf import settings
++
++def check():
++ """Perform general configuration verifications"""
++ if not len(settings.ADMINS):
++ raise ConfigurationError("The ADMINS configuration option must be set in settings.py.")
++
++class ConfigurationError(Exception):
++ pass
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2007 Samalyse SARL
++# All rights reserved.
++#
++# This software is licensed as described in the file COPYING, which
++# you should have received as part of this distribution.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++__all__ = ['TelemetaError']
++
++
++class TelemetaError(Exception):
++ """Exception base class for errors in Telemeta."""
++ # FIXME: is this redundant with Django's error handling ?
++
++# def __init__(self, message, title=None, show_traceback=False):
++# Exception.__init__(self, message)
++# self.message = message
++# self.title = title
++# self.show_traceback = show_traceback
++
--- /dev/null
--- /dev/null
++/* Shamelessly stolen from trac's admin.css... */\r
++\r
++.tabs {\r
++ border: 1px solid black;\r
++ border-color: gray black black gray;\r
++ margin: 2em 0;\r
++ padding: .5em 0 0;\r
++ float: left;\r
++ width: 12em;\r
++}\r
++.tabs ul { list-style: none; margin: 0 0 .5em; padding: 0 }\r
++.tabs li { margin: 0; padding: 0.1em .5em }\r
++.tabs li li { margin: 0 -0.5em; padding-left: 1.5em }\r
++.tabs li li.active { background: #ccb; }\r
++.tabs :link, .tabs :visited { border: none; display: block }\r
++.tabs :link:hover, .tabs :visited:hover { background: transparent }\r
++\r
++.tabcontents {\r
++ padding: 0.4em 2em;\r
++ margin-left: 12em;\r
++ min-height: 300px;\r
++}\r
++p.help { color: #666; font-size: 90%; margin: 1em .5em .5em }\r
++\r
++form.addnew { clear: right; float: right; margin: -2em 0 4em; width: 33% }\r
++form.mod { margin-top: 1em; }\r
++form.mod .field { margin: .5em 0; }\r
++form .field em { color: #888; font-size: smaller }\r
++form .field .disabled em { color: #d7d7d7 }\r
++\r
++table.listing { clear: none; width: 64% }\r
++table.listing .sel, table.listing .default { text-align: center; width: 1% }\r
++\r
++\r
++\r
--- /dev/null
--- /dev/null
++.ac_results {
++ padding: 0px;
++ border: 1px solid black;
++ background-color: white;
++ overflow: hidden;
++ z-index: 99999;
++}
++
++.ac_results ul {
++ width: 100%;
++ list-style-position: outside;
++ list-style: none;
++ padding: 0;
++ margin: 0;
++}
++
++.ac_results li {
++ margin: 0px;
++ padding: 2px 5px;
++ cursor: default;
++ display: block;
++ /*
++ if width will be 100% horizontal scrollbar will apear
++ when scroll mode will be used
++ */
++ /*width: 100%;*/
++ font: menu;
++ font-size: 12px;
++ /*
++ it is very important, if line-height not setted or setted
++ in relative units scroll will be broken in firefox
++ */
++ line-height: 16px;
++ overflow: hidden;
++}
++
++.ac_loading {
++ background: white url('indicator.gif') right center no-repeat;
++}
++
++.ac_odd {
++ background-color: #eee;
++}
++
++.ac_over {
++ background-color: #0A246A;
++ color: white;
++}
--- /dev/null
--- /dev/null
++.ts-skin-lab .ts-player {
++ padding: 0;
++ clear: both;
++ background: white;
++ border: solid 1px #ADADAD;
++ margin-top: 2px;
++}
++
++.ts-skin-lab .ts-player .ts-wave {
++ height: 130px;
++}
++.ts-skin-lab .ts-player .ts-wave .ts-image {
++ width: 360px;
++ height: 130px;
++ background: transparent;
++}
++
++#player_maximized .ts-player .ts-wave, #player_maximized .ts-player .ts-image {
++ height: 170px;
++}
++
++.ts-skin-lab .ts-player .ts-viewer {
++ margin: 0;
++ border: 0;
++}
++.ts-skin-lab .ts-player .ts-viewer .ts-pointer {
++ background: #BB0000;
++ color: #DDD;
++}
++.ts-skin-lab .ts-player .ts-viewer a.ts-pointer {
++ color: #BB0000;
++ background: white;
++
++}
++
++.ts-skin-lab .ts-player .ts-viewer .ts-marker {
++ background: #0C1A70;
++ color: #DDD;
++}
++.ts-skin-lab .ts-player .ts-ruler .ts-section .ts-label {
++ background: white;
++ color: #555;
++}
++
++.ts-skin-lab .ts-player .ts-ruler .ts-section .ts-lines {
++ background: #F2F2F2;
++ color: #ADADAD;
++ border-bottom: solid 1px #adadad;
++}
++
++.ts-skin-lab .ts-player .ts-control {
++ background: url('../images/player_controlbg.png');
++}
++
++.ts-skin-lab .ts-player .ts-control .ts-playback a {
++ padding: 20px 0 0 0;
++ height /**/:20px; /* for IE5/Win only */
++ margin-right: 4px;
++}
++
++.ts-skin-lab .ts-player .ts-control .ts-layout {
++ margin-left: 3px;
++}
++
++#player_maximized, #player_minimized {
++ position: relative;
++}
++
++
++#player_maximized .toggle, #player_minimized .toggle {
++ position: relative;
++ display: block;
++ overflow: hidden;
++ float: right;
++ width: 18px;
++ padding: 10px 0 0 0;
++ height: 0px !important;
++ height /**/:10px; /* for IE5/Win only */
++ background-image: url('../images/maximize.gif');
++ text-decoration: none;
++ border: none;
++}
++
++#player_maximized .toggle:hover, #player_minimized .toggle:hover {
++ background-position: 0px -10px;
++}
++
++#player_maximized {
++ margin: 10px 0 15px 0;
++ display: none;
++}
--- /dev/null
--- /dev/null
++body {margin: 0; padding: 0;}\r
++a {text-decoration: none; color: #969696;}\r
++a img {border: none;}\r
++html, input, select, textarea, h1, h2, h3, h4, h5, h6 {\r
++ font-size: 100%;\r
++}\r
++body {\r
++ font: 0.8125em/1em Verdana, sans-serif;\r
++ line-height: 1.3em;\r
++ color: #333;\r
++ background: #FFF;\r
++ margin: 1.3em;\r
++}\r
++\r
++a:link, a:visited {\r
++ border-bottom:1px dotted #BBB;\r
++ color:#BB0000;\r
++ text-decoration:none;\r
++}\r
++a:link:hover, a:visited:hover {\r
++ background-color:#EEE;\r
++ color:#555;\r
++}\r
++a img { border: none; }\r
++\r
++.rst-content h1, h3 {\r
++ font-size: 1.2em;\r
++ font-weight: bold;\r
++ color: #353535;\r
++}\r
++.nett {\r
++ clear: both;\r
++ height: 5px;\r
++}\r
++\r
++.wazing {\r
++ clear: both;\r
++ position: relative;\r
++}\r
++\r
++/* Min-width */\r
++#layout {\r
++ min-width: 740px;\r
++}\r
++\r
++#content {\r
++ position: relative;\r
++}\r
++\r
++#content ul, #content ul ul, #content ol {\r
++ list-style: square;\r
++ padding: .7em;\r
++ padding-left: 2em;\r
++ font-size: 0.8em;\r
++ clear: both;\r
++}\r
++#content ul ul {\r
++ font-size: 1.1em;\r
++ padding-left: 0;\r
++}\r
++#content li {\r
++ padding: .2em;\r
++ padding-left: 0;\r
++}\r
++#content li a {\r
++ padding: .1em 0;\r
++}\r
++#header {\r
++ padding: 0.2em 0;\r
++ margin-bottom: .9em;\r
++}\r
++\r
++#logo a, #logo a:hover { border: none; background: transparent; }\r
++\r
++#submenu {\r
++ position: relative;\r
++ margin: 5px 0 0;\r
++ z-index: 10;\r
++}\r
++#submenu h3, #submenu div {\r
++ min-height: 1.6em;\r
++}\r
++#submenu h3 {\r
++ margin-right: 80px;\r
++}\r
++#submenu div {\r
++ position: absolute;\r
++ right: 0;\r
++ top: 0;\r
++}\r
++#submenu a {\r
++ height: 1.6em;\r
++ color: #4d508a;\r
++ font-size: 0.9em;\r
++ font-weight: bold;\r
++}\r
++\r
++#rightcol {\r
++ position: relative;\r
++ z-index: 1;\r
++ float: right;\r
++ width: 362px;\r
++ border: 1px dotted #999;\r
++ padding: 6px;\r
++ background-color: #eee;\r
++}\r
++#rightcol .analyzer, #rightcol .exporter {\r
++ text-align: left;\r
++ position: relative;\r
++}\r
++#rightcol form {\r
++ width: 360px;\r
++ margin-top: 5px;\r
++ background-color: #fff;\r
++ border: 1px solid #adadad;\r
++}\r
++\r
++#rightcol p {\r
++ margin: 0;\r
++ padding: 0;\r
++}\r
++\r
++.exporter {\r
++ background-color: #fff;\r
++ color: #555;\r
++ border: 1px solid #adadad;\r
++ width: 301px;\r
++ padding: 2px;\r
++ height: 17px;\r
++ margin: 5px 0 0;\r
++ font-size: 1em;\r
++}\r
++\r
++.analyzer {\r
++ background-color: #fff;\r
++ color: #000;\r
++ border: 1px solid #adadad;\r
++ width: 356px;\r
++ padding: 2px;\r
++ margin: 5px 0 0;\r
++ font-size: 1em;\r
++}\r
++\r
++.analyzer-title {\r
++ background-color: #f2f2f2;\r
++ color: #000;\r
++ padding: 2px;\r
++}\r
++\r
++.analyzer-line {\r
++ background-color: #fdfdfd;\r
++ color: #000;\r
++ padding: 4px;\r
++}\r
++\r
++/* Geographic navigator */\r
++ul.continents, ul.continents ul { list-style: none; margin: 0; padding: 0;}\r
++ul.continents { margin: 1em 0; }\r
++ul.continents ul {margin-left: 0; margin-bottom: 0.9em; padding: 0 1em 1em 0;}\r
++ul.continents li.name { width: 460px; float: left; clear: left; margin-right: 30px;}\r
++ul.continents li.odd { clear: none;}\r
++ul.continents li.name b { font-size: 120%; font-weight: bold; }\r
++ul.continents ul li { display: inline; padding-right: 2em;}\r
++ul.continents ul li a { line-height: 1.8em; }\r
++\r
++/* Collection */\r
++#content .intro {\r
++ font-size: 1em;\r
++ font-weight: bold;\r
++ color: #444;\r
++ margin: 5px 0;\r
++ padding-left: 13px;\r
++ font-size: 0.8em;\r
++ background: #FFF url(indent.png) no-repeat 0 1px;\r
++}\r
++#content .intro span {\r
++ padding: 3px;\r
++\r
++}\r
++\r
++/* Forms */\r
++input, textarea, select { margin: 2px }\r
++input, select { vertical-align: middle }\r
++input[type=button], input[type=submit], input[type=reset] {\r
++ background: #f2f2f2;\r
++ color: #444;\r
++ border: 3px double #ccc;\r
++ padding: .1em .5em;\r
++ font-weight: bold;\r
++ cursor: pointer;\r
++}\r
++input[type=button]:hover, input[type=submit]:hover, input[type=reset]:hover {\r
++ background: #8D8C94;\r
++ color: #fff;\r
++}\r
++input[type=button][disabled], input[type=submit][disabled],\r
++input[type=reset][disabled] {\r
++ background: #f6f6f6;\r
++ border-style: solid;\r
++ color: #999;\r
++}\r
++input[type=text], input[type=password], input.textwidget, textarea { border: 1px solid #ccc; }\r
++input[type=text], input[type=password], input.textwidget { padding: .25em .1em }\r
++input[type=text]:focus, input[type=password]:focus, input.textwidget:focus, textarea:focus {\r
++ border-color: #aaa;\r
++}\r
++option { border-bottom: 1px dotted #d7d7d7; }\r
++fieldset { border: 1px solid #d7d7d7; padding: .5em; margin: 0 }\r
++fieldset.iefix { background: transparent; border: none; padding: 0; margin: 0 }\r
++* html fieldset.iefix { width: 98% }\r
++fieldset.iefix p { margin: 0 }\r
++legend { color: #999; padding: 0 .25em; font-size: 90%; font-weight: bold }\r
++label.disabled { color: #d7d7d7 }\r
++.buttons { margin: .5em .5em .5em 0 }\r
++.buttons form, .buttons form div { display: inline }\r
++.buttons input { margin: 1em .5em .1em 0 }\r
++.inlinebuttons input {\r
++ font-size: 70%;\r
++ border-width: 1px;\r
++ border-style: dotted;\r
++ margin: 0;\r
++ padding: 0.1em;\r
++ background: none;\r
++}\r
++\r
++/* Quick search */\r
++#quick_search {\r
++ position: absolute;\r
++ top: 2.5em;\r
++ right: 1.1em;\r
++}\r
++#quick_search form {\r
++ float: left;\r
++ margin-right: 12px;\r
++}\r
++#quick_search p {\r
++ margin-top: .3em;\r
++ clear: left;\r
++}\r
++\r
++#quick_search a {\r
++ font-size: .8em;\r
++ font-weight: bold;\r
++}\r
++\r
++#quick_search input {\r
++ vertical-align: middle;\r
++ font-size: .8em;\r
++ margin-right: 0;\r
++}\r
++#quick_search_pattern {\r
++ background: #FFF url(search_bg.png) no-repeat;\r
++ padding: .4em .1em;\r
++ padding-left: 25px;\r
++ width: 150px;\r
++ color: #555;\r
++ font-weight: bold;\r
++}\r
++\r
++/* Authentication */\r
++#auth_info {\r
++ position: absolute;\r
++ top: 0.2em;\r
++ right: 1.1em;\r
++ margin-right: 12px;\r
++ font-size: .8em;\r
++}\r
++\r
++#auth_info a {\r
++ /* font-weight: bold; */\r
++}\r
++\r
++form.login {\r
++ font-size: 0.8em;\r
++ float: left;\r
++ margin-top: 2em;\r
++ margin-bottom: 4em;\r
++ padding: .5em;\r
++ border: 1px dotted #888;\r
++}\r
++\r
++.login-error {\r
++ color: #BB0000;\r
++}\r
++\r
++form.login label {\r
++ display: block;\r
++ width: 11em;\r
++ float: left;\r
++ clear: left;\r
++ font-weight: bold;\r
++ padding-top: 0.3em;\r
++}\r
++\r
++form.login .submit {\r
++ float: right;\r
++ margin-top: 1em;\r
++}\r
++\r
++/* Search form */\r
++#searchform {\r
++ margin: 15px 0;\r
++}\r
++#searchform fieldset {\r
++ padding: 0;\r
++ padding: .5em;\r
++ width: 650px;\r
++ border: none;\r
++ border: 1px dotted #888;\r
++ margin-bottom: 1em;\r
++}\r
++#searchform p {\r
++ background-color: #fff;\r
++ padding: .5em 0;\r
++}\r
++#searchform label {\r
++ font-size: 0.8em;\r
++ display: block;\r
++ float: left;\r
++ width: 30%;\r
++ margin-left: 15px;\r
++ margin-top: .2em;\r
++ line-height: 1.8em;\r
++ font-weight: bold;\r
++ color: #333;\r
++ text-transform: uppercase;\r
++}\r
++#searchform select {\r
++ width: 59%;\r
++}\r
++#searchform fieldset input {\r
++ width: 56%;\r
++}\r
++#searchform select, #searchform fieldset input {\r
++ font-size: 0.8em;\r
++}\r
++#searchform .submit {\r
++ padding: 0;\r
++ clear: both;\r
++ width: 450px;\r
++}\r
++\r
++#searchform select.tiny {\r
++ width: 12%;\r
++}\r
++\r
++/* Navigation (borrowed from Trac) */\r
++.nav h2, .nav hr { display: none }\r
++.nav ul { font-size: 10px; list-style: none; margin: 0; text-align: left }\r
++.nav li {\r
++ border-right: 1px solid #d7d7d7;\r
++ display: inline;\r
++ padding: 0 .75em;\r
++ white-space: nowrap;\r
++}\r
++.nav li.last { border-right: 1px solid #000000; }\r
++\r
++/* Main navigation bar (borrowed from Trac) */\r
++#menu {\r
++ background: #f7f7f7 url(../images/topbar_gradient.png) 0 0;\r
++ border: 1px solid #000;\r
++ font: normal 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif;\r
++ margin: .66em 0 .33em;\r
++ padding: .2em 0;\r
++}\r
++#menu li { border-right: none; padding: .25em 0 }\r
++#menu li.last { border-right: 1px solid #000 }\r
++#menu :link, #menu :visited {\r
++ background: url(../images/dots.gif) 0 0 no-repeat;\r
++ border-right: 1px solid #fff;\r
++ border-bottom: none;\r
++ border-left: 1px solid #555;\r
++ color: #000;\r
++ padding: .2em 20px;\r
++}\r
++* html #menu :link, * html #menu :visited { background-position: 1px 0 }\r
++#menu :link:hover, #menu :visited:hover {\r
++ background-color: #ccc;\r
++ border-right: 1px solid #ddd;\r
++}\r
++#menu .active :link, #menu .active :visited {\r
++ background: #333 url(../images/topbar_gradient2.png) 0 0 repeat-x;\r
++ border-top: none;\r
++ border-right: 1px solid #000;\r
++ color: #eee;\r
++ font-weight: bold;\r
++}\r
++#menu .active :link:hover, #menu .active :visited:hover {\r
++ border-right: 1px solid #000;\r
++}\r
++\r
++/* Footer (borrowed from Trac) */\r
++#footer {\r
++ clear: both;\r
++ color: #bbb;\r
++ font-size: 10px;\r
++ border-top: 1px solid;\r
++ height: 31px;\r
++ padding: .25em 0;\r
++ margin-top: 2.5em;\r
++}\r
++#footer :link, #footer :visited { color: #bbb; }\r
++#footer hr { display: none }\r
++#footer #telemeta_powered { border: 0; float: left }\r
++#footer #telemeta_powered:hover { background: transparent }\r
++#footer p { margin: 0 }\r
++#footer p.left {\r
++ float: left;\r
++ margin-left: 1em;\r
++ padding: 0 1em;\r
++ border-left: 1px solid #d7d7d7;\r
++ border-right: 1px solid #d7d7d7;\r
++}\r
++#footer p.right {\r
++ float: right;\r
++ text-align: right;\r
++}\r
++\r
++/* Homepage */\r
++.homelinks a { font-size: 120%;}\r
++\r
++\r
++/* Definition list */\r
++dl {\r
++ position: relative;\r
++ margin: .5em 0;\r
++}\r
++dl dt, dl dd {\r
++ position: relative;\r
++ margin: 0;\r
++ margin-bottom: .5em;\r
++ padding: 0;\r
++ font-size: 0.8em;\r
++ line-height: 1.4em;\r
++ min-height: 1.4em;\r
++}\r
++dl dd {\r
++ border: 1px solid transparent;\r
++}\r
++dl dt {\r
++ float: left;\r
++ clear: left;\r
++}\r
++\r
++dl.listing dt {\r
++ width: 18em;\r
++ background-color: #f9f9f9;\r
++ border: .1em solid #eee;\r
++ border-right: .3em solid #ddd;\r
++ padding-left: .3em;\r
++ margin-right: .8em;\r
++ color: #444;\r
++}\r
++dl.listing dt.group {\r
++ float: none;\r
++ margin-top: .9em;\r
++ background-color: #DDDDDD;\r
++ border-color: #ccc;\r
++ border-right: .1em solid #ccc;\r
++ width: 18.2em;\r
++}\r
++dl.listing dd {\r
++ margin-left: 19.4em;\r
++ font-weight: bold;\r
++}\r
++\r
++/* dublin core display */\r
++h4.dublincore {\r
++ text-align: left;\r
++ padding: 5px 0 10px;\r
++ font-weight: bold;\r
++ color: #666;\r
++}\r
++dl.dublincore dt {\r
++ margin-right: .8em;\r
++ width: 23em !important;\r
++ font-style: italic;\r
++}\r
++dl.dublincore dd {\r
++ margin-left: 23.4em;\r
++ font-weight: bold;\r
++}\r
++dl.dublincore dt span {\r
++ width: 13em;\r
++ display: block;\r
++ float: left;\r
++ font-style: normal;\r
++ background-color: #f9f9f9;\r
++ border: 1px solid #eee;\r
++ border-right: 3px solid #ddd;\r
++ padding-left: .3em;\r
++ margin-right: 1.2em;\r
++ color: #444;\r
++}\r
++dl.dublincore .caption {\r
++ background-color: #B8B7C1;\r
++ margin: .5em 0;\r
++ margin-top: 0;\r
++ border-bottom: 1px dotted #666;\r
++ padding-top: .4em;\r
++ padding-bottom: .4em;\r
++ padding-left: .3em;\r
++ color: #fff;\r
++ font-weight: bold;\r
++ border-right: 1px solid #fff;\r
++}\r
++dl.dublincore dt.caption span {\r
++ background-color: #B8B7C1;\r
++ border: none;\r
++ border-right: 1px solid #fff;\r
++ color: #fff;\r
++}\r
++dl.dublincore dd.caption {\r
++ padding-top: .3em;\r
++ padding-left: .4em;\r
++ margin-left: 23.4em;\r
++}\r
++\r
++/* infos item/collection */\r
++.infos, .extraInfos {\r
++ margin-bottom: 15px;\r
++}\r
++\r
++.extraInfos dl, .extraInfos table {\r
++ position: relative;\r
++}\r
++\r
++.extraInfos div {\r
++ padding: 0;\r
++ margin-bottom: 5px;\r
++}\r
++.extraInfos .nett {\r
++ position: relative;\r
++ height: 0;\r
++ margin-bottom: -5px;\r
++}\r
++.extraInfos h4 {\r
++ /* clear: both; */\r
++ font-size: 0.9em;\r
++ line-height: 1.4em;\r
++ border-bottom: 1px dotted #aaa;\r
++}\r
++.with-rightcol .extraInfos h4 {\r
++ margin-right: 395px;\r
++}\r
++\r
++.extraInfos h4 a {\r
++ position: relative;\r
++ display: block;\r
++ color: #333 !important;\r
++ text-decoration: none;\r
++ margin: 0;\r
++ background: #fff url(more.gif) no-repeat left top;\r
++ background-position: 0 -17px;\r
++ padding-bottom: 2px;\r
++ padding-left: 16px;\r
++ border-bottom: none !important;\r
++ outline: none;\r
++}\r
++.extraInfos h4 a:hover {\r
++ background-color: transparent;\r
++ border-bottom: none;\r
++ color: #555 !important;\r
++}\r
++.extraInfos .folded h4 {\r
++ border-bottom: none;\r
++}\r
++.extraInfos .folded h4 a {\r
++ background-position: 0 0px;\r
++}\r
++\r
++/* Pagination */\r
++.pagination {\r
++ margin-top: .7em;\r
++ margin-bottom: .3em;\r
++ padding: .3em 0;\r
++ font-size: .9em;\r
++ background-color: #fff;\r
++ border-bottom: 1px solid #aaa;\r
++ color: #333;\r
++ font-weight: bold;\r
++}\r
++.pagination a {\r
++ background-color: #eee;\r
++ border-bottom: none;\r
++ font-size: .9em;\r
++ padding: .3em;\r
++}\r
++\r
++/* Item instruments */\r
++div.instruments {\r
++ position: relative;\r
++ margin-left: -.7em;\r
++ margin-right: .5em;\r
++}\r
++table.instruments {\r
++ border: none;\r
++ border-collapse: separate;\r
++ /* width: 100%; */\r
++ border-spacing: .7em;\r
++}\r
++table.instruments td {\r
++ font-size: .8em;\r
++ padding: 0 .2em;\r
++}\r
++table.instruments thead td {\r
++ background-color: #F9F9F9;\r
++ border: .1em solid #E1E1E1;\r
++ border-bottom: .3em solid #E1E1E1;\r
++}\r
++table.instruments tbody td {\r
++ border-bottom: .1em solid #E1E1E1;\r
++}\r
++\r
++/* Styles for tabular listings (stolen from trac) */\r
++table.listing {\r
++ clear: both;\r
++ border-spacing: 0;\r
++}\r
++\r
++.fullpage table.listing {\r
++ width: 100%;\r
++}\r
++\r
++table.listing th {\r
++ text-align: left;\r
++ padding: 0 14em .1em 0;\r
++ font-size: 1em;\r
++}\r
++table.listing th, table.listing td {\r
++ font-size: 0.8em;\r
++ border-bottom: 1px solid #dfdfdf;\r
++}\r
++table.listing thead { background: #e8eaf0 }\r
++table.listing thead th {\r
++ font-size: 0.9em;\r
++ padding: 3px .5em 3px;\r
++}\r
++table.listing thead th :link:hover, table.listing thead th :visited:hover {\r
++ background-color: transparent;\r
++}\r
++table.listing a {\r
++ border: none;\r
++}\r
++table.listing thead th a {\r
++ padding-right: 12px;\r
++}\r
++table.listing th.asc a, table.listing th.desc a { font-weight: bold }\r
++table.listing th.asc a, table.listing th.desc a {\r
++ background-position: 100% 50%;\r
++ background-repeat: no-repeat;\r
++}\r
++table.listing th.asc a { background-image: url(../images/asc.png) }\r
++table.listing th.desc a { background-image: url(../images/desc.png) }\r
++table.listing tbody td, table.listing tbody th {\r
++ padding: .33em .5em;\r
++ vertical-align: top;\r
++ font-weight: normal;\r
++}\r
++table.listing tbody td {\r
++ font-weight: bold;\r
++}\r
++table.listing tbody td.tmp {\r
++ width: 100%;\r
++}\r
++table.listing tbody td a:hover, table.listing tbody th a:hover {\r
++ background-color: transparent;\r
++}\r
++table.listing tbody tr { border-top: 1px solid #ddd }\r
++table.listing tbody tr.even { background-color: #fcfcfc }\r
++table.listing tbody tr.odd { background-color: #f7f7f7 }\r
++table.listing tbody tr:hover { background: #f7f8fa !important }\r
++\r
++.gmap {\r
++ border: solid 1px #888;\r
++ margin-top: 0.8em;\r
++}\r
++\r
++.rst-content {\r
++}\r
++\r
++.rst-content img.align-left {\r
++ margin-right: 1em;\r
++ margin-top: 0.6ex;\r
++}\r
++\r
++.rst-content img.align-right {\r
++ margin-left: 1em;\r
++ margin-top: 0.6ex;\r
++}\r
++\r
++#content .rst-content ul, #content .rst-content ol {\r
++ clear: none;\r
++ font-size: 1em;\r
++ margin-left: 0.4em;\r
++}\r
++\r
++.module-set {\r
++ float: right;\r
++ clear: right;\r
++}\r
++\r
++.module {\r
++ border: 1px dotted #999;\r
++ background: #EEE;\r
++ padding: 1em;\r
++ margin: 0 0 1.5em 1.5em;\r
++}\r
++\r
++.module h3 {\r
++ margin-top: 0;\r
++ margin-bottom: 0.8em;\r
++ font-size: 1.1em;\r
++}\r
++\r
++a.image-link {\r
++ border: none;\r
++}\r
++\r
++.map-thumbnail {\r
++ border: solid 1px #999;\r
++}\r
++\r
++.home-content .module {\r
++ width: 338px;\r
++}\r
++\r
++.home-description {\r
++ padding-right: 370px;\r
++}\r
++\r
++#content ul.playlist {\r
++ list-style-type: none;\r
++ border-top: solid 1px #e1e1e1;\r
++ margin: 0;\r
++ padding: 0;\r
++}\r
++\r
++#content ul.playlist li {\r
++ display: block;\r
++ border: solid 1px #e1e1e1;\r
++ border-top: 0;\r
++ background: white;\r
++ margin: 0;\r
++ padding: 1em;\r
++}\r
--- /dev/null
--- /dev/null
++dl.listing, #rightcol {\r
++ margin-top: .4em;\r
++}\r
++dl.listing dd {\r
++ margin-top: .2em;\r
++}\r
++dl dd {\r
++ border-color: #fff;\r
++}\r
++dl.dublincore dd.caption {\r
++ margin-top: -.1em;\r
++}\r
++div.instruments {\r
++ margin-left: -.1em;\r
++ margin-right: .9em;\r
++}\r
++\r
--- /dev/null
--- /dev/null
++/* Min-width */\r
++#submenu h3, #submenu div {\r
++ height: 1.6em;\r
++}\r
--- /dev/null
--- /dev/null
++\r
++function foldInfoBlocks() {\r
++ var extra = $('.extraInfos');\r
++ extra.find('.folded dl, .folded table').css('display', 'none');\r
++ extra.find('a').click(function() { \r
++ $(this).parents('.extraInfos').children().toggleClass('folded').find('dl, table').toggle(100); \r
++ return false; \r
++ });\r
++}\r
++\r
++$(document).ready(function() {\r
++ foldInfoBlocks();\r
++});\r
++\r
--- /dev/null
--- /dev/null
++/*
++ * jQuery Autocomplete plugin 1.1
++ *
++ * Copyright (c) 2009 Jörn Zaefferer
++ *
++ * Dual licensed under the MIT and GPL licenses:
++ * http://www.opensource.org/licenses/mit-license.php
++ * http://www.gnu.org/licenses/gpl.html
++ *
++ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
++ */
++
++;(function($) {
++
++$.fn.extend({
++ autocomplete: function(urlOrData, options) {
++ var isUrl = typeof urlOrData == "string";
++ options = $.extend({}, $.Autocompleter.defaults, {
++ url: isUrl ? urlOrData : null,
++ data: isUrl ? null : urlOrData,
++ delay: isUrl ? $.Autocompleter.defaults.delay : 10,
++ max: options && !options.scroll ? 10 : 150
++ }, options);
++
++ // if highlight is set to false, replace it with a do-nothing function
++ options.highlight = options.highlight || function(value) { return value; };
++
++ // if the formatMatch option is not specified, then use formatItem for backwards compatibility
++ options.formatMatch = options.formatMatch || options.formatItem;
++
++ return this.each(function() {
++ new $.Autocompleter(this, options);
++ });
++ },
++ result: function(handler) {
++ return this.bind("result", handler);
++ },
++ search: function(handler) {
++ return this.trigger("search", [handler]);
++ },
++ flushCache: function() {
++ return this.trigger("flushCache");
++ },
++ setOptions: function(options){
++ return this.trigger("setOptions", [options]);
++ },
++ unautocomplete: function() {
++ return this.trigger("unautocomplete");
++ }
++});
++
++$.Autocompleter = function(input, options) {
++
++ var KEY = {
++ UP: 38,
++ DOWN: 40,
++ DEL: 46,
++ TAB: 9,
++ RETURN: 13,
++ ESC: 27,
++ COMMA: 188,
++ PAGEUP: 33,
++ PAGEDOWN: 34,
++ BACKSPACE: 8
++ };
++
++ // Create $ object for input element
++ var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
++
++ var timeout;
++ var previousValue = "";
++ var cache = $.Autocompleter.Cache(options);
++ var hasFocus = 0;
++ var lastKeyPressCode;
++ var config = {
++ mouseDownOnSelect: false
++ };
++ var select = $.Autocompleter.Select(options, input, selectCurrent, config);
++
++ var blockSubmit;
++
++ // prevent form submit in opera when selecting with return key
++ $.browser.opera && $(input.form).bind("submit.autocomplete", function() {
++ if (blockSubmit) {
++ blockSubmit = false;
++ return false;
++ }
++ });
++
++ // only opera doesn't trigger keydown multiple times while pressed, others don't work with keypress at all
++ $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
++ // a keypress means the input has focus
++ // avoids issue where input had focus before the autocomplete was applied
++ hasFocus = 1;
++ // track last key pressed
++ lastKeyPressCode = event.keyCode;
++ switch(event.keyCode) {
++
++ case KEY.UP:
++ event.preventDefault();
++ if ( select.visible() ) {
++ select.prev();
++ } else {
++ onChange(0, true);
++ }
++ break;
++
++ case KEY.DOWN:
++ event.preventDefault();
++ if ( select.visible() ) {
++ select.next();
++ } else {
++ onChange(0, true);
++ }
++ break;
++
++ case KEY.PAGEUP:
++ event.preventDefault();
++ if ( select.visible() ) {
++ select.pageUp();
++ } else {
++ onChange(0, true);
++ }
++ break;
++
++ case KEY.PAGEDOWN:
++ event.preventDefault();
++ if ( select.visible() ) {
++ select.pageDown();
++ } else {
++ onChange(0, true);
++ }
++ break;
++
++ // matches also semicolon
++ case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
++ case KEY.TAB:
++ case KEY.RETURN:
++ if( selectCurrent() ) {
++ // stop default to prevent a form submit, Opera needs special handling
++ event.preventDefault();
++ blockSubmit = true;
++ return false;
++ }
++ break;
++
++ case KEY.ESC:
++ select.hide();
++ break;
++
++ default:
++ clearTimeout(timeout);
++ timeout = setTimeout(onChange, options.delay);
++ break;
++ }
++ }).focus(function(){
++ // track whether the field has focus, we shouldn't process any
++ // results if the field no longer has focus
++ hasFocus++;
++ }).blur(function() {
++ hasFocus = 0;
++ if (!config.mouseDownOnSelect) {
++ hideResults();
++ }
++ }).click(function() {
++ // show select when clicking in a focused field
++ if ( hasFocus++ > 1 && !select.visible() ) {
++ onChange(0, true);
++ }
++ }).bind("search", function() {
++ // TODO why not just specifying both arguments?
++ var fn = (arguments.length > 1) ? arguments[1] : null;
++ function findValueCallback(q, data) {
++ var result;
++ if( data && data.length ) {
++ for (var i=0; i < data.length; i++) {
++ if( data[i].result.toLowerCase() == q.toLowerCase() ) {
++ result = data[i];
++ break;
++ }
++ }
++ }
++ if( typeof fn == "function" ) fn(result);
++ else $input.trigger("result", result && [result.data, result.value]);
++ }
++ $.each(trimWords($input.val()), function(i, value) {
++ request(value, findValueCallback, findValueCallback);
++ });
++ }).bind("flushCache", function() {
++ cache.flush();
++ }).bind("setOptions", function() {
++ $.extend(options, arguments[1]);
++ // if we've updated the data, repopulate
++ if ( "data" in arguments[1] )
++ cache.populate();
++ }).bind("unautocomplete", function() {
++ select.unbind();
++ $input.unbind();
++ $(input.form).unbind(".autocomplete");
++ });
++
++
++ function selectCurrent() {
++ var selected = select.selected();
++ if( !selected )
++ return false;
++
++ var v = selected.result;
++ previousValue = v;
++
++ if ( options.multiple ) {
++ var words = trimWords($input.val());
++ if ( words.length > 1 ) {
++ var seperator = options.multipleSeparator.length;
++ var cursorAt = $(input).selection().start;
++ var wordAt, progress = 0;
++ $.each(words, function(i, word) {
++ progress += word.length;
++ if (cursorAt <= progress) {
++ wordAt = i;
++ return false;
++ }
++ progress += seperator;
++ });
++ words[wordAt] = v;
++ // TODO this should set the cursor to the right position, but it gets overriden somewhere
++ //$.Autocompleter.Selection(input, progress + seperator, progress + seperator);
++ v = words.join( options.multipleSeparator );
++ }
++ v += options.multipleSeparator;
++ }
++
++ $input.val(v);
++ hideResultsNow();
++ $input.trigger("result", [selected.data, selected.value]);
++ return true;
++ }
++
++ function onChange(crap, skipPrevCheck) {
++ if( lastKeyPressCode == KEY.DEL ) {
++ select.hide();
++ return;
++ }
++
++ var currentValue = $input.val();
++
++ if ( !skipPrevCheck && currentValue == previousValue )
++ return;
++
++ previousValue = currentValue;
++
++ currentValue = lastWord(currentValue);
++ if ( currentValue.length >= options.minChars) {
++ $input.addClass(options.loadingClass);
++ if (!options.matchCase)
++ currentValue = currentValue.toLowerCase();
++ request(currentValue, receiveData, hideResultsNow);
++ } else {
++ stopLoading();
++ select.hide();
++ }
++ };
++
++ function trimWords(value) {
++ if (!value)
++ return [""];
++ if (!options.multiple)
++ return [$.trim(value)];
++ return $.map(value.split(options.multipleSeparator), function(word) {
++ return $.trim(value).length ? $.trim(word) : null;
++ });
++ }
++
++ function lastWord(value) {
++ if ( !options.multiple )
++ return value;
++ var words = trimWords(value);
++ if (words.length == 1)
++ return words[0];
++ var cursorAt = $(input).selection().start;
++ if (cursorAt == value.length) {
++ words = trimWords(value)
++ } else {
++ words = trimWords(value.replace(value.substring(cursorAt), ""));
++ }
++ return words[words.length - 1];
++ }
++
++ // fills in the input box w/the first match (assumed to be the best match)
++ // q: the term entered
++ // sValue: the first matching result
++ function autoFill(q, sValue){
++ // autofill in the complete box w/the first match as long as the user hasn't entered in more data
++ // if the last user key pressed was backspace, don't autofill
++ if( options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE ) {
++ // fill in the value (keep the case the user has typed)
++ $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
++ // select the portion of the value not typed by the user (so the next character will erase)
++ $(input).selection(previousValue.length, previousValue.length + sValue.length);
++ }
++ };
++
++ function hideResults() {
++ clearTimeout(timeout);
++ timeout = setTimeout(hideResultsNow, 200);
++ };
++
++ function hideResultsNow() {
++ var wasVisible = select.visible();
++ select.hide();
++ clearTimeout(timeout);
++ stopLoading();
++ if (options.mustMatch) {
++ // call search and run callback
++ $input.search(
++ function (result){
++ // if no value found, clear the input box
++ if( !result ) {
++ if (options.multiple) {
++ var words = trimWords($input.val()).slice(0, -1);
++ $input.val( words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : "") );
++ }
++ else {
++ $input.val( "" );
++ $input.trigger("result", null);
++ }
++ }
++ }
++ );
++ }
++ };
++
++ function receiveData(q, data) {
++ if ( data && data.length && hasFocus ) {
++ stopLoading();
++ select.display(data, q);
++ autoFill(q, data[0].value);
++ select.show();
++ } else {
++ hideResultsNow();
++ }
++ };
++
++ function request(term, success, failure) {
++ if (!options.matchCase)
++ term = term.toLowerCase();
++ var data = cache.load(term);
++ // recieve the cached data
++ if (data && data.length) {
++ success(term, data);
++ // if an AJAX url has been supplied, try loading the data now
++ } else if( (typeof options.url == "string") && (options.url.length > 0) ){
++
++ var extraParams = {
++ timestamp: +new Date()
++ };
++ $.each(options.extraParams, function(key, param) {
++ extraParams[key] = typeof param == "function" ? param() : param;
++ });
++
++ $.ajax({
++ // try to leverage ajaxQueue plugin to abort previous requests
++ mode: "abort",
++ // limit abortion to this input
++ port: "autocomplete" + input.name,
++ dataType: options.dataType,
++ url: options.url,
++ data: $.extend({
++ q: lastWord(term),
++ limit: options.max
++ }, extraParams),
++ success: function(data) {
++ var parsed = options.parse && options.parse(data) || parse(data);
++ cache.add(term, parsed);
++ success(term, parsed);
++ }
++ });
++ } else {
++ // if we have a failure, we need to empty the list -- this prevents the the [TAB] key from selecting the last successful match
++ select.emptyList();
++ failure(term);
++ }
++ };
++
++ function parse(data) {
++ var parsed = [];
++ var rows = data.split("\n");
++ for (var i=0; i < rows.length; i++) {
++ var row = $.trim(rows[i]);
++ if (row) {
++ row = row.split("|");
++ parsed[parsed.length] = {
++ data: row,
++ value: row[0],
++ result: options.formatResult && options.formatResult(row, row[0]) || row[0]
++ };
++ }
++ }
++ return parsed;
++ };
++
++ function stopLoading() {
++ $input.removeClass(options.loadingClass);
++ };
++
++};
++
++$.Autocompleter.defaults = {
++ inputClass: "ac_input",
++ resultsClass: "ac_results",
++ loadingClass: "ac_loading",
++ minChars: 1,
++ delay: 400,
++ matchCase: false,
++ matchSubset: true,
++ matchContains: false,
++ cacheLength: 10,
++ max: 100,
++ mustMatch: false,
++ extraParams: {},
++ selectFirst: true,
++ formatItem: function(row) { return row[0]; },
++ formatMatch: null,
++ autoFill: false,
++ width: 0,
++ multiple: false,
++ multipleSeparator: ", ",
++ highlight: function(value, term) {
++ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
++ },
++ scroll: true,
++ scrollHeight: 180
++};
++
++$.Autocompleter.Cache = function(options) {
++
++ var data = {};
++ var length = 0;
++
++ function matchSubset(s, sub) {
++ if (!options.matchCase)
++ s = s.toLowerCase();
++ var i = s.indexOf(sub);
++ if (options.matchContains == "word"){
++ i = s.toLowerCase().search("\\b" + sub.toLowerCase());
++ }
++ if (i == -1) return false;
++ return i == 0 || options.matchContains;
++ };
++
++ function add(q, value) {
++ if (length > options.cacheLength){
++ flush();
++ }
++ if (!data[q]){
++ length++;
++ }
++ data[q] = value;
++ }
++
++ function populate(){
++ if( !options.data ) return false;
++ // track the matches
++ var stMatchSets = {},
++ nullData = 0;
++
++ // no url was specified, we need to adjust the cache length to make sure it fits the local data store
++ if( !options.url ) options.cacheLength = 1;
++
++ // track all options for minChars = 0
++ stMatchSets[""] = [];
++
++ // loop through the array and create a lookup structure
++ for ( var i = 0, ol = options.data.length; i < ol; i++ ) {
++ var rawValue = options.data[i];
++ // if rawValue is a string, make an array otherwise just reference the array
++ rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
++
++ var value = options.formatMatch(rawValue, i+1, options.data.length);
++ if ( value === false )
++ continue;
++
++ var firstChar = value.charAt(0).toLowerCase();
++ // if no lookup array for this character exists, look it up now
++ if( !stMatchSets[firstChar] )
++ stMatchSets[firstChar] = [];
++
++ // if the match is a string
++ var row = {
++ value: value,
++ data: rawValue,
++ result: options.formatResult && options.formatResult(rawValue) || value
++ };
++
++ // push the current match into the set list
++ stMatchSets[firstChar].push(row);
++
++ // keep track of minChars zero items
++ if ( nullData++ < options.max ) {
++ stMatchSets[""].push(row);
++ }
++ };
++
++ // add the data items to the cache
++ $.each(stMatchSets, function(i, value) {
++ // increase the cache size
++ options.cacheLength++;
++ // add to the cache
++ add(i, value);
++ });
++ }
++
++ // populate any existing data
++ setTimeout(populate, 25);
++
++ function flush(){
++ data = {};
++ length = 0;
++ }
++
++ return {
++ flush: flush,
++ add: add,
++ populate: populate,
++ load: function(q) {
++ if (!options.cacheLength || !length)
++ return null;
++ /*
++ * if dealing w/local data and matchContains than we must make sure
++ * to loop through all the data collections looking for matches
++ */
++ if( !options.url && options.matchContains ){
++ // track all matches
++ var csub = [];
++ // loop through all the data grids for matches
++ for( var k in data ){
++ // don't search through the stMatchSets[""] (minChars: 0) cache
++ // this prevents duplicates
++ if( k.length > 0 ){
++ var c = data[k];
++ $.each(c, function(i, x) {
++ // if we've got a match, add it to the array
++ if (matchSubset(x.value, q)) {
++ csub.push(x);
++ }
++ });
++ }
++ }
++ return csub;
++ } else
++ // if the exact item exists, use it
++ if (data[q]){
++ return data[q];
++ } else
++ if (options.matchSubset) {
++ for (var i = q.length - 1; i >= options.minChars; i--) {
++ var c = data[q.substr(0, i)];
++ if (c) {
++ var csub = [];
++ $.each(c, function(i, x) {
++ if (matchSubset(x.value, q)) {
++ csub[csub.length] = x;
++ }
++ });
++ return csub;
++ }
++ }
++ }
++ return null;
++ }
++ };
++};
++
++$.Autocompleter.Select = function (options, input, select, config) {
++ var CLASSES = {
++ ACTIVE: "ac_over"
++ };
++
++ var listItems,
++ active = -1,
++ data,
++ term = "",
++ needsInit = true,
++ element,
++ list;
++
++ // Create results
++ function init() {
++ if (!needsInit)
++ return;
++ element = $("<div/>")
++ .hide()
++ .addClass(options.resultsClass)
++ .css("position", "absolute")
++ .appendTo(document.body);
++
++ list = $("<ul/>").appendTo(element).mouseover( function(event) {
++ if(target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
++ active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
++ $(target(event)).addClass(CLASSES.ACTIVE);
++ }
++ }).click(function(event) {
++ $(target(event)).addClass(CLASSES.ACTIVE);
++ select();
++ // TODO provide option to avoid setting focus again after selection? useful for cleanup-on-focus
++ input.focus();
++ return false;
++ }).mousedown(function() {
++ config.mouseDownOnSelect = true;
++ }).mouseup(function() {
++ config.mouseDownOnSelect = false;
++ });
++
++ if( options.width > 0 )
++ element.css("width", options.width);
++
++ needsInit = false;
++ }
++
++ function target(event) {
++ var element = event.target;
++ while(element && element.tagName != "LI")
++ element = element.parentNode;
++ // more fun with IE, sometimes event.target is empty, just ignore it then
++ if(!element)
++ return [];
++ return element;
++ }
++
++ function moveSelect(step) {
++ listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
++ movePosition(step);
++ var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
++ if(options.scroll) {
++ var offset = 0;
++ listItems.slice(0, active).each(function() {
++ offset += this.offsetHeight;
++ });
++ if((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
++ list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
++ } else if(offset < list.scrollTop()) {
++ list.scrollTop(offset);
++ }
++ }
++ };
++
++ function movePosition(step) {
++ active += step;
++ if (active < 0) {
++ active = listItems.size() - 1;
++ } else if (active >= listItems.size()) {
++ active = 0;
++ }
++ }
++
++ function limitNumberOfItems(available) {
++ return options.max && options.max < available
++ ? options.max
++ : available;
++ }
++
++ function fillList() {
++ list.empty();
++ var max = limitNumberOfItems(data.length);
++ for (var i=0; i < max; i++) {
++ if (!data[i])
++ continue;
++ var formatted = options.formatItem(data[i].data, i+1, max, data[i].value, term);
++ if ( formatted === false )
++ continue;
++ var li = $("<li/>").html( options.highlight(formatted, term) ).addClass(i%2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
++ $.data(li, "ac_data", data[i]);
++ }
++ listItems = list.find("li");
++ if ( options.selectFirst ) {
++ listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
++ active = 0;
++ }
++ // apply bgiframe if available
++ if ( $.fn.bgiframe )
++ list.bgiframe();
++ }
++
++ return {
++ display: function(d, q) {
++ init();
++ data = d;
++ term = q;
++ fillList();
++ },
++ next: function() {
++ moveSelect(1);
++ },
++ prev: function() {
++ moveSelect(-1);
++ },
++ pageUp: function() {
++ if (active != 0 && active - 8 < 0) {
++ moveSelect( -active );
++ } else {
++ moveSelect(-8);
++ }
++ },
++ pageDown: function() {
++ if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
++ moveSelect( listItems.size() - 1 - active );
++ } else {
++ moveSelect(8);
++ }
++ },
++ hide: function() {
++ element && element.hide();
++ listItems && listItems.removeClass(CLASSES.ACTIVE);
++ active = -1;
++ },
++ visible : function() {
++ return element && element.is(":visible");
++ },
++ current: function() {
++ return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
++ },
++ show: function() {
++ var offset = $(input).offset();
++ element.css({
++ width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
++ top: offset.top + input.offsetHeight,
++ left: offset.left
++ }).show();
++ if(options.scroll) {
++ list.scrollTop(0);
++ list.css({
++ maxHeight: options.scrollHeight,
++ overflow: 'auto'
++ });
++
++ if($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
++ var listHeight = 0;
++ listItems.each(function() {
++ listHeight += this.offsetHeight;
++ });
++ var scrollbarsVisible = listHeight > options.scrollHeight;
++ list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight );
++ if (!scrollbarsVisible) {
++ // IE doesn't recalculate width when scrollbar disappears
++ listItems.width( list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")) );
++ }
++ }
++
++ }
++ },
++ selected: function() {
++ var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
++ return selected && selected.length && $.data(selected[0], "ac_data");
++ },
++ emptyList: function (){
++ list && list.empty();
++ },
++ unbind: function() {
++ element && element.remove();
++ }
++ };
++};
++
++$.fn.selection = function(start, end) {
++ if (start !== undefined) {
++ return this.each(function() {
++ if( this.createTextRange ){
++ var selRange = this.createTextRange();
++ if (end === undefined || start == end) {
++ selRange.move("character", start);
++ selRange.select();
++ } else {
++ selRange.collapse(true);
++ selRange.moveStart("character", start);
++ selRange.moveEnd("character", end);
++ selRange.select();
++ }
++ } else if( this.setSelectionRange ){
++ this.setSelectionRange(start, end);
++ } else if( this.selectionStart ){
++ this.selectionStart = start;
++ this.selectionEnd = end;
++ }
++ });
++ }
++ var field = this[0];
++ if ( field.createTextRange ) {
++ var range = document.selection.createRange(),
++ orig = field.value,
++ teststring = "<->",
++ textLength = range.text.length;
++ range.text = teststring;
++ var caretAt = field.value.indexOf(teststring);
++ field.value = orig;
++ this.selection(caretAt, caretAt + textLength);
++ return {
++ start: caretAt,
++ end: caretAt + textLength
++ }
++ } else if( field.selectionStart !== undefined ){
++ return {
++ start: field.selectionStart,
++ end: field.selectionEnd
++ }
++ }
++};
++
++})(jQuery);
--- /dev/null
--- /dev/null
++/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
++ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
++ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
++ *
++ * $LastChangedDate: 2007-07-21 18:45:56 -0500 (Sat, 21 Jul 2007) $
++ * $Rev: 2447 $
++ *
++ * Version 2.1.1
++ */
++(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};})(jQuery);
--- /dev/null
--- /dev/null
++/*!
++ * jQuery JavaScript Library v1.4.1
++ * http://jquery.com/
++ *
++ * Copyright 2010, John Resig
++ * Dual licensed under the MIT or GPL Version 2 licenses.
++ * http://jquery.org/license
++ *
++ * Includes Sizzle.js
++ * http://sizzlejs.com/
++ * Copyright 2010, The Dojo Foundation
++ * Released under the MIT, BSD, and GPL Licenses.
++ *
++ * Date: Mon Jan 25 19:43:33 2010 -0500
++ */
++(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
++e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if(!(a.button&&a.type==="click")){for(o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
++a.currentTarget);m=0;for(s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if(i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
++11}function qa(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
++c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
++va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
++[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
++this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
++a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
++c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
++Oa;if(a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for(var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
++c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for(b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
++return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
++r.documentElement,d=r.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for(f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
++a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
++v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
++uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if(O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
++L,false);c.ready()};else if(r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
++{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
++b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
++c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
++{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
++{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
++a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
++return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
++a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=
++c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
++d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
++a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
++{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
++if(typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
++f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
++""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
++function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
++d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
++s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
++"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
++b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
++d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
++fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
++d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
++0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
++c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b=
++a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
++"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
++"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
++d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
++a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
++f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
++b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
++a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if(c.isFunction(f)){e=f;f=v}for(d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
++live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
++(function(){function a(g){for(var h="",k,l=0;g[l];l++){k=g[l];if(k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
++k){y=l[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
++typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
++l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
++y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
++h,k);if(l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for(var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
++l^!!I;if(k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
++TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if(l)h=h.toLowerCase();l=0;for(var q=g.length,
++p;l<q;l++)if(p=g[l]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
++h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for(var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
++TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
++"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
++return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
++g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
++0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error, unrecognized expression: "+
++q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for(;l=l.previousSibling;)if(l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
++0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
++k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
++try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
++h?0:1;if(g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
++l);if(g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
++return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
++2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
++0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
++l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
++function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
++0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
++-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
++a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
++nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
++e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
++b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
++col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
++wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
++d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
++false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
++!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
++["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
++b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if(!c.support.checkClone&&arguments.length===3&&typeof j===
++"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for(var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
++Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for(var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if(!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
++this.parentNode.removeChild(this)}},empty:function(){for(this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
++"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for(i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if(!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
++j=c.makeArray(i.childNodes)}if(j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for(a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
++Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
++c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
++b,d,f){if(b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
++a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
++a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
++J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if(typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
++c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if(n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
++(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
++b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
++function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
++function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
++N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if(e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
++c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if(e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
++A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if(w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
++e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(fa){}if(e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
++"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if(j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
++w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
++f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
++function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if(b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
++W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
++ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
++c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
++o=this;for(j in a){var m=j.replace(ha,ia);if(j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
++else{var B=xb.exec(x),C=A.cur(true)||0;if(B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
++1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
++b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
++null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
++"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
++this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
++c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=
++null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
++f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
++b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
++0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
++d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
++d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
++bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
++e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=
++this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if(!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
++c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
++e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);
--- /dev/null
--- /dev/null
++function choix(formulaire)
++ {
++ var j;
++ var i = formulaire.department.selectedIndex;
++ if (i == 0)
++ for(j = 1; j < '+ str(self.len_departments) + '; j++)
++ formulaire.conference.options[j].text="";
++ else{
++ switch (i){
++ for k in range(0, self.len_departments):
++ department = self.departments[k]
++ conferences = department['conferences']
++ #print conferences
++ conferences_t = dict2tuple(conferences)
++ #print conferences
++ conferences = '"'+'","'.join(conferences_t)+'"'
++ case '+str(k+1)+' : var text = new Array('+conferences+');
++ break;
++ }
++ for(j = 0; j<'+str(self.conference_nb_max)+'; j++)
++ formulaire.conference.options[j+1].text=text[j];
++ formulaire.conference.options[j+1].value=text[j];
++ }
++formulaire.conference.selectedIndex=0;}
--- /dev/null
--- /dev/null
++var sound = null;
++var soundUrl = null;
++var soundEngineReady = false;
++var map;
++var provider;
++var player;
++var player_image_url = null;
++
++function togglePlayerMaximization() {
++ var view = $('#player');
++ $('#player_maximized, #player_minimized').css('display', 'none');
++ var ctr;
++ if (view.parents('#player_maximized').length) {
++ ctr = $('#player_minimized').append(view);
++ } else {
++ ctr = $('#player_maximized').append(view);
++ }
++ ctr.css({opacity: 0, display: 'block'});
++ if (player)
++ player.resize();
++ ctr.animate({opacity: 1}, 100);
++}
++
++function load_sound() {
++ if (!sound && soundUrl && soundEngineReady) {
++ sound = soundManager.createSound({
++ id: 'sound',
++ url: soundUrl
++ });
++
++ TimeSide.load(function() {
++ provider.setSource(sound);
++ });
++ // sound.load(); // Auto-loading overloads the Django test server
++ }
++}
++
++function change_visualizer() {
++ set_player_image_url($('#visualizer_id').get(0).value);
++ if (player)
++ player.refreshImage();
++ return false;
++}
++
++function load_player(duration) {
++ $(document).ready(function () {
++ if (!$('#player').length)
++ return;
++
++ soundUrl = $('.ts-wave a').attr('href');
++
++ $('.ts-wave a img').insertAfter('.ts-wave a');
++ $('.ts-wave a').remove();
++
++ TimeSide.load(function() {
++ map = new TimeSide.MarkerMap();
++ provider = new TimeSide.SoundProvider({duration: duration});
++ player = new TimeSide.Player('#player', {
++ image: get_player_image_src
++ });
++ controller = new TimeSide.Controller({
++ player: player,
++ soundProvider: provider,
++ map: map
++ });
++ change_visualizer();
++ player.resize();
++ });
++
++ $('#visualizer_id').change(change_visualizer);
++ $('#visualizer_id_form').submit(change_visualizer);
++
++ $('#player_maximized .toggle, #player_minimized .toggle').click(function() {
++ togglePlayerMaximization();
++ this.blur();
++ return false;
++ });
++
++ load_sound();
++ });
++
++ soundManager.onload = function() {
++ soundEngineReady = true;
++ load_sound();
++ }
++
++}
++
++function set_player_image_url(str) {
++ player_image_url = str;
++}
++
++function get_player_image_src(width, height) {
++ var src = null;
++ if (player_image_url && (width || height)) {
++ src = player_image_url.replace('WIDTH', width + '').replace('HEIGHT', height + '');
++ }
++ return src;
++}
++
++
++
--- /dev/null
--- /dev/null
++function ResourceMap(list, cfg) {
++ var that = this;
++ that.list = null;
++ that.container = null;
++ that.map = null;
++
++ that.init = function(list, cfg) {
++ that.cfg = cfg;
++ $(document).ready(function() {
++ that.log("init");
++ that.list = $(list);
++ that.container = $('<div/>').addClass('gmap').css({'width': '100%', 'height': 300});
++ that.list.css('display', 'none').after(that.container);
++ var resizeTimer = null;
++ $(window).resize(function() {
++ if (resizeTimer)
++ clearTimeout(resizeTimer);
++ resizeTimer = setTimeout(that.resize, 100);
++ });
++ that.resize();
++ });
++ google.load('maps', '2');
++ google.setOnLoadCallback(function() {
++ that.createMap();
++ that.parseResources();
++ $(window).bind('unload', google.maps.Unload);
++ });
++ }
++
++ that.resize = function() {
++ if (that.container.css('display') == 'block') {
++ newHeight = that.container.height() + $(window).height() - $("#layout").height() + $('#footer').height();
++ if (newHeight < 300)
++ newHeight = 300;
++ if (newHeight != that.container.height()) {
++ that.container.height(newHeight);
++ if (that.map) {
++ that.map.checkResize();
++ }
++ }
++
++ }
++ }
++
++ that.toggle = function(force) {
++ force = typeof(force) == "undefined" ? null : force;
++ if (force == 'list' || (!force && that.list.css('display') == 'none')) {
++ that.container.css('display', 'none');
++ that.list.css('display', 'block');
++ } else {
++ that.container.css('display', 'block');
++ that.list.css('display', 'none');
++ that.resize();
++ }
++ }
++
++ that.log = function(msg) {
++ if (typeof(console) != "undefined" && typeof(console.log) != undefined) {
++ console.log(msg);
++ }
++ }
++
++ that.makeInfoBox = function(name, link, linktitle) {
++ var info = $('<div/>').addClass('resourcemap-info');
++ info.append($('<h2/>').text(name));
++ info.append($('<a/>').attr('href', link).text(linktitle));
++ return info.wrap('<div/>').parent().html();
++ }
++
++ that.showResourceInfo = function(marker, resourceElement) {
++ var info = $('<div/>').addClass('resourcemap-info');
++ marker.openInfoWindowHtml(info.get(0));
++ var re = /^resource-/;
++ var id = resourceElement.attr('id').replace(re, '');
++ var uri = that.cfg.countryInfoUri.replace('RESOURCEID', id);
++
++ $.get(uri, function(data) {
++ info.html(data);
++ //marker.openInfoWindowHtml(info.get(0));
++ });
++ }
++
++ that.parseResources = function() {
++ $('.resourcemap-element').each(function(i, e) {
++ e = $(e)
++ var input = e.find('.resourcemap-lat');
++ if (input.length) {
++ var lat = parseFloat(input.attr('value'));
++ var lng = parseFloat(e.find('.resourcemap-lng').attr('value'));
++ //var name = $.trim(e.find('.resourcemap-name').text());
++ //var link = e.find('a').attr('href');
++ //var linktitle = e.find('a').attr('title');
++ var marker = new google.maps.Marker(new GLatLng(lat, lng), {title: name});
++ //var info = that.makeInfoBox(name, link, linktitle);
++ google.maps.Event.addListener(marker, "click", function() {
++ that.showResourceInfo(marker, e);
++ //marker.openInfoWindowHtml(info);
++ });
++ that.map.addOverlay(marker);
++ }
++ });
++ }
++
++ that.createMap = function() {
++ that.log("GMap loaded");
++ if (google.maps.BrowserIsCompatible()) {
++ that.map = new google.maps.Map2(that.container[0]);
++ var bounds = new GLatLngBounds();
++ that.map.setCenter(new GLatLng(0, 0), that.map.getBoundsZoomLevel(bounds)); // France
++ that.map.setUIToDefault();
++ } else {
++ that.log("Browser isn't compatible with GMap ?!");
++ that.toggle();
++ }
++ }
++
++ that.init(list, cfg);
++}
--- /dev/null
--- /dev/null
++/*!\r
++ SoundManager 2: Javascript Sound for the Web\r
++ --------------------------------------------\r
++ http://schillmania.com/projects/soundmanager2/\r
++\r
++ Copyright (c) 2008, Scott Schiller. All rights reserved.\r
++ Code licensed under the BSD License:\r
++ http://schillmania.com/projects/soundmanager2/license.txt\r
++\r
++ V2.90a.20081028\r
++*/\r
++\r
++function SoundManager(smURL,smID) {\r
++ \r
++ this.flashVersion = 8; // version of flash to require, either 8 or 9. Some API features require Flash 9.\r
++ this.debugMode = true; // enable debugging output (div#soundmanager-debug, OR console if available + configured)\r
++ this.useConsole = true; // use firebug/safari console.log()-type debug console if available\r
++ this.consoleOnly = false; // if console is being used, do not create/write to #soundmanager-debug\r
++ this.waitForWindowLoad = false; // force SM2 to wait for window.onload() before trying to call soundManager.onload()\r
++ this.nullURL = 'null.mp3'; // path to "null" (empty) MP3 file, used to unload sounds (Flash 8 only)\r
++ this.allowPolling = true; // allow flash to poll for status update (required for "while playing", peak, sound spectrum functions to work.)\r
++ this.useMovieStar = false; // enable support for Flash 9.0r115+ (codename "MovieStar") MPEG4 audio + video formats (AAC, M4V, FLV, MOV etc.)\r
++ this.useHighPerformance = true; // flash positioning trick, improves JS/flash callback speed, minimizes delay\r
++ this.bgColor = '#ffffff'; // movie (.swf) background color, useful if showing on-screen for video etc.\r
++\r
++ this.defaultOptions = {\r
++ 'autoLoad': false, // enable automatic loading (otherwise .load() will be called on demand with .play(), the latter being nicer on bandwidth - if you want to .load yourself, you also can)\r
++ 'stream': true, // allows playing before entire file has loaded (recommended)\r
++ 'autoPlay': false, // enable playing of file as soon as possible (much faster if "stream" is true)\r
++ 'onid3': null, // callback function for "ID3 data is added/available"\r
++ 'onload': null, // callback function for "load finished"\r
++ 'whileloading': null, // callback function for "download progress update" (X of Y bytes received)\r
++ 'onplay': null, // callback for "play" start\r
++ 'onpause': null, // callback for "pause"\r
++ 'onresume': null, // callback for "resume" (pause toggle)\r
++ 'whileplaying': null, // callback during play (position update)\r
++ 'onstop': null, // callback for "user stop"\r
++ 'onfinish': null, // callback function for "sound finished playing"\r
++ 'onbeforefinish': null, // callback for "before sound finished playing (at [time])"\r
++ 'onbeforefinishtime': 5000, // offset (milliseconds) before end of sound to trigger beforefinish (eg. 1000 msec = 1 second)\r
++ 'onbeforefinishcomplete':null, // function to call when said sound finishes playing\r
++ 'onjustbeforefinish':null, // callback for [n] msec before end of current sound\r
++ 'onjustbeforefinishtime':200, // [n] - if not using, set to 0 (or null handler) and event will not fire.\r
++ 'multiShot': true, // let sounds "restart" or layer on top of each other when played multiple times, rather than one-shot/one at a time\r
++ 'position': null, // offset (milliseconds) to seek to within loaded sound data.\r
++ 'pan': 0, // "pan" settings, left-to-right, -100 to 100\r
++ 'volume': 100 // self-explanatory. 0-100, the latter being the max.\r
++ };\r
++\r
++ this.flash9Options = { // flash 9-only options, merged into defaultOptions if flash 9 is being used\r
++ 'isMovieStar': null, // "MovieStar" MPEG4 audio/video mode. Null (default) = auto detect MP4, AAC etc. based on URL. true = force on, ignore URL\r
++ 'usePeakData': false, // enable left/right channel peak (level) data\r
++ 'useWaveformData': false, // enable sound spectrum (raw waveform data) - WARNING: CPU-INTENSIVE: may set CPUs on fire.\r
++ 'useEQData': false // enable sound EQ (frequency spectrum data) - WARNING: Also CPU-intensive.\r
++ };\r
++\r
++ this.movieStarOptions = { // flash 9.0r115+ MPEG4 audio/video options, merged into defaultOptions if flash 9 + movieStar mode is enabled\r
++ 'onmetadata': null, // callback for when video width/height etc. are received\r
++ 'useVideo': false // if loading movieStar content, whether to show video\r
++ }\r
++\r
++ this.flashBlockHelper = {\r
++ 'enabled': false, // experimental, removed with >v2.80\r
++ 'message': [] // "nag bar" to show when messaging the user, if SM2 fails on firefox etc.\r
++ };\r
++\r
++ var _s = this; \r
++ this.version = null;\r
++ this.versionNumber = 'V2.90a.20081028';\r
++ this.movieURL = null;\r
++ this.url = null;\r
++ this.altURL = null;\r
++ this.swfLoaded = false;\r
++ this.enabled = false;\r
++ this.o = null;\r
++ this.id = (smID||'sm2movie');\r
++ this.oMC = null;\r
++ this.sounds = [];\r
++ this.soundIDs = [];\r
++ this.muted = false;\r
++ this.isIE = (navigator.userAgent.match(/MSIE/i));\r
++ this.isSafari = (navigator.userAgent.match(/safari/i));\r
++ this.isGecko = (navigator.userAgent.match(/gecko/i));\r
++ this.debugID = 'soundmanager-debug';\r
++ this._debugOpen = true;\r
++ this._didAppend = false;\r
++ this._appendSuccess = false;\r
++ this._didInit = false;\r
++ this._disabled = false;\r
++ this._windowLoaded = false;\r
++ this._hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined');\r
++ this._debugLevels = ['log','info','warn','error'];\r
++ this._defaultFlashVersion = 8;\r
++ this.filePatterns = {\r
++ flash8: /\.(mp3)/i,\r
++ flash9: /\.(mp3)/i\r
++ };\r
++ this.netStreamTypes = ['aac','flv','mov','mp4','m4v','f4v','m4a','mp4v','3gp','3g2']; // Flash v9.0r115+ "moviestar" formats\r
++ this.netStreamPattern = new RegExp('.('+this.netStreamTypes.join('|')+')','i');\r
++ this.filePattern = null;\r
++ this.features = {\r
++ peakData: false,\r
++ waveformData: false,\r
++ eqData: false\r
++ };\r
++\r
++ this.sandbox = {\r
++ 'type': null,\r
++ 'types': {\r
++ 'remote': 'remote (domain-based) rules',\r
++ 'localWithFile': 'local with file access (no internet access)',\r
++ 'localWithNetwork': 'local with network (internet access only, no local access)',\r
++ 'localTrusted': 'local, trusted (local + internet access)'\r
++ },\r
++ 'description': null,\r
++ 'noRemote': null,\r
++ 'noLocal': null\r
++ };\r
++\r
++ this._setVersionInfo = function() {\r
++ if (_s.flashVersion != 8 && _s.flashVersion != 9) {\r
++ alert('soundManager.flashVersion must be 8 or 9. "'+_s.flashVersion+'" is invalid. Reverting to '+_s._defaultFlashVersion+'.');\r
++ _s.flashVersion = _s._defaultFlashVersion;\r
++ }\r
++ _s.version = _s.versionNumber+(_s.flashVersion==9?' (AS3/Flash 9)':' (AS2/Flash 8)');\r
++ // set up default options\r
++ if (_s.flashVersion > 8) {\r
++ _s.defaultOptions = _s._mergeObjects(_s.defaultOptions,_s.flash9Options);\r
++ }\r
++ if (_s.flashVersion > 8 && _s.useMovieStar) {\r
++ _s.defaultOptions = _s._mergeObjects(_s.defaultOptions,_s.movieStarOptions);\r
++ _s.filePatterns.flash9 = new RegExp('.(mp3|'+_s.netStreamTypes.join('|')+')','i');\r
++ } else {\r
++ _s.useMovieStar = false;\r
++ }\r
++ _s.filePattern = _s.filePatterns[(_s.flashVersion!=8?'flash9':'flash8')];\r
++ _s.movieURL = (_s.flashVersion==8?'soundmanager2.swf':'soundmanager2_flash9.swf');\r
++ _s.features.peakData = _s.features.waveformData = _s.features.eqData = (_s.flashVersion==9);\r
++ }\r
++\r
++ this._overHTTP = (document.location?document.location.protocol.match(/http/i):null);\r
++ this._waitingforEI = false;\r
++ this._initPending = false;\r
++ this._tryInitOnFocus = (this.isSafari && typeof document.hasFocus == 'undefined');\r
++ this._isFocused = (typeof document.hasFocus != 'undefined'?document.hasFocus():null);\r
++ this._okToDisable = !this._tryInitOnFocus;\r
++\r
++ this.useAltURL = !this._overHTTP; // use altURL if not "online"\r
++\r
++ var flashCPLink = 'http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html';\r
++\r
++ // --- public methods ---\r
++ \r
++ this.supported = function() {\r
++ return (_s._didInit && !_s._disabled);\r
++ };\r
++\r
++ this.getMovie = function(smID) {\r
++ return _s.isIE?window[smID]:(_s.isSafari?document.getElementById(smID)||document[smID]:document.getElementById(smID));\r
++ };\r
++\r
++ this.loadFromXML = function(sXmlUrl) {\r
++ try {\r
++ _s.o._loadFromXML(sXmlUrl);\r
++ } catch(e) {\r
++ _s._failSafely();\r
++ return true;\r
++ };\r
++ };\r
++\r
++ this.createSound = function(oOptions) {\r
++ if (!_s._didInit) throw new Error('soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods');\r
++ if (arguments.length==2) {\r
++ // function overloading in JS! :) ..assume simple createSound(id,url) use case\r
++ var oOptions = {'id':arguments[0],'url':arguments[1]};\r
++ };\r
++ var thisOptions = _s._mergeObjects(oOptions); // inherit SM2 defaults\r
++ var _tO = thisOptions; // alias\r
++ _s._wD('soundManager.createSound(): '+_tO.id+' ('+_tO.url+')',1);\r
++ if (_s._idCheck(_tO.id,true)) {\r
++ _s._wD('soundManager.createSound(): '+_tO.id+' exists',1);\r
++ return _s.sounds[_tO.id];\r
++ };\r
++ if (_s.flashVersion > 8 && _s.useMovieStar) {\r
++ if (_tO.isMovieStar == null) {\r
++ _tO.isMovieStar = (_tO.url.match(_s.netStreamPattern)?true:false);\r
++ }\r
++ if (_tO.isMovieStar) {\r
++ _s._wD('soundManager.createSound(): using MovieStar handling');\r
++ }\r
++ if (_tO.isMovieStar && (_tO.usePeakData || _tO.useWaveformData || _tO.useEQData)) {\r
++ _s._wD('Warning: peak/waveform/eqData features unsupported for non-MP3 formats');\r
++ _tO.usePeakData = false;\r
++ _tO.useWaveformData = false;\r
++ _tO.useEQData = false;\r
++ }\r
++ };\r
++ _s.sounds[_tO.id] = new SMSound(_tO);\r
++ _s.soundIDs[_s.soundIDs.length] = _tO.id;\r
++ // AS2:\r
++ if (_s.flashVersion == 8) {\r
++ _s.o._createSound(_tO.id,_tO.onjustbeforefinishtime);\r
++ } else {\r
++ _s.o._createSound(_tO.id,_tO.url,_tO.onjustbeforefinishtime,_tO.usePeakData,_tO.useWaveformData,_tO.useEQData,_tO.isMovieStar,(_tO.isMovieStar?_tO.useVideo:false));\r
++ };\r
++ if (_tO.autoLoad || _tO.autoPlay) {\r
++ window.setTimeout(function() {\r
++ if (_s.sounds[_tO.id]) {\r
++ _s.sounds[_tO.id].load(_tO);\r
++ }\r
++ },20);\r
++ }\r
++ if (_tO.autoPlay) {\r
++ if (_s.flashVersion == 8) {\r
++ _s.sounds[_tO.id].playState = 1; // we can only assume this sound will be playing soon.\r
++ } else {\r
++ _s.sounds[_tO.id].play(); \r
++ }\r
++ }\r
++ return _s.sounds[_tO.id];\r
++ };\r
++\r
++ this.createVideo = function(oOptions) {\r
++ if (arguments.length==2) {\r
++ var oOptions = {'id':arguments[0],'url':arguments[1]};\r
++ };\r
++ if (_s.flashVersion >= 9) {\r
++ oOptions.isMovieStar = true;\r
++ oOptions.useVideo = true;\r
++ } else {\r
++ _s._wD('soundManager.createVideo(): flash 9 required for video. Exiting.',2);\r
++ return false;\r
++ }\r
++ if (!_s.useMovieStar) {\r
++ _s._wD('soundManager.createVideo(): MovieStar mode not enabled. Exiting.',2);\r
++ }\r
++ return _s.createSound(oOptions);\r
++ }\r
++\r
++ this.destroySound = function(sID,bFromSound) {\r
++ // explicitly destroy a sound before normal page unload, etc.\r
++ if (!_s._idCheck(sID)) return false;\r
++ for (var i=0; i<_s.soundIDs.length; i++) {\r
++ if (_s.soundIDs[i] == sID) {\r
++ _s.soundIDs.splice(i,1);\r
++ continue;\r
++ };\r
++ };\r
++ // conservative option: avoid crash with ze flash 8\r
++ // calling destroySound() within a sound onload() might crash firefox, certain flavours of winXP + flash 8??\r
++ // if (_s.flashVersion != 8) {\r
++ _s.sounds[sID].unload();\r
++ // }\r
++ if (!bFromSound) {\r
++ // ignore if being called from SMSound instance\r
++ _s.sounds[sID].destruct();\r
++ };\r
++ delete _s.sounds[sID];\r
++ };\r
++\r
++ this.destroyVideo = this.destroySound;\r
++\r
++ this.load = function(sID,oOptions) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].load(oOptions);\r
++ };\r
++\r
++ this.unload = function(sID) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].unload();\r
++ };\r
++\r
++ this.play = function(sID,oOptions) {\r
++ if (!_s._idCheck(sID)) {\r
++ if (typeof oOptions != 'Object') oOptions = {url:oOptions}; // overloading use case: play('mySound','/path/to/some.mp3');\r
++ if (oOptions && oOptions.url) {\r
++ // overloading use case, creation + playing of sound: .play('someID',{url:'/path/to.mp3'});\r
++ _s._wD('soundController.play(): attempting to create "'+sID+'"',1);\r
++ oOptions.id = sID;\r
++ _s.createSound(oOptions);\r
++ } else {\r
++ return false;\r
++ };\r
++ };\r
++ _s.sounds[sID].play(oOptions);\r
++ };\r
++\r
++ this.start = this.play; // just for convenience\r
++\r
++ this.setPosition = function(sID,nMsecOffset) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ nMsecOffset = Math.min((nMsecOffset||0),_s.duration); // don't allow seek past loaded duration\r
++ _s.sounds[sID].setPosition(nMsecOffset);\r
++ };\r
++\r
++ this.stop = function(sID) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s._wD('soundManager.stop('+sID+')',1);\r
++ _s.sounds[sID].stop(); \r
++ };\r
++\r
++ this.stopAll = function() {\r
++ _s._wD('soundManager.stopAll()',1);\r
++ for (var oSound in _s.sounds) {\r
++ if (_s.sounds[oSound] instanceof SMSound) _s.sounds[oSound].stop(); // apply only to sound objects\r
++ };\r
++ };\r
++\r
++ this.pause = function(sID) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].pause();\r
++ };\r
++\r
++ this.pauseAll = function() {\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].pause();\r
++ }\r
++ };\r
++\r
++ this.resume = function(sID) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].resume();\r
++ };\r
++\r
++ this.resumeAll = function() {\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].resume();\r
++ }\r
++ };\r
++\r
++ this.togglePause = function(sID) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].togglePause();\r
++ };\r
++\r
++ this.setPan = function(sID,nPan) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].setPan(nPan);\r
++ };\r
++\r
++ this.setVolume = function(sID,nVol) {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s.sounds[sID].setVolume(nVol);\r
++ };\r
++\r
++ this.mute = function(sID) {\r
++ if (typeof sID != 'string') sID = null;\r
++ if (!sID) {\r
++ var o = null;\r
++ _s._wD('soundManager.mute(): Muting all sounds');\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].mute();\r
++ }\r
++ _s.muted = true;\r
++ } else {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s._wD('soundManager.mute(): Muting "'+sID+'"');\r
++ _s.sounds[sID].mute();\r
++ }\r
++ };\r
++\r
++ this.muteAll = function() {\r
++ _s.mute();\r
++ };\r
++\r
++ this.unmute = function(sID) {\r
++ if (typeof sID != 'string') sID = null;\r
++ if (!sID) {\r
++ var o = null;\r
++ _s._wD('soundManager.unmute(): Unmuting all sounds');\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].unmute();\r
++ }\r
++ _s.muted = false;\r
++ } else {\r
++ if (!_s._idCheck(sID)) return false;\r
++ _s._wD('soundManager.unmute(): Unmuting "'+sID+'"');\r
++ _s.sounds[sID].unmute();\r
++ }\r
++ };\r
++\r
++ this.unmuteAll = function() {\r
++ _s.unmute();\r
++ };\r
++\r
++ this.setPolling = function(bPolling) {\r
++ if (!_s.o || !_s.allowPolling) return false;\r
++ // _s._wD('soundManager.setPolling('+bPolling+')');\r
++ _s.o._setPolling(bPolling);\r
++ };\r
++\r
++ this.disable = function(bUnload) {\r
++ // destroy all functions\r
++ if (_s._disabled) return false;\r
++ _s._disabled = true;\r
++ _s._wD('soundManager.disable(): Disabling all functions - future calls will return false.',1);\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s._disableObject(_s.sounds[_s.soundIDs[i]]);\r
++ };\r
++ _s.initComplete(); // fire "complete", despite fail\r
++ _s._disableObject(_s);\r
++ };\r
++\r
++ this.handleFlashBlock = function(bForce) {\r
++ // experimental, removed with >v2.80.\r
++ return false;\r
++ };\r
++\r
++ this.canPlayURL = function(sURL) {\r
++ return (sURL?(sURL.match(_s.filePattern)?true:false):null); \r
++ };\r
++\r
++ this.getSoundById = function(sID,suppressDebug) {\r
++ if (!sID) throw new Error('SoundManager.getSoundById(): sID is null/undefined');\r
++ var result = _s.sounds[sID];\r
++ if (!result && !suppressDebug) {\r
++ _s._wD('"'+sID+'" is an invalid sound ID.',2);\r
++ // soundManager._wD('trace: '+arguments.callee.caller);\r
++ };\r
++ return result;\r
++ };\r
++\r
++ this.onload = function() {\r
++ // window.onload() equivalent for SM2, ready to create sounds etc.\r
++ // this is a stub - you can override this in your own external script, eg. soundManager.onload = function() {}\r
++ soundManager._wD('<em>Warning</em>: soundManager.onload() is undefined.',2);\r
++ };\r
++\r
++ this.onerror = function() {\r
++ // stub for user handler, called when SM2 fails to load/init\r
++ };\r
++\r
++ // --- "private" methods ---\r
++\r
++ this._idCheck = this.getSoundById;\r
++\r
++ this._disableObject = function(o) {\r
++ for (var oProp in o) {\r
++ if (typeof o[oProp] == 'function' && typeof o[oProp]._protected == 'undefined') o[oProp] = function(){return false;};\r
++ };\r
++ oProp = null;\r
++ };\r
++\r
++ this._failSafely = function() {\r
++ // exception handler for "object doesn't support this property or method" or general failure\r
++ var fpgssTitle = 'You may need to whitelist this location/domain eg. file:///C:/ or C:/ or mysite.com, or set ALWAYS ALLOW under the Flash Player Global Security Settings page. The latter is probably less-secure.';\r
++ var flashCPL = '<a href="'+flashCPLink+'" title="'+fpgssTitle+'">view/edit</a>';\r
++ var FPGSS = '<a href="'+flashCPLink+'" title="Flash Player Global Security Settings">FPGSS</a>';\r
++ if (!_s._disabled) {\r
++ _s._wD('soundManager: Failed to initialise.',2);\r
++ _s.disable();\r
++ };\r
++ };\r
++ \r
++ this._normalizeMovieURL = function(smURL) {\r
++ if (smURL) {\r
++ if (smURL.match(/\.swf/)) {\r
++ smURL = smURL.substr(0,smURL.lastIndexOf('.swf'));\r
++ }\r
++ if (smURL.lastIndexOf('/') != smURL.length-1) {\r
++ smURL = smURL+'/';\r
++ }\r
++ }\r
++ return(smURL && smURL.lastIndexOf('/')!=-1?smURL.substr(0,smURL.lastIndexOf('/')+1):'./')+_s.movieURL;\r
++ };\r
++\r
++ this._getDocument = function() {\r
++ return (document.body?document.body:(document.documentElement?document.documentElement:document.getElementsByTagName('div')[0]));\r
++ };\r
++\r
++ this._getDocument._protected = true;\r
++\r
++ this._createMovie = function(smID,smURL) {\r
++ if (_s._didAppend && _s._appendSuccess) return false; // ignore if already succeeded\r
++ if (window.location.href.indexOf('debug=1')+1) _s.debugMode = true; // allow force of debug mode via URL\r
++ _s._didAppend = true;\r
++ \r
++ // safety check for legacy (change to Flash 9 URL)\r
++ _s._setVersionInfo();\r
++ var remoteURL = (smURL?smURL:_s.url);\r
++ var localURL = (_s.altURL?_s.altURL:remoteURL);\r
++ _s.url = _s._normalizeMovieURL(_s._overHTTP?remoteURL:localURL);\r
++ smURL = _s.url;\r
++\r
++ var htmlEmbed = '<embed name="'+smID+'" id="'+smID+'" src="'+smURL+'" width="100%" height="100%" quality="high" allowScriptAccess="always" quality="high" '+(_s.useHighPerformance && !_s.useMovieStar?'wmode="transparent" ':'')+'bgcolor="'+_s.bgColor+'" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>';\r
++ var htmlObject = '<object id="'+smID+'" data="'+smURL+'" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="'+smURL+'" /><param name="AllowScriptAccess" value="always" /><param name="quality" value="high" />'+(_s.useHighPerformance && !_s.useMovieStar?'<param name="wmode" value="transparent" /> ':'')+'<param name="bgcolor" value="'+_s.bgColor+'" /><!-- --></object>';\r
++ var html = (!_s.isIE?htmlEmbed:htmlObject);\r
++\r
++ var toggleElement = '<div id="'+_s.debugID+'-toggle" style="position:fixed;_position:absolute;right:0px;bottom:0px;_top:0px;width:1.2em;height:1.2em;line-height:1.2em;margin:2px;padding:0px;text-align:center;border:1px solid #999;cursor:pointer;background:#fff;color:#333;z-index:10001" title="Toggle SM2 debug console" onclick="soundManager._toggleDebug()">-</div>';\r
++ var debugHTML = '<div id="'+_s.debugID+'" style="display:'+(_s.debugMode && ((!_s._hasConsole||!_s.useConsole)||(_s.useConsole && _s._hasConsole && !_s.consoleOnly))?'block':'none')+';opacity:0.85"></div>';\r
++ var appXHTML = 'soundManager._createMovie(): appendChild/innerHTML set failed. May be app/xhtml+xml DOM-related.';\r
++\r
++ var oTarget = _s._getDocument();\r
++ if (oTarget) {\r
++ \r
++ _s.oMC = document.getElementById('sm2-container')?document.getElementById('sm2-container'):document.createElement('div');\r
++ if (!_s.oMC.id) {\r
++ _s.oMC.id = 'sm2-container';\r
++ _s.oMC.className = 'movieContainer';\r
++ // "hide" flash movie\r
++ var s = null;\r
++ if (_s.useHighPerformance) {\r
++ s = {\r
++ position: 'fixed',\r
++ width: '8px',\r
++ height: '8px', // must be at least 6px for flash to run fast. odd? yes.\r
++ bottom: '0px',\r
++ left: '0px',\r
++ zIndex:-1 // sit behind everything else\r
++ }\r
++ } else {\r
++ s = {\r
++ position: 'absolute',\r
++ width: '1px',\r
++ height: '1px',\r
++ bottom: '0px',\r
++ left: '0px'\r
++ }\r
++ }\r
++ var x = null;\r
++ for (x in s) {\r
++ _s.oMC.style[x] = s[x];\r
++ }\r
++ try {\r
++ oTarget.appendChild(_s.oMC);\r
++ _s.oMC.innerHTML = html;\r
++ _s._appendSuccess = true;\r
++ } catch(e) {\r
++ throw new Error(appXHTML);\r
++ }\r
++ } else {\r
++ // it's already in the document.\r
++ _s.oMC.innerHTML = html;\r
++ _s._appendSuccess = true;\r
++ }\r
++ if (!document.getElementById(_s.debugID) && ((!_s._hasConsole||!_s.useConsole)||(_s.useConsole && _s._hasConsole && !_s.consoleOnly))) {\r
++ var oDebug = document.createElement('div');\r
++ oDebug.id = _s.debugID;\r
++ oDebug.style.display = (_s.debugMode?'block':'none');\r
++ if (_s.debugMode) {\r
++ try {\r
++ var oD = document.createElement('div');\r
++ oTarget.appendChild(oD);\r
++ oD.innerHTML = toggleElement;\r
++ } catch(e) {\r
++ throw new Error(appXHTML);\r
++ };\r
++ };\r
++ oTarget.appendChild(oDebug);\r
++ };\r
++ oTarget = null;\r
++ };\r
++ _s._wD('-- SoundManager 2 '+_s.version+(_s.useMovieStar?', MovieStar mode':'')+(_s._wD?', high performance mode':'')+' --',1);\r
++ _s._wD('soundManager._createMovie(): Trying to load '+smURL+(!_s._overHTTP && _s.altURL?'(alternate URL)':''),1);\r
++ };\r
++\r
++ // aliased to this._wD()\r
++ this._writeDebug = function(sText,sType,bTimestamp) {\r
++ if (!_s.debugMode) return false;\r
++ if (typeof bTimestamp != 'undefined' && bTimestamp) {\r
++ sText = sText + ' | '+new Date().getTime();\r
++ };\r
++ if (_s._hasConsole && _s.useConsole) {\r
++ var sMethod = _s._debugLevels[sType];\r
++ if (typeof console[sMethod] != 'undefined') {\r
++ console[sMethod](sText);\r
++ } else {\r
++ console.log(sText);\r
++ };\r
++ if (_s.useConsoleOnly) return true;\r
++ };\r
++ var sDID = 'soundmanager-debug';\r
++ try {\r
++ var o = document.getElementById(sDID);\r
++ if (!o) return false;\r
++ var oItem = document.createElement('div');\r
++ sText = sText.replace(/\n/g,'<br />');\r
++ if (typeof sType == 'undefined') {\r
++ var sType = 0;\r
++ } else {\r
++ sType = parseInt(sType);\r
++ };\r
++ oItem.innerHTML = sText;\r
++ if (sType) {\r
++ if (sType >= 2) oItem.style.fontWeight = 'bold';\r
++ if (sType == 3) oItem.style.color = '#ff3333';\r
++ };\r
++ // o.appendChild(oItem); // top-to-bottom\r
++ o.insertBefore(oItem,o.firstChild); // bottom-to-top\r
++ } catch(e) {\r
++ // oh well\r
++ };\r
++ o = null;\r
++ };\r
++ this._writeDebug._protected = true;\r
++ this._wD = this._writeDebug;\r
++\r
++ this._wDAlert = function(sText) { alert(sText); };\r
++\r
++ if (window.location.href.indexOf('debug=alert')+1 && _s.debugMode) {\r
++ _s._wD = _s._wDAlert;\r
++ };\r
++\r
++ this._toggleDebug = function() {\r
++ var o = document.getElementById(_s.debugID);\r
++ var oT = document.getElementById(_s.debugID+'-toggle');\r
++ if (!o) return false;\r
++ if (_s._debugOpen) {\r
++ // minimize\r
++ oT.innerHTML = '+';\r
++ o.style.display = 'none';\r
++ } else {\r
++ oT.innerHTML = '-';\r
++ o.style.display = 'block';\r
++ };\r
++ _s._debugOpen = !_s._debugOpen;\r
++ };\r
++\r
++ this._toggleDebug._protected = true;\r
++\r
++ this._debug = function() {\r
++ _s._wD('--- soundManager._debug(): Current sound objects ---',1);\r
++ for (var i=0,j=_s.soundIDs.length; i<j; i++) {\r
++ _s.sounds[_s.soundIDs[i]]._debug();\r
++ };\r
++ };\r
++\r
++ this._mergeObjects = function(oMain,oAdd) {\r
++ // non-destructive merge\r
++ var o1 = {}; // clone o1\r
++ for (var i in oMain) {\r
++ o1[i] = oMain[i];\r
++ }\r
++ var o2 = (typeof oAdd == 'undefined'?_s.defaultOptions:oAdd);\r
++ for (var o in o2) {\r
++ if (typeof o1[o] == 'undefined') o1[o] = o2[o];\r
++ };\r
++ return o1;\r
++ };\r
++\r
++ this.createMovie = function(sURL) {\r
++ if (sURL) _s.url = sURL;\r
++ _s._initMovie();\r
++ };\r
++\r
++ this.go = this.createMovie; // nice alias\r
++\r
++ this._initMovie = function() {\r
++ // attempt to get, or create, movie\r
++ if (_s.o) return false; // pre-init may have fired this function before window.onload(), may already exist\r
++ _s.o = _s.getMovie(_s.id); // try to get flash movie (inline markup)\r
++ if (!_s.o) {\r
++ // try to create\r
++ _s._createMovie(_s.id,_s.url);\r
++ _s.o = _s.getMovie(_s.id);\r
++ };\r
++ if (_s.o) {\r
++ _s._wD('soundManager._initMovie(): Got '+_s.o.nodeName+' element ('+(_s._didAppend?'created via JS':'static HTML')+')',1);\r
++ _s._wD('soundManager._initMovie(): Waiting for ExternalInterface call from Flash..');\r
++ };\r
++ };\r
++\r
++ this.waitForExternalInterface = function() {\r
++ if (_s._waitingForEI) return false;\r
++ _s._waitingForEI = true;\r
++ if (_s._tryInitOnFocus && !_s._isFocused) {\r
++ _s._wD('soundManager: Special case: Flash may not have started due to non-focused tab (Safari is lame), and/or focus cannot be detected. Waiting for focus-related event..');\r
++ return false;\r
++ };\r
++ if (!_s._didInit) {\r
++ _s._wD('soundManager: Getting impatient, still waiting for Flash.. ;)');\r
++ };\r
++ setTimeout(function() {\r
++ if (!_s._didInit) {\r
++ _s._wD('soundManager: No Flash response within reasonable time after document load.\nPossible causes: Flash version under 8, no support, or Flash security denying JS-Flash communication.',2);\r
++ if (!_s._overHTTP) {\r
++ _s._wD('soundManager: Loading this page from local/network file system (not over HTTP?) Flash security likely restricting JS-Flash access. Consider adding current URL to "trusted locations" in the Flash player security settings manager at '+flashCPLink+', or simply serve this content over HTTP.',2);\r
++ };\r
++ };\r
++ // if still not initialized and no other options, give up\r
++ if (!_s._didInit && _s._okToDisable) _s._failSafely();\r
++ },750);\r
++ };\r
++\r
++ this.handleFocus = function() {\r
++ if (_s._isFocused || !_s._tryInitOnFocus) return true;\r
++ _s._okToDisable = true;\r
++ _s._isFocused = true;\r
++ _s._wD('soundManager.handleFocus()');\r
++ if (_s._tryInitOnFocus) {\r
++ // giant Safari 3.1 hack - assume window in focus if mouse is moving, since document.hasFocus() not currently implemented.\r
++ window.removeEventListener('mousemove',_s.handleFocus,false);\r
++ };\r
++ // allow init to restart\r
++ _s._waitingForEI = false;\r
++ setTimeout(_s.waitForExternalInterface,500);\r
++ // detach event\r
++ if (window.removeEventListener) {\r
++ window.removeEventListener('focus',_s.handleFocus,false);\r
++ } else if (window.detachEvent) {\r
++ window.detachEvent('onfocus',_s.handleFocus);\r
++ };\r
++ };\r
++\r
++ this.initComplete = function() {\r
++ if (_s._didInit) return false;\r
++ _s._didInit = true;\r
++ _s._wD('-- SoundManager 2 '+(_s._disabled?'failed to load':'loaded')+' ('+(_s._disabled?'security/load error':'OK')+') --',1);\r
++ if (_s._disabled) {\r
++ _s._wD('soundManager.initComplete(): calling soundManager.onerror()',1);\r
++ _s.onerror.apply(window);\r
++ return false;\r
++ };\r
++ if (_s.waitForWindowLoad && !_s._windowLoaded) {\r
++ _s._wD('soundManager: Waiting for window.onload()');\r
++ if (window.addEventListener) {\r
++ window.addEventListener('load',_s.initUserOnload,false);\r
++ } else if (window.attachEvent) {\r
++ window.attachEvent('onload',_s.initUserOnload);\r
++ };\r
++ return false;\r
++ } else {\r
++ if (_s.waitForWindowLoad && _s._windowLoaded) {\r
++ _s._wD('soundManager: Document already loaded');\r
++ };\r
++ _s.initUserOnload();\r
++ };\r
++ };\r
++\r
++ this.initUserOnload = function() {\r
++ _s._wD('soundManager.initComplete(): calling soundManager.onload()',1);\r
++ // call user-defined "onload", scoped to window\r
++ //try {\r
++ _s.onload.apply(window);\r
++ /*\r
++ } catch(e) {\r
++ // something broke (likely JS error in user function)\r
++ _s._wD('soundManager.onload() threw an exception: '+e.message,2);\r
++ setTimeout(function(){throw new Error(e)},20);\r
++ return false;\r
++ };\r
++ */\r
++ _s._wD('soundManager.onload() complete',1);\r
++ };\r
++\r
++ this.init = function() {\r
++ _s._wD('-- soundManager.init() --');\r
++ // called after onload()\r
++ _s._initMovie();\r
++ if (_s._didInit) {\r
++ _s._wD('soundManager.init(): Already called?');\r
++ return false;\r
++ };\r
++ // event cleanup\r
++ if (window.removeEventListener) {\r
++ window.removeEventListener('load',_s.beginDelayedInit,false);\r
++ } else if (window.detachEvent) {\r
++ window.detachEvent('onload',_s.beginDelayedInit);\r
++ };\r
++ try {\r
++ _s._wD('Attempting to call JS -> Flash..');\r
++ _s.o._externalInterfaceTest(false); // attempt to talk to Flash\r
++ // _s._wD('Flash ExternalInterface call (JS-Flash) OK',1);\r
++ if (!_s.allowPolling) {\r
++ _s._wD('Polling (whileloading/whileplaying support) is disabled.',1);\r
++ }\r
++ _s.setPolling(true);\r
++ if (!_s.debugMode) _s.o._disableDebug();\r
++ _s.enabled = true;\r
++ } catch(e) {\r
++ _s._failSafely();\r
++ _s.initComplete();\r
++ return false;\r
++ };\r
++ _s.initComplete();\r
++ };\r
++\r
++ this.beginDelayedInit = function() {\r
++ _s._wD('soundManager.beginDelayedInit(): Document loaded');\r
++ _s._windowLoaded = true;\r
++ setTimeout(_s.waitForExternalInterface,500);\r
++ setTimeout(_s.beginInit,20);\r
++ };\r
++\r
++ this.beginInit = function() {\r
++ if (_s._initPending) return false;\r
++ _s.createMovie(); // ensure creation if not already done\r
++ _s._initMovie();\r
++ _s._initPending = true;\r
++ return true;\r
++ };\r
++\r
++ this.domContentLoaded = function() {\r
++ _s._wD('soundManager.domContentLoaded()');\r
++ if (document.removeEventListener) document.removeEventListener('DOMContentLoaded',_s.domContentLoaded,false);\r
++ _s.go();\r
++ };\r
++\r
++ this._externalInterfaceOK = function() {\r
++ // callback from flash for confirming that movie loaded, EI is working etc.\r
++ if (_s.swfLoaded) return false;\r
++ _s._wD('soundManager._externalInterfaceOK()');\r
++ _s.swfLoaded = true;\r
++ _s._tryInitOnFocus = false;\r
++ if (_s.isIE) {\r
++ // IE needs a timeout OR delay until window.onload - may need TODO: investigating\r
++ setTimeout(_s.init,100);\r
++ } else {\r
++ _s.init();\r
++ };\r
++ };\r
++\r
++ this._setSandboxType = function(sandboxType) {\r
++ var sb = _s.sandbox;\r
++ sb.type = sandboxType;\r
++ sb.description = sb.types[(typeof sb.types[sandboxType] != 'undefined'?sandboxType:'unknown')];\r
++ _s._wD('Flash security sandbox type: '+sb.type);\r
++ if (sb.type == 'localWithFile') {\r
++ sb.noRemote = true;\r
++ sb.noLocal = false;\r
++ _s._wD('Flash security note: Network/internet URLs will not load due to security restrictions. Access can be configured via Flash Player Global Security Settings Page: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html',2);\r
++ } else if (sb.type == 'localWithNetwork') {\r
++ sb.noRemote = false;\r
++ sb.noLocal = true;\r
++ } else if (sb.type == 'localTrusted') {\r
++ sb.noRemote = false;\r
++ sb.noLocal = false;\r
++ };\r
++ };\r
++\r
++ this.destruct = function() {\r
++ _s._wD('soundManager.destruct()');\r
++ _s.disable(true);\r
++ };\r
++ \r
++ // SMSound (sound object)\r
++ \r
++ function SMSound(oOptions) {\r
++ var _t = this;\r
++ this.sID = oOptions.id;\r
++ this.url = oOptions.url;\r
++ this.options = _s._mergeObjects(oOptions);\r
++ this.instanceOptions = this.options; // per-play-instance-specific options\r
++ this._iO = this.instanceOptions; // short alias\r
++\r
++ this._debug = function() {\r
++ if (_s.debugMode) {\r
++ var stuff = null;\r
++ var msg = [];\r
++ var sF = null;\r
++ var sfBracket = null;\r
++ var maxLength = 64; // # of characters of function code to show before truncating\r
++ for (stuff in _t.options) {\r
++ if (_t.options[stuff] != null) {\r
++ if (_t.options[stuff] instanceof Function) {\r
++ // handle functions specially\r
++ sF = _t.options[stuff].toString();\r
++ sF = sF.replace(/\s\s+/g,' '); // normalize spaces\r
++ sfBracket = sF.indexOf('{');\r
++ msg[msg.length] = ' '+stuff+': {'+sF.substr(sfBracket+1,(Math.min(Math.max(sF.indexOf('\n')-1,maxLength),maxLength))).replace(/\n/g,'')+'... }';\r
++ } else {\r
++ msg[msg.length] = ' '+stuff+': '+_t.options[stuff];\r
++ };\r
++ };\r
++ };\r
++ _s._wD('SMSound() merged options: {\n'+msg.join(', \n')+'\n}');\r
++ };\r
++ };\r
++\r
++ this._debug();\r
++\r
++ this.id3 = {\r
++ /* \r
++ Name/value pairs set via Flash when available - see reference for names:\r
++ http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001567.html\r
++ (eg., this.id3.songname or this.id3['songname'])\r
++ */\r
++ };\r
++\r
++ this.resetProperties = function(bLoaded) {\r
++ _t.bytesLoaded = null;\r
++ _t.bytesTotal = null;\r
++ _t.position = null;\r
++ _t.duration = null;\r
++ _t.durationEstimate = null;\r
++ _t.loaded = false;\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ _t.readyState = 0; // 0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success\r
++ _t.muted = false;\r
++ _t.didBeforeFinish = false;\r
++ _t.didJustBeforeFinish = false;\r
++ _t.instanceOptions = {};\r
++ _t.instanceCount = 0;\r
++ _t.peakData = {\r
++ left: 0,\r
++ right: 0\r
++ };\r
++ _t.waveformData = [];\r
++ _t.eqData = [];\r
++ };\r
++\r
++ _t.resetProperties();\r
++\r
++ // --- public methods ---\r
++\r
++ this.load = function(oOptions) {\r
++ if (typeof oOptions != 'undefined') {\r
++ _t._iO = _s._mergeObjects(oOptions);\r
++ _t.instanceOptions = _t._iO;\r
++ } else {\r
++ var oOptions = _t.options;\r
++ _t._iO = oOptions;\r
++ _t.instanceOptions = _t._iO;\r
++ } \r
++ if (typeof _t._iO.url == 'undefined') _t._iO.url = _t.url;\r
++ _s._wD('soundManager.load(): '+_t._iO.url,1);\r
++ if (_t._iO.url == _t.url && _t.readyState != 0 && _t.readyState != 2) {\r
++ _s._wD('soundManager.load(): current URL already assigned.',1);\r
++ return false;\r
++ }\r
++ _t.loaded = false;\r
++ _t.readyState = 1;\r
++ _t.playState = (oOptions.autoPlay?1:0); // if autoPlay, assume "playing" is true (no way to detect when it actually starts in Flash unless onPlay is watched?)\r
++ try {\r
++ if (_s.flashVersion==8) {\r
++ _s.o._load(_t.sID,_t._iO.url,_t._iO.stream,_t._iO.autoPlay,(_t._iO.whileloading?1:0));\r
++ } else {\r
++ _s.o._load(_t.sID,_t._iO.url,_t._iO.stream?true:false,_t._iO.autoPlay?true:false); // ,(_tO.whileloading?true:false)\r
++ if (_t._iO.isMovieStar && _t._iO.autoLoad && !_t._iO.autoPlay) {\r
++ // special case: MPEG4 content must start playing to load, then pause to prevent playing.\r
++ _t.pause();\r
++ }\r
++ };\r
++ } catch(e) {\r
++ _s._wD('SMSound.load(): Exception: JS-Flash communication failed, or JS error.',2);\r
++ _s.onerror();\r
++ _s.disable();\r
++ };\r
++ };\r
++\r
++ this.unload = function() {\r
++ // Flash 8/AS2 can't "close" a stream - fake it by loading an empty MP3\r
++ // Flash 9/AS3: Close stream, preventing further load\r
++ if (_t.readyState != 0) {\r
++ _s._wD('SMSound.unload(): "'+_t.sID+'"');\r
++ if (_t.readyState != 2) { // reset if not error\r
++ _t.setPosition(0); // reset current sound positioning\r
++ }\r
++ _s.o._unload(_t.sID,_s.nullURL);\r
++ // reset load/status flags\r
++ _t.resetProperties();\r
++ }\r
++ };\r
++\r
++ this.destruct = function() {\r
++ // kill sound within Flash\r
++ _s._wD('SMSound.destruct(): "'+_t.sID+'"');\r
++ _s.o._destroySound(_t.sID);\r
++ _s.destroySound(_t.sID,true); // ensure deletion from controller\r
++ }\r
++\r
++ this.play = function(oOptions) {\r
++ if (!oOptions) oOptions = {};\r
++ _t._iO = _s._mergeObjects(oOptions,_t._iO);\r
++ _t._iO = _s._mergeObjects(_t._iO,_t.options);\r
++ _t.instanceOptions = _t._iO;\r
++ if (_t.playState == 1) {\r
++ var allowMulti = _t._iO.multiShot;\r
++ if (!allowMulti) {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" already playing (one-shot)',1);\r
++ return false;\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" already playing (multi-shot)',1);\r
++ };\r
++ };\r
++ if (!_t.loaded) {\r
++ if (_t.readyState == 0) {\r
++ _s._wD('SMSound.play(): Attempting to load "'+_t.sID+'"',1);\r
++ // try to get this sound playing ASAP\r
++ _t._iO.stream = true;\r
++ _t._iO.autoPlay = true;\r
++ // TODO: need to investigate when false, double-playing\r
++ // if (typeof oOptions.autoPlay=='undefined') _tO.autoPlay = true; // only set autoPlay if unspecified here\r
++ _t.load(_t._iO); // try to get this sound playing ASAP\r
++ } else if (_t.readyState == 2) {\r
++ _s._wD('SMSound.play(): Could not load "'+_t.sID+'" - exiting',2);\r
++ return false;\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" is loading - attempting to play..',1);\r
++ };\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'"');\r
++ };\r
++ if (_t.paused) {\r
++ _t.resume();\r
++ } else {\r
++ _t.playState = 1;\r
++ if (!_t.instanceCount || _s.flashVersion == 9) _t.instanceCount++;\r
++ _t.position = (typeof _t._iO.position != 'undefined' && !isNaN(_t._iO.position)?_t._iO.position:0);\r
++ if (_t._iO.onplay) _t._iO.onplay.apply(_t);\r
++ _t.setVolume(_t._iO.volume);\r
++ _t.setPan(_t._iO.pan);\r
++ _s.o._start(_t.sID,_t._iO.loop||1,(_s.flashVersion==9?_t.position:_t.position/1000));\r
++ };\r
++ };\r
++\r
++ this.start = this.play; // just for convenience\r
++\r
++ this.stop = function(bAll) {\r
++ if (_t.playState == 1) {\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ // if (_s.defaultOptions.onstop) _s.defaultOptions.onstop.apply(_s);\r
++ if (_t._iO.onstop) _t._iO.onstop.apply(_t);\r
++ _s.o._stop(_t.sID,bAll);\r
++ _t.instanceCount = 0;\r
++ _t._iO = {};\r
++ // _t.instanceOptions = _t._iO;\r
++ };\r
++ };\r
++\r
++ this.setPosition = function(nMsecOffset) {\r
++ _t._iO.position = nMsecOffset;\r
++ _s._wD('SMSound.setPosition('+nMsecOffset+')');\r
++ _s.o._setPosition(_t.sID,(_s.flashVersion==9?_t._iO.position:_t._iO.position/1000),(_t.paused||!_t.playState)); // if paused or not playing, will not resume (by playing)\r
++ };\r
++\r
++ this.pause = function() {\r
++ if (_t.paused || _t.playState == 0) return false;\r
++ _s._wD('SMSound.pause()');\r
++ _t.paused = true;\r
++ _s.o._pause(_t.sID);\r
++ if (_t._iO.onpause) _t._iO.onpause.apply(_t);\r
++ };\r
++\r
++ this.resume = function() {\r
++ if (!_t.paused || _t.playState == 0) return false;\r
++ _s._wD('SMSound.resume()');\r
++ _t.paused = false;\r
++ _s.o._pause(_t.sID); // flash method is toggle-based (pause/resume)\r
++ if (_t._iO.onresume) _t._iO.onresume.apply(_t);\r
++ };\r
++\r
++ this.togglePause = function() {\r
++ _s._wD('SMSound.togglePause()');\r
++ if (!_t.playState) {\r
++ _t.play({position:(_s.flashVersion==9?_t.position:_t.position/1000)});\r
++ return false;\r
++ };\r
++ if (_t.paused) {\r
++ _t.resume();\r
++ } else {\r
++ _t.pause();\r
++ };\r
++ };\r
++\r
++ this.setPan = function(nPan) {\r
++ if (typeof nPan == 'undefined') nPan = 0;\r
++ _s.o._setPan(_t.sID,nPan);\r
++ _t._iO.pan = nPan;\r
++ };\r
++\r
++ this.setVolume = function(nVol) {\r
++ if (typeof nVol == 'undefined') nVol = 100;\r
++ _s.o._setVolume(_t.sID,(_s.muted&&!_t.muted)||_t.muted?0:nVol);\r
++ _t._iO.volume = nVol;\r
++ };\r
++\r
++ this.mute = function() {\r
++ _t.muted = true;\r
++ _s.o._setVolume(_t.sID,0);\r
++ };\r
++\r
++ this.unmute = function() {\r
++ _t.muted = false;\r
++ _s.o._setVolume(_t.sID,typeof _t._iO.volume != 'undefined'?_t._iO.volume:_t.options.volume);\r
++ };\r
++\r
++ // --- "private" methods called by Flash ---\r
++\r
++ this._whileloading = function(nBytesLoaded,nBytesTotal,nDuration) {\r
++ if (!_t._iO.isMovieStar) {\r
++ _t.bytesLoaded = nBytesLoaded;\r
++ _t.bytesTotal = nBytesTotal;\r
++ _t.duration = Math.floor(nDuration);\r
++ _t.durationEstimate = parseInt((_t.bytesTotal/_t.bytesLoaded)*_t.duration); // estimate total time (will only be accurate with CBR MP3s.)\r
++ if (_t.readyState != 3 && _t._iO.whileloading) _t._iO.whileloading.apply(_t);\r
++ } else {\r
++ _t.bytesLoaded = nBytesLoaded;\r
++ _t.bytesTotal = nBytesTotal;\r
++ _t.duration = Math.floor(nDuration);\r
++ _t.durationEstimate = _t.duration;\r
++ if (_t.readyState != 3 && _t._iO.whileloading) _t._iO.whileloading.apply(_t);\r
++ }\r
++ };\r
++\r
++ this._onid3 = function(oID3PropNames,oID3Data) {\r
++ // oID3PropNames: string array (names)\r
++ // ID3Data: string array (data)\r
++ _s._wD('SMSound._onid3(): "'+this.sID+'" ID3 data received.');\r
++ var oData = [];\r
++ for (var i=0,j=oID3PropNames.length; i<j; i++) {\r
++ oData[oID3PropNames[i]] = oID3Data[i];\r
++ // _s._wD(oID3PropNames[i]+': '+oID3Data[i]);\r
++ };\r
++ _t.id3 = _s._mergeObjects(_t.id3,oData);\r
++ if (_t._iO.onid3) _t._iO.onid3.apply(_t);\r
++ };\r
++\r
++ this._whileplaying = function(nPosition,oPeakData,oWaveformData,oEQData) {\r
++ if (isNaN(nPosition) || nPosition == null) return false; // Flash may return NaN at times\r
++ _t.position = nPosition;\r
++ if (_t._iO.usePeakData && typeof oPeakData != 'undefined' && oPeakData) {\r
++ _t.peakData = {\r
++ left: oPeakData.leftPeak,\r
++ right: oPeakData.rightPeak\r
++ };\r
++ };\r
++ if (_t._iO.useWaveformData && typeof oWaveformData != 'undefined' && oWaveformData) {\r
++ _t.waveformData = oWaveformData;\r
++ /*\r
++ _t.spectrumData = {\r
++ left: oSpectrumData.left.split(','),\r
++ right: oSpectrumData.right.split(',')\r
++ }\r
++ */\r
++ };\r
++ if (_t._iO.useEQData && typeof oEQData != 'undefined' && oEQData) {\r
++ _t.eqData = oEQData;\r
++ };\r
++ if (_t.playState == 1) {\r
++ if (_t._iO.whileplaying) {\r
++ _t._iO.whileplaying.apply(_t); // flash may call after actual finish\r
++ };\r
++ if (_t.loaded && _t._iO.onbeforefinish && _t._iO.onbeforefinishtime && !_t.didBeforeFinish && _t.duration-_t.position <= _t._iO.onbeforefinishtime) {\r
++ _s._wD('duration-position <= onbeforefinishtime: '+_t.duration+' - '+_t.position+' <= '+_t._iO.onbeforefinishtime+' ('+(_t.duration-_t.position)+')');\r
++ _t._onbeforefinish();\r
++ };\r
++ };\r
++ };\r
++\r
++ this._onload = function(bSuccess) {\r
++ bSuccess = (bSuccess==1?true:false);\r
++ _s._wD('SMSound._onload(): "'+_t.sID+'"'+(bSuccess?' loaded.':' failed to load? - '+_t.url));\r
++ if (!bSuccess) {\r
++ if (_s.sandbox.noRemote == true) {\r
++ _s._wD('SMSound._onload(): Reminder: Flash security is denying network/internet access',1);\r
++ };\r
++ if (_s.sandbox.noLocal == true) {\r
++ _s._wD('SMSound._onload(): Reminder: Flash security is denying local access',1);\r
++ };\r
++ };\r
++ _t.loaded = bSuccess;\r
++ _t.readyState = bSuccess?3:2;\r
++ if (_t._iO.onload) {\r
++ _t._iO.onload.apply(_t);\r
++ };\r
++ };\r
++\r
++ this._onbeforefinish = function() {\r
++ if (!_t.didBeforeFinish) {\r
++ _t.didBeforeFinish = true;\r
++ if (_t._iO.onbeforefinish) {\r
++ _s._wD('SMSound._onbeforefinish(): "'+_t.sID+'"');\r
++ _t._iO.onbeforefinish.apply(_t);\r
++ }\r
++ };\r
++ };\r
++\r
++ this._onjustbeforefinish = function(msOffset) {\r
++ // msOffset: "end of sound" delay actual value (eg. 200 msec, value at event fire time was 187)\r
++ if (!_t.didJustBeforeFinish) {\r
++ _t.didJustBeforeFinish = true;\r
++ if (_t._iO.onjustbeforefinish) {\r
++ _s._wD('SMSound._onjustbeforefinish(): "'+_t.sID+'"');\r
++ _t._iO.onjustbeforefinish.apply(_t);\r
++ }\r
++ };\r
++ };\r
++\r
++ this._onfinish = function() {\r
++ // sound has finished playing\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ if (_t._iO.onfinish) {\r
++ _s._wD('SMSound._onfinish(): "'+_t.sID+'"');\r
++ _t._iO.onfinish.apply(_t);\r
++ }\r
++ if (_t._iO.onbeforefinishcomplete) _t._iO.onbeforefinishcomplete.apply(_t);\r
++ // reset some state items\r
++ _t.setPosition(0);\r
++ _t.didBeforeFinish = false;\r
++ _t.didJustBeforeFinish = false;\r
++ if (_t.instanceCount) {\r
++ _t.instanceCount--;\r
++ if (!_t.instanceCount) {\r
++ // reset instance options\r
++ _t.instanceCount = 0;\r
++ _t.instanceOptions = {};\r
++ }\r
++ }\r
++ };\r
++\r
++ this._onmetadata = function(oMetaData) {\r
++ // movieStar mode only\r
++ _s._wD('SMSound.onmetadata()');\r
++ // Contains a subset of metadata. Note that files may have their own unique metadata.\r
++ // http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000267.html\r
++ if (!oMetaData.width && !oMetaData.height) {\r
++ _s._wD('No width/height given, assuming defaults');\r
++ oMetaData.width = 320;\r
++ oMetaData.height = 240;\r
++ };\r
++ _t.metadata = oMetaData; // potentially-large object from flash\r
++ _t.width = oMetaData.width;\r
++ _t.height = oMetaData.height;\r
++ if (_t._iO.onmetadata) {\r
++ _s._wD('SMSound._onmetadata(): "'+_t.sID+'"');\r
++ _t._iO.onmetadata.apply(_t);\r
++ }\r
++ _s.wD('SMSound.onmetadata() complete');\r
++ };\r
++\r
++ }; // SMSound()\r
++\r
++ // register a few event handlers\r
++ if (window.addEventListener) {\r
++ window.addEventListener('focus',_s.handleFocus,false);\r
++ window.addEventListener('load',_s.beginDelayedInit,false);\r
++ window.addEventListener('unload',_s.destruct,false);\r
++ if (_s._tryInitOnFocus) window.addEventListener('mousemove',_s.handleFocus,false); // massive Safari focus hack\r
++ } else if (window.attachEvent) {\r
++ window.attachEvent('onfocus',_s.handleFocus);\r
++ window.attachEvent('onload',_s.beginDelayedInit);\r
++ window.attachEvent('unload',_s.destruct);\r
++ } else {\r
++ // no add/attachevent support - safe to assume no JS -> Flash either.\r
++ soundManager.onerror();\r
++ soundManager.disable();\r
++ };\r
++\r
++ if (document.addEventListener) document.addEventListener('DOMContentLoaded',_s.domContentLoaded,false);\r
++\r
++}; // SoundManager()\r
++\r
++var soundManager = new SoundManager();\r
--- /dev/null
--- /dev/null
++/**
++ * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
++ *
++ * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
++ * http://www.opensource.org/licenses/mit-license.php
++ *
++ */
++if(typeof deconcept=="undefined"){var deconcept=new Object();}if(typeof deconcept.util=="undefined"){deconcept.util=new Object();}if(typeof deconcept.SWFObjectUtil=="undefined"){deconcept.SWFObjectUtil=new Object();}deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(deconcept.SWFObject.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFObjectUtil.prepUnload);deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=deconcept.util.getRequestParameter;var FlashObject=deconcept.SWFObject;var SWFObject=deconcept.SWFObject;
--- /dev/null
--- /dev/null
++/* This notice must be untouched at all times.\r
++\r
++wz_jsgraphics.js v. 3.03\r
++The latest version is available at\r
++http://www.walterzorn.com\r
++or http://www.devira.com\r
++or http://www.walterzorn.de\r
++\r
++Copyright (c) 2002-2004 Walter Zorn. All rights reserved.\r
++Created 3. 11. 2002 by Walter Zorn (Web: http://www.walterzorn.com )\r
++Last modified: 28. 1. 2008\r
++\r
++Performance optimizations for Internet Explorer\r
++by Thomas Frank and John Holdsworth.\r
++fillPolygon method implemented by Matthieu Haller.\r
++\r
++High Performance JavaScript Graphics Library.\r
++Provides methods\r
++- to draw lines, rectangles, ellipses, polygons\r
++ with specifiable line thickness,\r
++- to fill rectangles, polygons, ellipses and arcs\r
++- to draw text.\r
++NOTE: Operations, functions and branching have rather been optimized\r
++to efficiency and speed than to shortness of source code.\r
++\r
++LICENSE: LGPL\r
++\r
++This library is free software; you can redistribute it and/or\r
++modify it under the terms of the GNU Lesser General Public\r
++License (LGPL) as published by the Free Software Foundation; either\r
++version 2.1 of the License, or (at your option) any later version.\r
++\r
++This library is distributed in the hope that it will be useful,\r
++but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
++Lesser General Public License for more details.\r
++\r
++You should have received a copy of the GNU Lesser General Public\r
++License along with this library; if not, write to the Free Software\r
++Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA,\r
++or see http://www.gnu.org/copyleft/lesser.html\r
++*/\r
++\r
++\r
++var jg_ok, jg_ie, jg_fast, jg_dom, jg_moz;\r
++\r
++\r
++function _chkDHTM(x, i)\r
++{\r
++ x = document.body || null;\r
++ jg_ie = x && typeof x.insertAdjacentHTML != "undefined" && document.createElement;\r
++ jg_dom = (x && !jg_ie &&\r
++ typeof x.appendChild != "undefined" &&\r
++ typeof document.createRange != "undefined" &&\r
++ typeof (i = document.createRange()).setStartBefore != "undefined" &&\r
++ typeof i.createContextualFragment != "undefined");\r
++ jg_fast = jg_ie && document.all && !window.opera;\r
++ jg_moz = jg_dom && typeof x.style.MozOpacity != "undefined";\r
++ jg_ok = !!(jg_ie || jg_dom);\r
++}\r
++\r
++function _pntCnvDom()\r
++{\r
++ var x = this.wnd.document.createRange();\r
++ x.setStartBefore(this.cnv);\r
++ x = x.createContextualFragment(jg_fast? this._htmRpc() : this.htm);\r
++ if(this.cnv) this.cnv.appendChild(x);\r
++ this.htm = "";\r
++}\r
++\r
++function _pntCnvIe()\r
++{\r
++ if(this.cnv) this.cnv.insertAdjacentHTML("BeforeEnd", jg_fast? this._htmRpc() : this.htm);\r
++ this.htm = "";\r
++}\r
++\r
++function _pntDoc()\r
++{\r
++ this.wnd.document.write(jg_fast? this._htmRpc() : this.htm);\r
++ this.htm = '';\r
++}\r
++\r
++function _pntN()\r
++{\r
++ ;\r
++}\r
++\r
++function _mkDiv(x, y, w, h)\r
++{\r
++ this.htm += '<div style="position:absolute;'+\r
++ 'left:' + x + 'px;'+\r
++ 'top:' + y + 'px;'+\r
++ 'width:' + w + 'px;'+\r
++ 'height:' + h + 'px;'+\r
++ 'clip:rect(0,'+w+'px,'+h+'px,0);'+\r
++ 'background-color:' + this.color +\r
++ (!jg_moz? ';overflow:hidden' : '')+\r
++ ';"><\/div>';\r
++}\r
++\r
++function _mkDivIe(x, y, w, h)\r
++{\r
++ this.htm += '%%'+this.color+';'+x+';'+y+';'+w+';'+h+';';\r
++}\r
++\r
++function _mkDivPrt(x, y, w, h)\r
++{\r
++ this.htm += '<div style="position:absolute;'+\r
++ 'border-left:' + w + 'px solid ' + this.color + ';'+\r
++ 'left:' + x + 'px;'+\r
++ 'top:' + y + 'px;'+\r
++ 'width:0px;'+\r
++ 'height:' + h + 'px;'+\r
++ 'clip:rect(0,'+w+'px,'+h+'px,0);'+\r
++ 'background-color:' + this.color +\r
++ (!jg_moz? ';overflow:hidden' : '')+\r
++ ';"><\/div>';\r
++}\r
++\r
++var _regex = /%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;\r
++function _htmRpc()\r
++{\r
++ return this.htm.replace(\r
++ _regex,\r
++ '<div style="overflow:hidden;position:absolute;background-color:'+\r
++ '$1;left:$2;top:$3;width:$4;height:$5"></div>\n');\r
++}\r
++\r
++function _htmPrtRpc()\r
++{\r
++ return this.htm.replace(\r
++ _regex,\r
++ '<div style="overflow:hidden;position:absolute;background-color:'+\r
++ '$1;left:$2;top:$3;width:$4;height:$5;border-left:$4px solid $1"></div>\n');\r
++}\r
++\r
++function _mkLin(x1, y1, x2, y2)\r
++{\r
++ if(x1 > x2)\r
++ {\r
++ var _x2 = x2;\r
++ var _y2 = y2;\r
++ x2 = x1;\r
++ y2 = y1;\r
++ x1 = _x2;\r
++ y1 = _y2;\r
++ }\r
++ var dx = x2-x1, dy = Math.abs(y2-y1),\r
++ x = x1, y = y1,\r
++ yIncr = (y1 > y2)? -1 : 1;\r
++\r
++ if(dx >= dy)\r
++ {\r
++ var pr = dy<<1,\r
++ pru = pr - (dx<<1),\r
++ p = pr-dx,\r
++ ox = x;\r
++ while(dx > 0)\r
++ {--dx;\r
++ ++x;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(ox, y, x-ox, 1);\r
++ y += yIncr;\r
++ p += pru;\r
++ ox = x;\r
++ }\r
++ else p += pr;\r
++ }\r
++ this._mkDiv(ox, y, x2-ox+1, 1);\r
++ }\r
++\r
++ else\r
++ {\r
++ var pr = dx<<1,\r
++ pru = pr - (dy<<1),\r
++ p = pr-dy,\r
++ oy = y;\r
++ if(y2 <= y1)\r
++ {\r
++ while(dy > 0)\r
++ {--dy;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(x++, y, 1, oy-y+1);\r
++ y += yIncr;\r
++ p += pru;\r
++ oy = y;\r
++ }\r
++ else\r
++ {\r
++ y += yIncr;\r
++ p += pr;\r
++ }\r
++ }\r
++ this._mkDiv(x2, y2, 1, oy-y2+1);\r
++ }\r
++ else\r
++ {\r
++ while(dy > 0)\r
++ {--dy;\r
++ y += yIncr;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(x++, oy, 1, y-oy);\r
++ p += pru;\r
++ oy = y;\r
++ }\r
++ else p += pr;\r
++ }\r
++ this._mkDiv(x2, oy, 1, y2-oy+1);\r
++ }\r
++ }\r
++}\r
++\r
++function _mkLin2D(x1, y1, x2, y2)\r
++{\r
++ if(x1 > x2)\r
++ {\r
++ var _x2 = x2;\r
++ var _y2 = y2;\r
++ x2 = x1;\r
++ y2 = y1;\r
++ x1 = _x2;\r
++ y1 = _y2;\r
++ }\r
++ var dx = x2-x1, dy = Math.abs(y2-y1),\r
++ x = x1, y = y1,\r
++ yIncr = (y1 > y2)? -1 : 1;\r
++\r
++ var s = this.stroke;\r
++ if(dx >= dy)\r
++ {\r
++ if(dx > 0 && s-3 > 0)\r
++ {\r
++ var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;\r
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;\r
++ }\r
++ else var _s = s;\r
++ var ad = Math.ceil(s/2);\r
++\r
++ var pr = dy<<1,\r
++ pru = pr - (dx<<1),\r
++ p = pr-dx,\r
++ ox = x;\r
++ while(dx > 0)\r
++ {--dx;\r
++ ++x;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(ox, y, x-ox+ad, _s);\r
++ y += yIncr;\r
++ p += pru;\r
++ ox = x;\r
++ }\r
++ else p += pr;\r
++ }\r
++ this._mkDiv(ox, y, x2-ox+ad+1, _s);\r
++ }\r
++\r
++ else\r
++ {\r
++ if(s-3 > 0)\r
++ {\r
++ var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;\r
++ _s = (!(s-4)? Math.ceil(_s) : Math.round(_s)) + 1;\r
++ }\r
++ else var _s = s;\r
++ var ad = Math.round(s/2);\r
++\r
++ var pr = dx<<1,\r
++ pru = pr - (dy<<1),\r
++ p = pr-dy,\r
++ oy = y;\r
++ if(y2 <= y1)\r
++ {\r
++ ++ad;\r
++ while(dy > 0)\r
++ {--dy;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(x++, y, _s, oy-y+ad);\r
++ y += yIncr;\r
++ p += pru;\r
++ oy = y;\r
++ }\r
++ else\r
++ {\r
++ y += yIncr;\r
++ p += pr;\r
++ }\r
++ }\r
++ this._mkDiv(x2, y2, _s, oy-y2+ad);\r
++ }\r
++ else\r
++ {\r
++ while(dy > 0)\r
++ {--dy;\r
++ y += yIncr;\r
++ if(p > 0)\r
++ {\r
++ this._mkDiv(x++, oy, _s, y-oy+ad);\r
++ p += pru;\r
++ oy = y;\r
++ }\r
++ else p += pr;\r
++ }\r
++ this._mkDiv(x2, oy, _s, y2-oy+ad+1);\r
++ }\r
++ }\r
++}\r
++\r
++function _mkLinDott(x1, y1, x2, y2)\r
++{\r
++ if(x1 > x2)\r
++ {\r
++ var _x2 = x2;\r
++ var _y2 = y2;\r
++ x2 = x1;\r
++ y2 = y1;\r
++ x1 = _x2;\r
++ y1 = _y2;\r
++ }\r
++ var dx = x2-x1, dy = Math.abs(y2-y1),\r
++ x = x1, y = y1,\r
++ yIncr = (y1 > y2)? -1 : 1,\r
++ drw = true;\r
++ if(dx >= dy)\r
++ {\r
++ var pr = dy<<1,\r
++ pru = pr - (dx<<1),\r
++ p = pr-dx;\r
++ while(dx > 0)\r
++ {--dx;\r
++ if(drw) this._mkDiv(x, y, 1, 1);\r
++ drw = !drw;\r
++ if(p > 0)\r
++ {\r
++ y += yIncr;\r
++ p += pru;\r
++ }\r
++ else p += pr;\r
++ ++x;\r
++ }\r
++ }\r
++ else\r
++ {\r
++ var pr = dx<<1,\r
++ pru = pr - (dy<<1),\r
++ p = pr-dy;\r
++ while(dy > 0)\r
++ {--dy;\r
++ if(drw) this._mkDiv(x, y, 1, 1);\r
++ drw = !drw;\r
++ y += yIncr;\r
++ if(p > 0)\r
++ {\r
++ ++x;\r
++ p += pru;\r
++ }\r
++ else p += pr;\r
++ }\r
++ }\r
++ if(drw) this._mkDiv(x, y, 1, 1);\r
++}\r
++\r
++function _mkOv(left, top, width, height)\r
++{\r
++ var a = (++width)>>1, b = (++height)>>1,\r
++ wod = width&1, hod = height&1,\r
++ cx = left+a, cy = top+b,\r
++ x = 0, y = b,\r
++ ox = 0, oy = b,\r
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,\r
++ st = (aa2>>1)*(1-(b<<1)) + bb2,\r
++ tt = (bb2>>1) - aa2*((b<<1)-1),\r
++ w, h;\r
++ while(y > 0)\r
++ {\r
++ if(st < 0)\r
++ {\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0)\r
++ {\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ w = x-ox;\r
++ h = oy-y;\r
++ if((w&2) && (h&2))\r
++ {\r
++ this._mkOvQds(cx, cy, x-2, y+2, 1, 1, wod, hod);\r
++ this._mkOvQds(cx, cy, x-1, y+1, 1, 1, wod, hod);\r
++ }\r
++ else this._mkOvQds(cx, cy, x-1, oy, w, h, wod, hod);\r
++ ox = x;\r
++ oy = y;\r
++ }\r
++ else\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ }\r
++ }\r
++ w = a-ox+1;\r
++ h = (oy<<1)+hod;\r
++ y = cy-oy;\r
++ this._mkDiv(cx-a, y, w, h);\r
++ this._mkDiv(cx+ox+wod-1, y, w, h);\r
++}\r
++\r
++function _mkOv2D(left, top, width, height)\r
++{\r
++ var s = this.stroke;\r
++ width += s+1;\r
++ height += s+1;\r
++ var a = width>>1, b = height>>1,\r
++ wod = width&1, hod = height&1,\r
++ cx = left+a, cy = top+b,\r
++ x = 0, y = b,\r
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,\r
++ st = (aa2>>1)*(1-(b<<1)) + bb2,\r
++ tt = (bb2>>1) - aa2*((b<<1)-1);\r
++\r
++ if(s-4 < 0 && (!(s-2) || width-51 > 0 && height-51 > 0))\r
++ {\r
++ var ox = 0, oy = b,\r
++ w, h,\r
++ pxw;\r
++ while(y > 0)\r
++ {\r
++ if(st < 0)\r
++ {\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0)\r
++ {\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ w = x-ox;\r
++ h = oy-y;\r
++\r
++ if(w-1)\r
++ {\r
++ pxw = w+1+(s&1);\r
++ h = s;\r
++ }\r
++ else if(h-1)\r
++ {\r
++ pxw = s;\r
++ h += 1+(s&1);\r
++ }\r
++ else pxw = h = s;\r
++ this._mkOvQds(cx, cy, x-1, oy, pxw, h, wod, hod);\r
++ ox = x;\r
++ oy = y;\r
++ }\r
++ else\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ }\r
++ }\r
++ this._mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);\r
++ this._mkDiv(cx+a+wod-s, cy-oy, s, (oy<<1)+hod);\r
++ }\r
++\r
++ else\r
++ {\r
++ var _a = (width-(s<<1))>>1,\r
++ _b = (height-(s<<1))>>1,\r
++ _x = 0, _y = _b,\r
++ _aa2 = (_a*_a)<<1, _aa4 = _aa2<<1, _bb2 = (_b*_b)<<1, _bb4 = _bb2<<1,\r
++ _st = (_aa2>>1)*(1-(_b<<1)) + _bb2,\r
++ _tt = (_bb2>>1) - _aa2*((_b<<1)-1),\r
++\r
++ pxl = new Array(),\r
++ pxt = new Array(),\r
++ _pxb = new Array();\r
++ pxl[0] = 0;\r
++ pxt[0] = b;\r
++ _pxb[0] = _b-1;\r
++ while(y > 0)\r
++ {\r
++ if(st < 0)\r
++ {\r
++ pxl[pxl.length] = x;\r
++ pxt[pxt.length] = y;\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0)\r
++ {\r
++ pxl[pxl.length] = x;\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ pxt[pxt.length] = y;\r
++ }\r
++ else\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ }\r
++\r
++ if(_y > 0)\r
++ {\r
++ if(_st < 0)\r
++ {\r
++ _st += _bb2*((_x<<1)+3);\r
++ _tt += _bb4*(++_x);\r
++ _pxb[_pxb.length] = _y-1;\r
++ }\r
++ else if(_tt < 0)\r
++ {\r
++ _st += _bb2*((_x<<1)+3) - _aa4*(_y-1);\r
++ _tt += _bb4*(++_x) - _aa2*(((_y--)<<1)-3);\r
++ _pxb[_pxb.length] = _y-1;\r
++ }\r
++ else\r
++ {\r
++ _tt -= _aa2*((_y<<1)-3);\r
++ _st -= _aa4*(--_y);\r
++ _pxb[_pxb.length-1]--;\r
++ }\r
++ }\r
++ }\r
++\r
++ var ox = -wod, oy = b,\r
++ _oy = _pxb[0],\r
++ l = pxl.length,\r
++ w, h;\r
++ for(var i = 0; i < l; i++)\r
++ {\r
++ if(typeof _pxb[i] != "undefined")\r
++ {\r
++ if(_pxb[i] < _oy || pxt[i] < oy)\r
++ {\r
++ x = pxl[i];\r
++ this._mkOvQds(cx, cy, x, oy, x-ox, oy-_oy, wod, hod);\r
++ ox = x;\r
++ oy = pxt[i];\r
++ _oy = _pxb[i];\r
++ }\r
++ }\r
++ else\r
++ {\r
++ x = pxl[i];\r
++ this._mkDiv(cx-x, cy-oy, 1, (oy<<1)+hod);\r
++ this._mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);\r
++ ox = x;\r
++ oy = pxt[i];\r
++ }\r
++ }\r
++ this._mkDiv(cx-a, cy-oy, 1, (oy<<1)+hod);\r
++ this._mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);\r
++ }\r
++}\r
++\r
++function _mkOvDott(left, top, width, height)\r
++{\r
++ var a = (++width)>>1, b = (++height)>>1,\r
++ wod = width&1, hod = height&1, hodu = hod^1,\r
++ cx = left+a, cy = top+b,\r
++ x = 0, y = b,\r
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,\r
++ st = (aa2>>1)*(1-(b<<1)) + bb2,\r
++ tt = (bb2>>1) - aa2*((b<<1)-1),\r
++ drw = true;\r
++ while(y > 0)\r
++ {\r
++ if(st < 0)\r
++ {\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0)\r
++ {\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ }\r
++ else\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ }\r
++ if(drw && y >= hodu) this._mkOvQds(cx, cy, x, y, 1, 1, wod, hod);\r
++ drw = !drw;\r
++ }\r
++}\r
++\r
++function _mkRect(x, y, w, h)\r
++{\r
++ var s = this.stroke;\r
++ this._mkDiv(x, y, w, s);\r
++ this._mkDiv(x+w, y, s, h);\r
++ this._mkDiv(x, y+h, w+s, s);\r
++ this._mkDiv(x, y+s, s, h-s);\r
++}\r
++\r
++function _mkRectDott(x, y, w, h)\r
++{\r
++ this.drawLine(x, y, x+w, y);\r
++ this.drawLine(x+w, y, x+w, y+h);\r
++ this.drawLine(x, y+h, x+w, y+h);\r
++ this.drawLine(x, y, x, y+h);\r
++}\r
++\r
++function jsgFont()\r
++{\r
++ this.PLAIN = 'font-weight:normal;';\r
++ this.BOLD = 'font-weight:bold;';\r
++ this.ITALIC = 'font-style:italic;';\r
++ this.ITALIC_BOLD = this.ITALIC + this.BOLD;\r
++ this.BOLD_ITALIC = this.ITALIC_BOLD;\r
++}\r
++var Font = new jsgFont();\r
++\r
++function jsgStroke()\r
++{\r
++ this.DOTTED = -1;\r
++}\r
++var Stroke = new jsgStroke();\r
++\r
++function jsGraphics(cnv, wnd)\r
++{\r
++ this.setColor = function(x)\r
++ {\r
++ this.color = x.toLowerCase();\r
++ };\r
++\r
++ this.setStroke = function(x)\r
++ {\r
++ this.stroke = x;\r
++ if(!(x+1))\r
++ {\r
++ this.drawLine = _mkLinDott;\r
++ this._mkOv = _mkOvDott;\r
++ this.drawRect = _mkRectDott;\r
++ }\r
++ else if(x-1 > 0)\r
++ {\r
++ this.drawLine = _mkLin2D;\r
++ this._mkOv = _mkOv2D;\r
++ this.drawRect = _mkRect;\r
++ }\r
++ else\r
++ {\r
++ this.drawLine = _mkLin;\r
++ this._mkOv = _mkOv;\r
++ this.drawRect = _mkRect;\r
++ }\r
++ };\r
++\r
++ this.setPrintable = function(arg)\r
++ {\r
++ this.printable = arg;\r
++ if(jg_fast)\r
++ {\r
++ this._mkDiv = _mkDivIe;\r
++ this._htmRpc = arg? _htmPrtRpc : _htmRpc;\r
++ }\r
++ else this._mkDiv = arg? _mkDivPrt : _mkDiv;\r
++ };\r
++\r
++ this.setFont = function(fam, sz, sty)\r
++ {\r
++ this.ftFam = fam;\r
++ this.ftSz = sz;\r
++ this.ftSty = sty || Font.PLAIN;\r
++ };\r
++\r
++ this.drawPolyline = this.drawPolyLine = function(x, y)\r
++ {\r
++ for (var i=x.length - 1; i;)\r
++ {--i;\r
++ this.drawLine(x[i], y[i], x[i+1], y[i+1]);\r
++ }\r
++ };\r
++\r
++ this.fillRect = function(x, y, w, h)\r
++ {\r
++ this._mkDiv(x, y, w, h);\r
++ };\r
++\r
++ this.drawPolygon = function(x, y)\r
++ {\r
++ this.drawPolyline(x, y);\r
++ this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);\r
++ };\r
++\r
++ this.drawEllipse = this.drawOval = function(x, y, w, h)\r
++ {\r
++ this._mkOv(x, y, w, h);\r
++ };\r
++\r
++ this.fillEllipse = this.fillOval = function(left, top, w, h)\r
++ {\r
++ var a = w>>1, b = h>>1,\r
++ wod = w&1, hod = h&1,\r
++ cx = left+a, cy = top+b,\r
++ x = 0, y = b, oy = b,\r
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,\r
++ st = (aa2>>1)*(1-(b<<1)) + bb2,\r
++ tt = (bb2>>1) - aa2*((b<<1)-1),\r
++ xl, dw, dh;\r
++ if(w) while(y > 0)\r
++ {\r
++ if(st < 0)\r
++ {\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0)\r
++ {\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ xl = cx-x;\r
++ dw = (x<<1)+wod;\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ dh = oy-y;\r
++ this._mkDiv(xl, cy-oy, dw, dh);\r
++ this._mkDiv(xl, cy+y+hod, dw, dh);\r
++ oy = y;\r
++ }\r
++ else\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ }\r
++ }\r
++ this._mkDiv(cx-a, cy-oy, w, (oy<<1)+hod);\r
++ };\r
++\r
++ this.fillArc = function(iL, iT, iW, iH, fAngA, fAngZ)\r
++ {\r
++ var a = iW>>1, b = iH>>1,\r
++ iOdds = (iW&1) | ((iH&1) << 16),\r
++ cx = iL+a, cy = iT+b,\r
++ x = 0, y = b, ox = x, oy = y,\r
++ aa2 = (a*a)<<1, aa4 = aa2<<1, bb2 = (b*b)<<1, bb4 = bb2<<1,\r
++ st = (aa2>>1)*(1-(b<<1)) + bb2,\r
++ tt = (bb2>>1) - aa2*((b<<1)-1),\r
++ // Vars for radial boundary lines\r
++ xEndA, yEndA, xEndZ, yEndZ,\r
++ iSects = (1 << (Math.floor((fAngA %= 360.0)/180.0) << 3))\r
++ | (2 << (Math.floor((fAngZ %= 360.0)/180.0) << 3))\r
++ | ((fAngA >= fAngZ) << 16),\r
++ aBndA = new Array(b+1), aBndZ = new Array(b+1);\r
++ \r
++ // Set up radial boundary lines\r
++ fAngA *= Math.PI/180.0;\r
++ fAngZ *= Math.PI/180.0;\r
++ xEndA = cx+Math.round(a*Math.cos(fAngA));\r
++ yEndA = cy+Math.round(-b*Math.sin(fAngA));\r
++ _mkLinVirt(aBndA, cx, cy, xEndA, yEndA);\r
++ xEndZ = cx+Math.round(a*Math.cos(fAngZ));\r
++ yEndZ = cy+Math.round(-b*Math.sin(fAngZ));\r
++ _mkLinVirt(aBndZ, cx, cy, xEndZ, yEndZ);\r
++\r
++ while(y > 0)\r
++ {\r
++ if(st < 0) // Advance x\r
++ {\r
++ st += bb2*((x<<1)+3);\r
++ tt += bb4*(++x);\r
++ }\r
++ else if(tt < 0) // Advance x and y\r
++ {\r
++ st += bb2*((x<<1)+3) - aa4*(y-1);\r
++ ox = x;\r
++ tt += bb4*(++x) - aa2*(((y--)<<1)-3);\r
++ this._mkArcDiv(ox, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);\r
++ oy = y;\r
++ }\r
++ else // Advance y\r
++ {\r
++ tt -= aa2*((y<<1)-3);\r
++ st -= aa4*(--y);\r
++ if(y && (aBndA[y] != aBndA[y-1] || aBndZ[y] != aBndZ[y-1]))\r
++ {\r
++ this._mkArcDiv(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);\r
++ ox = x;\r
++ oy = y;\r
++ }\r
++ }\r
++ }\r
++ this._mkArcDiv(x, 0, oy, cx, cy, iOdds, aBndA, aBndZ, iSects);\r
++ if(iOdds >> 16) // Odd height\r
++ {\r
++ if(iSects >> 16) // Start-angle > end-angle\r
++ {\r
++ var xl = (yEndA <= cy || yEndZ > cy)? (cx - x) : cx;\r
++ this._mkDiv(xl, cy, x + cx - xl + (iOdds & 0xffff), 1);\r
++ }\r
++ else if((iSects & 0x01) && yEndZ > cy)\r
++ this._mkDiv(cx - x, cy, x, 1);\r
++ }\r
++ };\r
++\r
++/* fillPolygon method, implemented by Matthieu Haller.\r
++This javascript function is an adaptation of the gdImageFilledPolygon for Walter Zorn lib.\r
++C source of GD 1.8.4 found at http://www.boutell.com/gd/\r
++\r
++THANKS to Kirsten Schulz for the polygon fixes!\r
++\r
++The intersection finding technique of this code could be improved\r
++by remembering the previous intertersection, and by using the slope.\r
++That could help to adjust intersections to produce a nice\r
++interior_extrema. */\r
++ this.fillPolygon = function(array_x, array_y)\r
++ {\r
++ var i;\r
++ var y;\r
++ var miny, maxy;\r
++ var x1, y1;\r
++ var x2, y2;\r
++ var ind1, ind2;\r
++ var ints;\r
++\r
++ var n = array_x.length;\r
++ if(!n) return;\r
++\r
++ miny = array_y[0];\r
++ maxy = array_y[0];\r
++ for(i = 1; i < n; i++)\r
++ {\r
++ if(array_y[i] < miny)\r
++ miny = array_y[i];\r
++\r
++ if(array_y[i] > maxy)\r
++ maxy = array_y[i];\r
++ }\r
++ for(y = miny; y <= maxy; y++)\r
++ {\r
++ var polyInts = new Array();\r
++ ints = 0;\r
++ for(i = 0; i < n; i++)\r
++ {\r
++ if(!i)\r
++ {\r
++ ind1 = n-1;\r
++ ind2 = 0;\r
++ }\r
++ else\r
++ {\r
++ ind1 = i-1;\r
++ ind2 = i;\r
++ }\r
++ y1 = array_y[ind1];\r
++ y2 = array_y[ind2];\r
++ if(y1 < y2)\r
++ {\r
++ x1 = array_x[ind1];\r
++ x2 = array_x[ind2];\r
++ }\r
++ else if(y1 > y2)\r
++ {\r
++ y2 = array_y[ind1];\r
++ y1 = array_y[ind2];\r
++ x2 = array_x[ind1];\r
++ x1 = array_x[ind2];\r
++ }\r
++ else continue;\r
++\r
++ // Modified 11. 2. 2004 Walter Zorn\r
++ if((y >= y1) && (y < y2))\r
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);\r
++\r
++ else if((y == maxy) && (y > y1) && (y <= y2))\r
++ polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);\r
++ }\r
++ polyInts.sort(_CompInt);\r
++ for(i = 0; i < ints; i+=2)\r
++ this._mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);\r
++ }\r
++ };\r
++\r
++ this.drawString = function(txt, x, y)\r
++ {\r
++ this.htm += '<div style="position:absolute;white-space:nowrap;'+\r
++ 'left:' + x + 'px;'+\r
++ 'top:' + y + 'px;'+\r
++ 'font-family:' + this.ftFam + ';'+\r
++ 'font-size:' + this.ftSz + ';'+\r
++ 'color:' + this.color + ';' + this.ftSty + '">'+\r
++ txt +\r
++ '<\/div>';\r
++ };\r
++\r
++/* drawStringRect() added by Rick Blommers.\r
++Allows to specify the size of the text rectangle and to align the\r
++text both horizontally (e.g. right) and vertically within that rectangle */\r
++ this.drawStringRect = function(txt, x, y, width, halign)\r
++ {\r
++ this.htm += '<div style="position:absolute;overflow:hidden;'+\r
++ 'left:' + x + 'px;'+\r
++ 'top:' + y + 'px;'+\r
++ 'width:'+width +'px;'+\r
++ 'text-align:'+halign+';'+\r
++ 'font-family:' + this.ftFam + ';'+\r
++ 'font-size:' + this.ftSz + ';'+\r
++ 'color:' + this.color + ';' + this.ftSty + '">'+\r
++ txt +\r
++ '<\/div>';\r
++ };\r
++\r
++ this.drawImage = function(imgSrc, x, y, w, h, a)\r
++ {\r
++ this.htm += '<div style="position:absolute;'+\r
++ 'left:' + x + 'px;'+\r
++ 'top:' + y + 'px;'+\r
++ // w (width) and h (height) arguments are now optional.\r
++ // Added by Mahmut Keygubatli, 14.1.2008\r
++ (w? ('width:' + w + 'px;') : '') +\r
++ (h? ('height:' + h + 'px;'):'')+'">'+\r
++ '<img src="' + imgSrc +'"'+ (w ? (' width="' + w + '"'):'')+ (h ? (' height="' + h + '"'):'') + (a? (' '+a) : '') + '>'+\r
++ '<\/div>';\r
++ };\r
++\r
++ this.clear = function()\r
++ {\r
++ this.htm = "";\r
++ if(this.cnv) this.cnv.innerHTML = "";\r
++ };\r
++\r
++ this._mkOvQds = function(cx, cy, x, y, w, h, wod, hod)\r
++ {\r
++ var xl = cx - x, xr = cx + x + wod - w, yt = cy - y, yb = cy + y + hod - h;\r
++ if(xr > xl+w)\r
++ {\r
++ this._mkDiv(xr, yt, w, h);\r
++ this._mkDiv(xr, yb, w, h);\r
++ }\r
++ else\r
++ w = xr - xl + w;\r
++ this._mkDiv(xl, yt, w, h);\r
++ this._mkDiv(xl, yb, w, h);\r
++ };\r
++ \r
++ this._mkArcDiv = function(x, y, oy, cx, cy, iOdds, aBndA, aBndZ, iSects)\r
++ {\r
++ var xrDef = cx + x + (iOdds & 0xffff), y2, h = oy - y, xl, xr, w;\r
++\r
++ if(!h) h = 1;\r
++ x = cx - x;\r
++\r
++ if(iSects & 0xff0000) // Start-angle > end-angle\r
++ {\r
++ y2 = cy - y - h;\r
++ if(iSects & 0x00ff)\r
++ {\r
++ if(iSects & 0x02)\r
++ {\r
++ xl = Math.max(x, aBndZ[y]);\r
++ w = xrDef - xl;\r
++ if(w > 0) this._mkDiv(xl, y2, w, h);\r
++ }\r
++ if(iSects & 0x01)\r
++ {\r
++ xr = Math.min(xrDef, aBndA[y]);\r
++ w = xr - x;\r
++ if(w > 0) this._mkDiv(x, y2, w, h);\r
++ }\r
++ }\r
++ else\r
++ this._mkDiv(x, y2, xrDef - x, h);\r
++ y2 = cy + y + (iOdds >> 16);\r
++ if(iSects & 0xff00)\r
++ {\r
++ if(iSects & 0x0100)\r
++ {\r
++ xl = Math.max(x, aBndA[y]);\r
++ w = xrDef - xl;\r
++ if(w > 0) this._mkDiv(xl, y2, w, h);\r
++ }\r
++ if(iSects & 0x0200)\r
++ {\r
++ xr = Math.min(xrDef, aBndZ[y]);\r
++ w = xr - x;\r
++ if(w > 0) this._mkDiv(x, y2, w, h);\r
++ }\r
++ }\r
++ else\r
++ this._mkDiv(x, y2, xrDef - x, h);\r
++ }\r
++ else\r
++ {\r
++ if(iSects & 0x00ff)\r
++ {\r
++ if(iSects & 0x02)\r
++ xl = Math.max(x, aBndZ[y]);\r
++ else\r
++ xl = x;\r
++ if(iSects & 0x01)\r
++ xr = Math.min(xrDef, aBndA[y]);\r
++ else\r
++ xr = xrDef;\r
++ y2 = cy - y - h;\r
++ w = xr - xl;\r
++ if(w > 0) this._mkDiv(xl, y2, w, h);\r
++ }\r
++ if(iSects & 0xff00)\r
++ {\r
++ if(iSects & 0x0100)\r
++ xl = Math.max(x, aBndA[y]);\r
++ else\r
++ xl = x;\r
++ if(iSects & 0x0200)\r
++ xr = Math.min(xrDef, aBndZ[y]);\r
++ else\r
++ xr = xrDef;\r
++ y2 = cy + y + (iOdds >> 16);\r
++ w = xr - xl;\r
++ if(w > 0) this._mkDiv(xl, y2, w, h);\r
++ }\r
++ }\r
++ };\r
++\r
++ this.setStroke(1);\r
++ this.setFont("verdana,geneva,helvetica,sans-serif", "12px", Font.PLAIN);\r
++ this.color = "#000000";\r
++ this.htm = "";\r
++ this.wnd = wnd || window;\r
++\r
++ if(!jg_ok) _chkDHTM();\r
++ if(jg_ok)\r
++ {\r
++ if(cnv)\r
++ {\r
++ if(typeof(cnv) == "string")\r
++ this.cont = document.all? (this.wnd.document.all[cnv] || null)\r
++ : document.getElementById? (this.wnd.document.getElementById(cnv) || null)\r
++ : null;\r
++ else if(cnv == window.document)\r
++ this.cont = document.getElementsByTagName("body")[0];\r
++ // If cnv is a direct reference to a canvas DOM node\r
++ // (option suggested by Andreas Luleich)\r
++ else this.cont = cnv;\r
++ // Create new canvas inside container DIV. Thus the drawing and clearing\r
++ // methods won't interfere with the container's inner html.\r
++ // Solution suggested by Vladimir.\r
++ this.cnv = this.wnd.document.createElement("div");\r
++ this.cnv.style.fontSize=0;\r
++ this.cont.appendChild(this.cnv);\r
++ this.paint = jg_dom? _pntCnvDom : _pntCnvIe;\r
++ }\r
++ else\r
++ this.paint = _pntDoc;\r
++ }\r
++ else\r
++ this.paint = _pntN;\r
++\r
++ this.setPrintable(false);\r
++}\r
++\r
++function _mkLinVirt(aLin, x1, y1, x2, y2)\r
++{\r
++ var dx = Math.abs(x2-x1), dy = Math.abs(y2-y1),\r
++ x = x1, y = y1,\r
++ xIncr = (x1 > x2)? -1 : 1,\r
++ yIncr = (y1 > y2)? -1 : 1,\r
++ p,\r
++ i = 0;\r
++ if(dx >= dy)\r
++ {\r
++ var pr = dy<<1,\r
++ pru = pr - (dx<<1);\r
++ p = pr-dx;\r
++ while(dx > 0)\r
++ {--dx;\r
++ if(p > 0) // Increment y\r
++ {\r
++ aLin[i++] = x;\r
++ y += yIncr;\r
++ p += pru;\r
++ }\r
++ else p += pr;\r
++ x += xIncr;\r
++ }\r
++ }\r
++ else\r
++ {\r
++ var pr = dx<<1,\r
++ pru = pr - (dy<<1);\r
++ p = pr-dy;\r
++ while(dy > 0)\r
++ {--dy;\r
++ y += yIncr;\r
++ aLin[i++] = x;\r
++ if(p > 0) // Increment x\r
++ {\r
++ x += xIncr;\r
++ p += pru;\r
++ }\r
++ else p += pr;\r
++ }\r
++ }\r
++ for(var len = aLin.length, i = len-i; i;)\r
++ aLin[len-(i--)] = x;\r
++};\r
++\r
++function _CompInt(x, y)\r
++{\r
++ return(x - y);\r
++}\r
++\r
--- /dev/null
--- /dev/null
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Generic OAI-PMH Data Provider module
++#
++# Copyright (C) 2009 Samalyse SARL
++# Author: Olivier Guilyardi <olivier samalyse com>
++#
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++#
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++#
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++#
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++
++from datetime import datetime
++import time
++try:
++ import libxml2dom as dom
++except ImportError:
++ import xml.dom.minidom as dom
++ try:
++ import libxml2
++ except ImportError:
++ # dangerous: minidom output formatting isn't very good, libxml2 is much better
++ pass
++
++class IDataSource(object):
++ """Interface for OAI datasource adapters"""
++
++ def get_earliest_time(self):
++ """Must return the change time of the oldest record(s) as a datetime object"""
++ pass
++
++ def get_record(self, id):
++ """Must return a tuple of the form:
++ (
++ [(dublin core element, element value), ...],
++ change time
++ )
++ or None if the record doesn't exist. In case the id isn't wellformed
++ a BadArgumentError should be raised.
++
++ The dublin core data must contain an 'identifier' element, which is the same
++ as the id parameter."""
++ pass
++
++ def count_records(self, from_time = None, until_time = None):
++ """Must return the number of records between (optional) from and until change time."""
++ pass
++
++ def list_records(self, offset, limit, from_time = None, until_time = None):
++ """Must return the list of records between (optional) from and
++ until change time, starting from record at offset, with a maximum of limit
++ entries. Each entry of the list must be a tuple of the same form as returned
++ by getRecord().
++
++ If no record matches, should return an empty list. The dublin core data must
++ contain an 'identifier' element, which can be used as a parameter to get_record()."""
++ pass
++
++def iso_time(date_time = None):
++ """Encode a datetime object using ISO8601 format"""
++ if not date_time:
++ date_time = datetime.now()
++ return date_time.strftime('%Y-%m-%dT%H:%M:%SZ')
++
++def parse_iso_time(str):
++ """Parse an ISO8601 time string into a datetime object, or return None on failure"""
++ # Avoid datetime.strptime() for compatibility with python < 2.5
++ try:
++ s = time.strptime(str, '%Y-%m-%dT%H:%M:%SZ')
++ return datetime(s.tm_year, s.tm_mon, s.tm_mday, s.tm_hour, s.tm_min, s.tm_sec)
++ except ValueError:
++ try:
++ s = time.strptime(str, '%Y-%m-%d')
++ return datetime(s.tm_year, s.tm_mon, s.tm_mday)
++ except ValueError:
++ return None
++
++def doc_to_string(doc):
++ if dom.__name__ == 'libxml2dom':
++ return doc.toString(encoding='utf-8', prettyprint=True).decode('utf-8')
++ try:
++ doc2 = libxml2.parseDoc(doc.toxml(encoding="utf-8"))
++ xml = unicode(doc2.serialize(encoding="utf-8", format=1), "utf-8")
++ doc2.free()
++ return xml
++ except NameError:
++ return doc.toprettyxml(encoding="utf-8")
++
++class ArgumentValidator(object):
++ """OAI-PMH request argument validator"""
++
++ def __init__(self, request, response):
++ self.response = response
++ self.opt_args = []
++ self.required_args = ['verb']
++ self.request = request
++ self.format = None
++
++ def optional(self, *args):
++ """Add optional arguments"""
++ self.opt_args.extend(args)
++
++ def require(self, *args):
++ """Add required arguments"""
++ self.required_args.extend(args)
++
++ def accept_format(self, format):
++ """Indicate which metadata format is supported"""
++ self.format = format
++
++ def has_verb(self):
++ """Check if the request includes a valid Verb, return True if it does, False otherwise,
++ setting an error into the response"""
++
++ valid = ['GetRecord', 'Identify', 'ListIdentifiers', 'ListMetadataFormats', 'ListRecords', 'ListSets']
++
++ result = False
++ if self.request.has_key('verb'):
++ try:
++ valid.index(self.request['verb'])
++ result = True
++ except ValueError:
++ pass
++
++ if not result:
++ self.response.error('badVerb')
++
++ return result
++
++ def validate(self):
++ """Perform validation, return True if successfull, False otherwise, setting appropriate
++ errors into the response"""
++ all_args = []
++ all_args[:] = self.opt_args[:]
++ all_args.extend(self.required_args)
++ for k in self.request:
++ try:
++ all_args.index(k)
++ if (k == 'set'):
++ self.response.error('noSetHierarchy')
++ return False
++ except ValueError:
++ self.response.error('badArgument', 'Invalid argument: %s' % k)
++ return False
++
++ return self.pre_validate()
++
++ def pre_validate(self):
++ """Same as validate(), but doesn't not check for unknown arguments"""
++
++ for k in self.required_args:
++ if not self.request.has_key(k):
++ self.response.error('badArgument', 'Missing required argument: %s' % k)
++ return False
++
++ for k in self.request:
++ if k == 'metadataPrefix':
++ if self.format:
++ if self.format != self.request[k]:
++ self.response.error('cannotDisseminateFormat')
++ return False
++ else:
++ raise Exception('Can\'t validate metadataPrefix argument: supported format isn\'t defined')
++ elif (k == 'from') or (k == 'until'):
++ if not parse_iso_time(self.request[k]):
++ self.response.error('badArgument', "Invalid ISO8601 time format in '%s' argument" % k)
++ return False
++
++ return True
++
++class DataProvider(object):
++ """OAI-PMH Data Provider"""
++
++ max_records_per_response = 500
++
++ def __init__(self, datasource, repository_name, base_url, admin_email):
++ self.datasource = datasource
++ self.identity = [
++ ('repositoryName', repository_name),
++ ('baseURL', base_url),
++ ('protocolVersion', '2.0'),
++ ('adminEmail', admin_email),
++ ('deletedRecord', 'no'),
++ ('granularity', 'YYYY-MM-DDThh:mm:ssZ')
++ ]
++
++ def parse_time_range(self, args):
++ if args.get('from'):
++ from_time = parse_iso_time(args['from'])
++ else:
++ from_time = None
++ if args.get('until'):
++ until_time = parse_iso_time(args['until'])
++ else:
++ until_time = None
++
++ return from_time, until_time
++
++ def handle(self, args):
++ """Handle a request and return the response as a DOM document"""
++
++ response = Response(self.identity, self.datasource)
++ response.max_records_per_response = self.max_records_per_response
++
++ validator = ArgumentValidator(args, response)
++ validator.accept_format('oai_dc')
++
++ if validator.has_verb():
++
++ verb = args['verb']
++ response.set_verb(verb)
++
++ if verb == 'Identify':
++ validator.validate() and response.identify()
++ elif verb == 'GetRecord':
++ validator.require('identifier', 'metadataPrefix')
++ validator.validate() and response.get_record(args['identifier'])
++ elif verb == 'ListIdentifiers' or verb == 'ListRecords':
++ validator.optional('metadataPrefix', 'from', 'until', 'set', 'resumptionToken')
++ from_time, until_time = self.parse_time_range(args)
++ token = args.get('resumptionToken')
++ if validator.validate():
++ response.list_records(from_time, until_time, token, ids_only = (verb == 'ListIdentifiers'))
++ elif verb == 'ListSets':
++ validator.optional('resumptionToken')
++ validator.validate() and response.error('noSetHierarchy')
++ elif verb == 'ListMetadataFormats':
++ validator.optional('identifier')
++ validator.validate() and response.list_formats(args.get('identifier'))
++
++ xml = doc_to_string(response.doc)
++ response.free()
++ return xml
++
++class Response(object):
++ """OAI-PMH response generation"""
++
++ max_records_per_response = 500
++
++ def __init__(self, identity, datasource):
++ self.identity = identity
++ self.datasource = datasource
++
++ impl = dom.getDOMImplementation()
++ self.doc = impl.createDocument(None, 'OAI-PMH', None)
++ self.root = self.doc.firstChild
++ self.root.setAttribute('xmlns', 'http://www.openarchives.org/OAI/2.0/')
++ self.root.setAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance')
++ self.root.setAttribute('xsi:schemaLocation', 'http://www.openarchives.org/OAI/2.0/ '
++ 'http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd')
++ self.append_elements(self.root, {'responseDate': iso_time()})
++ self.request = self.root.appendChild(self.doc.createElement('request'))
++ for k, v in self.identity:
++ if k == 'baseURL':
++ url = v
++ break
++ self.request.appendChild(self.doc.createTextNode(url))
++
++ def append_elements(self, parent, elements, prefix=None):
++ """Append several elements to parent. elements must either be a tag:value dict or
++ an ordered list of (tag, value) tuples."""
++ for item in elements:
++ if isinstance(item, tuple):
++ tag, value = item
++ else:
++ tag = item
++ value = elements[tag]
++ if prefix:
++ tag = prefix + ':' + tag
++ e = parent.appendChild(self.doc.createElement(tag))
++ e.appendChild(self.doc.createTextNode(value))
++ return parent
++
++ def set_attributes(self, element, attributes):
++ """Set several attributes on element, from dict. attributes must either be an
++ attr:value dict or an ordered list of (attr, value) tuples. If element is a
++ string, then create an element with than name. Return (possibly created)
++ element."""
++ if isinstance(element, basestring):
++ element = self.doc.createElement(element)
++ for item in attributes:
++ if isinstance(item, tuple):
++ attr, value = item
++ else:
++ attr = item
++ value = attributes[item]
++ element.setAttribute(attr, value)
++ return element
++
++ def set_verb(self, verb):
++ """Set the verb of the response. Should be called before any 'real' method such
++ as identify(), get_record(), etc..."""
++ self.verb = verb
++ self.request.setAttribute('verb', self.verb)
++
++ def identify(self):
++ """Append Identify tag and child nodes"""
++
++ identity = []
++ identity[:] = self.identity[:]
++ earliest = self.datasource.get_earliest_time()
++ identity.insert(4, ('earliestDatestamp', iso_time(earliest)))
++
++ group = self.root.appendChild(self.doc.createElement('Identify'))
++ self.append_elements(group, identity)
++
++ def error(self, code, msg = None):
++ """Add error tag using code. If msg is not provided, use a default error message."""
++
++ msgs = {
++ 'badArgument': 'Incorrect arguments',
++ 'badResumptionToken': 'Invalid resumption token',
++ 'badVerb': 'Illegal OAI verb',
++ 'noSetHierarchy': 'This repository does not support sets.',
++ 'idDoesNotExist': 'No such record',
++ 'cannotDisseminateFormat': 'Unsupported metadata format',
++ 'noRecordsMatch': 'The request returned an empty record set'
++ }
++
++ if not msg:
++ msg = msgs[code]
++ if not msg:
++ raise Exception("No such error code: %s" % code)
++
++ err = self.root.appendChild(self.set_attributes('error', {'code': code}))
++ err.appendChild(self.doc.createTextNode(msg))
++
++ def make_record_header(self, id, ctime):
++ """Build and return a record header"""
++ header = self.doc.createElement('header')
++ self.append_elements(header, [('identifier', id), ('datestamp', iso_time(ctime))])
++ return header
++
++ def make_record(self, id, dc, ctime):
++ """Build and return a record"""
++ record = self.doc.createElement('record')
++ header = record.appendChild(self.make_record_header(id, ctime))
++ metadata = record.appendChild(self.doc.createElement('metadata'))
++ container = metadata.appendChild(self.doc.createElement('oai_dc:dc'))
++ self.set_attributes(container, [
++ ('xmlns:oai_dc', "http://www.openarchives.org/OAI/2.0/oai_dc/"),
++ ('xmlns:dc', "http://purl.org/dc/elements/1.1/"),
++ ('xmlns:xsi', "http://www.w3.org/2001/XMLSchema-instance"),
++ ('xsi:schemaLocation', "http://www.openarchives.org/OAI/2.0/oai_dc/ "
++ "http://www.openarchives.org/OAI/2.0/oai_dc.xsd")
++ ])
++ self.append_elements(container, dc, prefix='dc')
++ return record
++
++ def parse_dc(self, data):
++ valid = ['title', 'creator', 'subject', 'description', 'publisher', 'contributor',
++ 'date', 'type', 'format', 'identifier', 'source', 'language', 'relation',
++ 'coverage', 'rights']
++
++ parsed = []
++ id = None
++ for k, v in data:
++ try:
++ valid.index(k)
++ parsed.append((k, v))
++ if k == 'identifier':
++ id = v
++ except ValueError:
++ pass
++
++ return id, parsed
++
++
++ def get_record(self, id):
++ """Append GetRecord result"""
++ try:
++ record = self.datasource.get_record(id)
++ except BadArgumentError, e:
++ self.error('badArgument', e.message)
++ return
++ if not record:
++ self.error('idDoesNotExist')
++ else:
++ dc, ctime = record
++ dc_id, dc = self.parse_dc(dc)
++ if dc_id == None:
++ raise Exception("DataSource.get_record() didn't provide an 'identifier' dublin core element")
++ elif dc_id != id:
++ raise Exception("DataSource.get_record() returned an 'identifier' dublin core element "
++ "which is different from the requested identifier")
++
++ self.set_attributes(self.request, {'identifier': id, 'metadataPrefix': 'oai_dc'})
++ container = self.root.appendChild(self.doc.createElement(self.verb))
++ container.appendChild(self.make_record(id, dc, ctime))
++
++ def list_records(self, from_time, until_time, token = None, ids_only = False):
++ """Append ListIdentifiers or ListRecords result"""
++ offset = 0
++ if token:
++ self.request.setAttribute('resumptionToken', token)
++ try:
++ from_time, until_time, offset = token.split(',')
++ except ValueError:
++ self.error('badResumptionToken')
++ return
++
++ if len(from_time):
++ from_time = parse_iso_time(from_time)
++ if not from_time:
++ self.error('badResumptionToken')
++ return
++ else:
++ from_time = None
++
++ if len(until_time):
++ until_time = parse_iso_time(until_time)
++ if not until_time:
++ self.error('badResumptionToken')
++ return
++ else:
++ until_time = None
++
++ try:
++ offset = int(offset)
++ except ValueError:
++ self.error('badResumptionToken')
++ return
++ else:
++ if from_time:
++ self.request.setAttribute('from', iso_time(from_time))
++ if until_time:
++ self.request.setAttribute('until', iso_time(until_time))
++
++ count = self.datasource.count_records(from_time, until_time)
++ data = self.datasource.list_records(offset, self.max_records_per_response, from_time, until_time)
++ if (len(data) > self.max_records_per_response):
++ raise Exception("DataSource.list_records() returned too many records")
++
++ if len(data):
++ container = self.root.appendChild(self.doc.createElement(self.verb))
++ for item in data:
++ dc, ctime = item
++ id, dc = self.parse_dc(dc)
++ if id == None:
++ raise Exception("DataSource.list_records() didn't provide an 'identifier' dublin core element")
++
++ if ids_only:
++ container.appendChild(self.make_record_header(id, ctime))
++ else:
++ container.appendChild(self.make_record(id, dc, ctime))
++
++ if count - offset > self.max_records_per_response:
++ token = container.appendChild(self.doc.createElement('resumptionToken'))
++ token.setAttribute('completeListSize', str(count))
++
++ if from_time:
++ from_time = iso_time(from_time)
++ else:
++ from_time = ''
++
++ if until_time:
++ until_time = iso_time(until_time)
++ else:
++ until_time = ''
++
++ token_str = "%s,%s,%d" % (from_time, until_time, offset + len(data))
++ token.appendChild(self.doc.createTextNode(token_str))
++ elif offset:
++ token = container.appendChild(self.doc.createElement('resumptionToken'))
++ token.setAttribute('completeListSize', str(count))
++ else:
++ self.error("noRecordsMatch")
++
++ def list_formats(self, id = None):
++ """Append ListMetadataFormats result"""
++ if id:
++ record = self.datasource.get_record(id)
++ if not record:
++ self.error('idDoesNotExist')
++ return
++ self.request.setAttribute('identifier', id)
++
++ container = self.root.appendChild(self.doc.createElement(self.verb))
++ format = container.appendChild(self.doc.createElement('metadataFormat'))
++ self.append_elements(format, [
++ ('metadataPrefix', 'oai_dc'),
++ ('schema', 'http://www.openarchives.org/OAI/2.0/oai_dc.xsd'),
++ ('metadataNamespace', 'http://www.openarchives.org/OAI/2.0/oai_dc/')
++ ])
++
++ def free(self):
++ """Free the resources used by this response"""
++ try:
++ self.doc.unlink()
++ except AttributeError:
++ # Apparently no free/unlink method in libxml2dom
++ pass
++
++class BadArgumentError(Exception):
++ pass
--- /dev/null
--- /dev/null
++# Telemeta OAI-PMH DataSource
++#
++# Copyright (C) 2009 Samalyse SARL
++# Author: Olivier Guilyardi <olivier samalyse com>
++#
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++#
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++#
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++#
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++
++from telemeta.models import MediaCollection, MediaItem, Revision, dublincore
++from telemeta.interop.oai import BadArgumentError
++from datetime import datetime
++
++class TelemetaOAIDataSource(object):
++ """Telemeta OAI datasource adapter. This class implements the oai.IDataSource interface."""
++
++ def get_earliest_time(self):
++ """Return the change time of the oldest record(s) as a datetime object"""
++ try:
++ rev = Revision.objects.order_by('time')[0]
++ return rev.time
++ except IndexError:
++ return datetime.now()
++
++ def prepare_record(self, record):
++ ctime = record.get_revision().time
++ return dublincore.express_resource(record).to_list(), ctime
++
++ def get_record(self, id):
++ """Return a specific record"""
++ try:
++ record = dublincore.lookup_resource(id)
++ except dublincore.MalformedMediaIdentifier, e:
++ raise BadArgumentError(e.message)
++ return record and self.prepare_record(record)
++
++ def count_records(self, from_time = None, until_time = None):
++ """Must return the number of records between (optional) from and until change time."""
++ nitems = MediaItem.objects.by_change_time(from_time, until_time).count()
++ ncolls = MediaCollection.objects.by_change_time(from_time, until_time).count()
++ return nitems + ncolls
++
++ def list_records(self, offset, limit, from_time = None, until_time = None):
++ """Return a list of records"""
++
++ result = []
++
++ query = MediaItem.objects.by_change_time(from_time, until_time)
++ nitems = query.count()
++ if (offset < nitems):
++ set = query[offset:offset + limit]
++ for record in set:
++ result.append(self.prepare_record(record))
++ limit -= len(set)
++ offset = 0
++ else:
++ offset -= nitems
++
++ if limit > 0:
++ query = MediaCollection.objects.by_change_time(from_time, until_time)
++ set = query[offset:offset + limit]
++ for record in set:
++ result.append(self.prepare_record(record))
++
++ return result
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++
++import sys
++from datetime import datetime
++from oai import DataProvider
++import cherrypy
++
++class DataSource(object):
++ def __init__(self):
++ self.oldest = datetime(1988, 1, 1)
++
++ self.data = {
++ '10': ([('title', 'Roger Rabbit'), ('title', 'Roger Le Lapin'), ('creator', 'Bugs Bunny')], self.oldest),
++ '20': ([('title', 'Pulp Fiction'), ('creator', 'Quentin Tarantino')], datetime(1994, 10, 14)),
++ '30': ([('title', 'Children of Men'), ('creator', u'Alfonso Cuarón')], datetime(2006, 10, 18))
++ }
++
++
++ def get_earliest_time(self):
++ return self.oldest
++
++ def get_record(self, id):
++ record = self.data.get(id)
++ if record:
++ dc = []
++ dc[:] = record[0][:]
++ dc.insert(0, ('identifier', id))
++ record = (dc, record[1])
++ return record
++
++ def count_records(self, from_time = None, until_time = None):
++ result = 0
++ for k in self.data:
++ dc, ctime = self.data[k]
++ if ((not from_time) or ctime >= from_time) and ((not until_time) or ctime <= until_time):
++ result += 1
++ #result.push((k, ctime))
++ return result
++
++ def list_records(self, offset, limit, from_time = None, until_time = None):
++ result = []
++ i = 0
++ n = 0
++ for k in self.data:
++ dc = []
++ _dc, ctime = self.data[k]
++ dc[:] = _dc[:]
++ dc.insert(0, ('identifier', k))
++ if ((not from_time) or ctime >= from_time) and ((not until_time) or ctime <= until_time):
++ if (i >= offset) and (n < limit):
++ result.append((dc, ctime))
++ n += 1
++ i += 1
++ return result
++
++class OAIServer:
++ def __init__(self, provider):
++ self.provider = provider
++
++ def index(self, **kwargs):
++ return self.provider.handle(kwargs).encode('UTF-8')
++
++ index.exposed = True
++
++args = {}
++runserver = False
++for item in sys.argv[1:]:
++ cut = item.split('=')
++ if len(cut) == 1:
++ if cut[0] == 'runserver':
++ runserver = True
++ host = None
++ port = None
++ break
++ else:
++ raise Exception("Please pass a value for argument %s" % cut[0])
++ else:
++ k, v = cut
++ if k == 'runserver':
++ runserver = True
++ host, port = v.split(':')
++ break
++ else:
++ args[k] = v
++
++provider = DataProvider(DataSource(), "Test Provider", "http://test.provider.com", "joe@provider.com")
++provider.max_records_per_response = 2
++
++if runserver:
++ if host:
++ cherrypy.config.update({'server.socket_host': host})
++ if port:
++ cherrypy.config.update({'server.socket_port': int(port)})
++
++ cherrypy.quickstart(OAIServer(provider))
++else:
++ sys.stdout.write(provider.handle(args).encode('UTF-8'))
--- /dev/null
--- /dev/null
++# Telemeta French Translation
++# Copyright (C) 2010 Samalyse
++# This file is distributed under the same license as the Telemeta package.
++# Olivier Guilyardi <olivier samalyse com>, 2010.
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2010-04-11 17:36+0200\n"
++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
++"Last-Translator: Olivier Guilyardi <olivier samalyse com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++
++#: models/core.py:142
++msgid "Duration"
++msgstr "Durée"
++
++#: models/core.py:147
++msgid "Enter a valid duration in HH:MM[:ss] format."
++msgstr "Entrez une durée valide au format HH:MM[:ss]"
++
++#: models/enum.py:41 models/enum.py:139
++msgid "value"
++msgstr "valeur"
++
++#: models/enum.py:57 models/media.py:79
++msgid "archive format"
++msgstr "format d'archivage"
++
++#: models/enum.py:64 models/media.py:86
++msgid "secondary edition"
++msgstr "réédition"
++
++#: models/enum.py:71 models/media.py:101
++msgid "mode of acquisition"
++msgstr "mode d'acquisition"
++
++#: models/enum.py:78 models/media.py:104
++msgid "record author"
++msgstr "rédacteur fiche"
++
++#: models/enum.py:85 models/media.py:106
++msgid "record writer"
++msgstr "saisie fiche"
++
++#: models/enum.py:92 models/media.py:108
++msgid "legal rights"
++msgstr "droit d'utilisation"
++
++#: models/enum.py:99 models/media.py:113
++msgid "recording context"
++msgstr "contexte d'enregistrement"
++
++#: models/enum.py:106 models/media.py:122
++msgid "digitization"
++msgstr "numérisation"
++
++#: models/enum.py:113 models/media.py:231
++msgid "vernacular style"
++msgstr "style vernaculaire"
++
++#: models/enum.py:120 models/media.py:240
++msgid "generic style"
++msgstr "style générique"
++
++#: models/enum.py:127 models/media.py:311
++msgid "keyword"
++msgstr "mot-clé"
++
++#: models/enum.py:134 models/media.py:93
++msgid "publisher / status"
++msgstr "éditeur / statut"
++
++#: models/enum.py:138
++msgid "publisher"
++msgstr "éditeur"
++
++#: models/enum.py:152 models/enum.py:156 models/media.py:226
++msgid "population / social group"
++msgstr "population / groupe social"
++
++#: models/enum.py:157 models/instrument.py:41 models/instrument.py:51
++#: models/location.py:50 models/location.py:148 models/media.py:348
++msgid "name"
++msgstr "nom"
++
++#: models/instrument.py:62 models/instrument.py:75
++msgid "instrument"
++msgstr "instrument"
++
++#: models/instrument.py:64
++msgid "parent instrument"
++msgstr "instrument parent"
++
++#: models/instrument.py:73 models/location.py:156
++msgid "alias"
++msgstr "alias"
++
++#: models/location.py:48
++msgid "country"
++msgstr "état/nation"
++
++#: models/location.py:48
++msgid "continent"
++msgstr "continent"
++
++#: models/location.py:48
++msgid "other"
++msgstr "autre"
++
++#: models/location.py:51
++msgid "type"
++msgstr "type"
++
++#: models/location.py:52
++msgid "complete type"
++msgstr "type complet"
++
++#: models/location.py:54
++msgid "current location"
++msgstr "lieu actuel"
++
++#: models/location.py:57 models/location.py:157 models/location.py:171
++msgid "authoritative"
++msgstr "officiel"
++
++#: models/location.py:111 models/location.py:155 models/location.py:168
++#: models/media.py:223
++msgid "location"
++msgstr "lieu"
++
++#: models/location.py:147
++msgid "identifier"
++msgstr "identifiant"
++
++#: models/location.py:169
++msgid "ancestor location"
++msgstr "lieu ancêtre"
++
++#: models/media.py:50
++msgid "Metadata only"
++msgstr "Métadonnées uniquement"
++
++#: models/media.py:52
++msgid "Sound and metadata"
++msgstr "Son et métadonnées"
++
++#: models/media.py:54
++msgid "Private data"
++msgstr "Données privées"
++
++#: models/media.py:55 models/media.py:123 models/media.py:245
++msgid "public access"
++msgstr "accès public"
++
++#: models/media.py:77 models/media.py:242
++msgid "reference"
++msgstr "référence"
++
++#: models/media.py:80 models/media.py:218
++msgid "old code"
++msgstr "ancienne cote"
++
++#: models/media.py:81 models/media.py:219
++msgid "code"
++msgstr "cote"
++
++#: models/media.py:82 models/media.py:227 models/media.py:335
++msgid "title"
++msgstr "titre"
++
++#: models/media.py:83 models/media.py:228
++msgid "original title / translation"
++msgstr "titre original / traduction"
++
++#: models/media.py:84
++msgid "number of components (medium / piece)"
++msgstr "nb de composants (support / pièce)"
++
++#: models/media.py:87
++msgid "depositor / contributor"
++msgstr "déposant / contributeur"
++
++#: models/media.py:88
++msgid "author of published notice"
++msgstr "auteur de la notice éditée"
++
++#: models/media.py:89
++msgid "related documentation"
++msgstr "documentation associée"
++
++#: models/media.py:90 models/media.py:236
++msgid "recordist"
++msgstr "collecteur"
++
++#: models/media.py:91
++msgid "recordist identical to depositor"
++msgstr "collecteur identique au déposant"
++
++#: models/media.py:94
++msgid "published"
++msgstr "édité"
++
++#: models/media.py:95
++msgid "year published"
++msgstr "année de parution"
++
++#: models/media.py:97
++msgid "publisher collection"
++msgstr "collection éditeur"
++
++#: models/media.py:98
++msgid "publisher serial number"
++msgstr "numéro dans la série"
++
++#: models/media.py:99
++msgid "bibliographic references"
++msgstr "références bibliographiques"
++
++#: models/media.py:102
++msgid "comment"
++msgstr "commentaire"
++
++#: models/media.py:109
++msgid "copies"
++msgstr "autres exemplaires"
++
++#: models/media.py:110
++msgid "recording year (from)"
++msgstr "année d'enregistrement (depuis)"
++
++#: models/media.py:111
++msgid "recording year (until)"
++msgstr "année d'enregistrement (jusqu'à)"
++
++#: models/media.py:114 models/media.py:220
++msgid "approximative duration"
++msgstr "durée approximative"
++
++#: models/media.py:115
++msgid "document type"
++msgstr "type de document"
++
++#: models/media.py:116
++msgid "archiver notes"
++msgstr "notes de l'archiviste"
++
++#: models/media.py:117
++msgid "status"
++msgstr "etat"
++
++#: models/media.py:118
++msgid "CNRS depositor"
++msgstr "déposant CNRS"
++
++#: models/media.py:119
++msgid "items finished"
++msgstr "fiches items faîtes"
++
++#: models/media.py:120
++msgid "a_informer_07_03"
++msgstr "a_informer_07_03"
++
++#: models/media.py:160
++msgid "states / nations"
++msgstr "états / nations"
++
++#: models/media.py:174
++msgid "populations / social groups"
++msgstr "populations / groupes sociaux"
++
++#: models/media.py:182 models/media.py:295
++msgid "computed duration"
++msgstr "durée calculée"
++
++#: models/media.py:216
++msgid "collection"
++msgstr "collection"
++
++#: models/media.py:217
++msgid "item number"
++msgstr "n° de l'item"
++
++#: models/media.py:221
++msgid "recording date (from)"
++msgstr "date d'enregistrement (depuis)"
++
++#: models/media.py:222
++msgid "recording date (until)"
++msgstr "date d'enregistrement (jusqu'à)"
++
++#: models/media.py:224
++msgid "location details"
++msgstr "précisions lieu"
++
++#: models/media.py:229
++msgid "author / compositor"
++msgstr "auteur / compositeur"
++
++#: models/media.py:232
++msgid "comments"
++msgstr "commentaires"
++
++#: models/media.py:233
++msgid "published reference"
++msgstr "référence éditée"
++
++#: models/media.py:234
++msgid "moda_execut"
++msgstr "moda_execut"
++
++#: models/media.py:235
++msgid "copy of"
++msgstr "copie de"
++
++#: models/media.py:237
++msgid "recordist as in collection"
++msgstr "collecteur identique à la collection"
++
++#: models/media.py:238
++msgid "cultural area"
++msgstr "aire culturelle"
++
++#: models/media.py:241
++msgid "recordist selection"
++msgstr "sélection collecteur"
++
++#: models/media.py:243
++msgid "remarks"
++msgstr "remarques"
++
++#: models/media.py:244
++msgid "file"
++msgstr "fichier"
++
++#: models/media.py:251
++msgid "keywords"
++msgstr "mots-clés"
++
++#: models/media.py:310 models/media.py:320 models/media.py:334
++msgid "item"
++msgstr "item"
++
++#: models/media.py:322
++msgid "composition"
++msgstr "formation"
++
++#: models/media.py:324
++msgid "vernacular name"
++msgstr "nom vernaculaire"
++
++#: models/media.py:325
++msgid "number"
++msgstr "nombre"
++
++#: models/media.py:326
++msgid "interprets"
++msgstr "interprètes"
++
++#: models/media.py:336
++msgid "start"
++msgstr "début"
++
++#: models/media.py:337
++msgid "end"
++msgstr "fin"
++
++#: models/media.py:360
++msgid "playlist"
++msgstr "liste de lecture"
++
++#: models/media.py:361
++msgid "resource type"
++msgstr "type de ressource"
++
++#: models/media.py:362
++msgid "resource"
++msgstr "ressource"
++
++#: models/system.py:44
++msgid "username"
++msgstr "nom d'utilisateur"
++
++#: models/system.py:45
++msgid "level"
++msgstr "niveau"
++
++#: models/system.py:46
++msgid "first name"
++msgstr "prénom"
++
++#: models/system.py:47
++msgid "last name"
++msgstr "nom de famille"
++
++#: models/system.py:48
++msgid "phone"
++msgstr "téléphone"
++
++#: models/system.py:49
++msgid "email"
++msgstr "e-mail"
++
++#: models/system.py:62
++msgid "element type"
++msgstr "type d'élément"
++
++#: models/system.py:63
++msgid "element identifier"
++msgstr "identifiant de l'élément"
++
++#: models/system.py:64
++msgid "modification type"
++msgstr "type de modification"
++
++#: models/system.py:65
++msgid "time"
++msgstr "heure"
++
++#: models/system.py:66
++msgid "user"
++msgstr "utilisateur"
++
++#: templates/telemeta_default/base.html:37
++msgid "Sign out"
++msgstr "Déconnexion"
++
++#: templates/telemeta_default/base.html:39
++#: templates/telemeta_default/login.html:20
++msgid "Sign in"
++msgstr "Connexion"
++
++#: templates/telemeta_default/base.html:46
++#: templates/telemeta_default/search_criteria.html:134
++msgid "Search"
++msgstr "Recherche"
++
++#: templates/telemeta_default/base.html:48
++msgid "Advanced search"
++msgstr "Recherche avancée"
++
++#: templates/telemeta_default/base.html:55
++msgid "Collections"
++msgstr "Collections"
++
++#: templates/telemeta_default/base.html:55
++msgid "Items"
++msgstr "Items"
++
++#: templates/telemeta_default/base.html:55
++msgid "Geo Navigator"
++msgstr "Géo-Navigateur"
++
++#: templates/telemeta_default/base.html:55
++msgid "Admin"
++msgstr "Admin"
++
++#: templates/telemeta_default/base.html:75
++msgid "Powered by"
++msgstr "Propulsé par"
++
++#: templates/telemeta_default/base.html:76
++msgid "By"
++msgstr "Par"
++
++#: templates/telemeta_default/base.html:80
++msgid "Visit the Telemeta open source project at"
++msgstr "Visitez le projet libre Telemeta"
++
++#: templates/telemeta_default/collection_detail.html:5
++#: templates/telemeta_default/collection_detail_dc.html:5
++msgid "Collection"
++msgstr "Collection"
++
++#: templates/telemeta_default/collection_detail.html:53
++msgid "Recording year"
++msgstr "Année d'enregistrement"
++
++#: templates/telemeta_default/collection_detail.html:63
++#: templates/telemeta_default/mediaitem_detail.html:148
++msgid "Geographic and cultural informations"
++msgstr "Indications géographiques et culturelles"
++
++#: templates/telemeta_default/collection_detail.html:76
++msgid "Legal mentions"
++msgstr "Mentions légales"
++
++#: templates/telemeta_default/collection_detail.html:81
++#: templates/telemeta_default/inc/collection_list.html:17
++#: templates/telemeta_default/inc/mediaitem_list.html:16
++msgid "Recordist"
++msgstr "Collecteur"
++
++#: templates/telemeta_default/collection_detail.html:102
++#: templates/telemeta_default/mediaitem_detail.html:213
++msgid "Archiving data"
++msgstr "Données d'archivage"
++
++#: templates/telemeta_default/collection_detail.html:125
++#: templates/telemeta_default/mediaitem_detail.html:228
++msgid "Technical data"
++msgstr "Données techniques"
++
++#: templates/telemeta_default/collection_detail.html:130
++#: templates/telemeta_default/mediaitem_detail.html:231
++msgid "Media type"
++msgstr "Type de media"
++
++#: templates/telemeta_default/collection_detail.html:130
++#: templates/telemeta_default/mediaitem_detail.html:231
++msgid "Audio"
++msgstr "Audio"
++
++#: templates/telemeta_default/collection_detail.html:135
++#: templates/telemeta_default/geo_countries.html:14
++msgid "Number of items"
++msgstr "Nombre d'items"
++
++#: templates/telemeta_default/collection_detail_dc.html:10
++#: templates/telemeta_default/mediaitem_detail_dc.html:10
++msgid "Normal View"
++msgstr "Vue normale"
++
++#: templates/telemeta_default/collection_detail_dc.html:20
++msgid "No such collection"
++msgstr "Collection introuvable"
++
++#: templates/telemeta_default/collection_list.html:5
++#: templates/telemeta_default/collection_list.html:8
++msgid "Media Collections"
++msgstr "Collections"
++
++#: templates/telemeta_default/country_info.html:9
++msgid "in"
++msgstr "dans"
++
++#: templates/telemeta_default/country_info.html:18
++msgid "Populations / Social groups"
++msgstr "Populations / Groupes sociaux"
++
++#: templates/telemeta_default/enumeration_edit.html:4
++#: templates/telemeta_default/enumeration_edit.html:7
++#: templates/telemeta_default/enumeration_edit_value.html:4
++#: templates/telemeta_default/enumeration_edit_value.html:7
++msgid "Enumeration"
++msgstr "Enumération"
++
++#: templates/telemeta_default/enumeration_edit.html:12
++msgid "Add entry"
++msgstr "Ajouter une entrée"
++
++#: templates/telemeta_default/enumeration_edit.html:14
++#: templates/telemeta_default/enumeration_edit.html:26
++#: templates/telemeta_default/enumeration_edit_value.html:14
++msgid "Value"
++msgstr "Valeur"
++
++#: templates/telemeta_default/enumeration_edit.html:18
++msgid "Add"
++msgstr "Ajouter"
++
++#: templates/telemeta_default/enumeration_edit.html:40
++msgid "Remove selected items"
++msgstr "Supprimer les éléments sélectionnés"
++
++#: templates/telemeta_default/enumeration_edit.html:44
++msgid "This enumeration is empty"
++msgstr "Cette énumération est vide"
++
++#: templates/telemeta_default/enumeration_edit_value.html:12
++msgid "Modify an entry"
++msgstr "Modification d'une entrée"
++
++#: templates/telemeta_default/enumeration_edit_value.html:18
++msgid "Save"
++msgstr "Enregistrer"
++
++#: templates/telemeta_default/enumeration_edit_value.html:19
++msgid "Cancel"
++msgstr "Annuler"
++
++#: templates/telemeta_default/geo_continents.html:5
++#: templates/telemeta_default/geo_continents.html:26
++#: templates/telemeta_default/geo_countries.html:5
++#: templates/telemeta_default/geo_country_collections.html:5
++#: templates/telemeta_default/geo_country_items.html:5
++#: templates/telemeta_default/index.html:9
++msgid "Geographic Navigator"
++msgstr "Navigateur géographique"
++
++#: templates/telemeta_default/geo_continents.html:21
++msgid "Map"
++msgstr "Carte"
++
++#: templates/telemeta_default/geo_continents.html:22
++msgid "List"
++msgstr "Liste"
++
++#: templates/telemeta_default/geo_countries.html:8
++#: templates/telemeta_default/geo_country_collections.html:8
++#: templates/telemeta_default/geo_country_items.html:8
++msgid "World"
++msgstr "Monde"
++
++#: templates/telemeta_default/geo_countries.html:12
++msgid "Country"
++msgstr "Etat/nation"
++
++#: templates/telemeta_default/geo_countries.html:13
++msgid "Number of collections"
++msgstr "Nombre de collections"
++
++#: templates/telemeta_default/geo_countries.html:22
++#, python-format
++msgid "1 collection"
++msgid_plural "%(counter)s collections"
++msgstr[0] "1 collection"
++msgstr[1] "%(counter)s collections"
++
++#: templates/telemeta_default/geo_countries.html:29
++#, python-format
++msgid "1 item"
++msgid_plural "%(counter)s items "
++msgstr[0] "1 item"
++msgstr[1] "%(counter)s items "
++
++#: templates/telemeta_default/index.html:11
++msgid "Open the geographic navigator"
++msgstr "Accéder au navigateur géographique"
++
++#: templates/telemeta_default/index.html:14
++msgid "Musical selection"
++msgstr "Sélection musicale"
++
++#: templates/telemeta_default/login.html:5
++msgid "User authentication"
++msgstr "Identification"
++
++#: templates/telemeta_default/login.html:8
++msgid "Your username and password didn't match. Please try again."
++msgstr "Vos nom d'utilisateur et/ou mot de passe sont incorrects. Essayez à nouveau."
++
++#: templates/telemeta_default/mediaitem_detail.html:5
++#: templates/telemeta_default/mediaitem_detail_dc.html:5
++msgid "Item"
++msgstr "Item"
++
++#: templates/telemeta_default/mediaitem_detail.html:120
++msgid "Download:"
++msgstr "Téléchargement:"
++
++#: templates/telemeta_default/mediaitem_detail.html:139
++msgid "Recording date"
++msgstr "Date d'enregistrement"
++
++#: templates/telemeta_default/mediaitem_detail.html:151
++#: templates/telemeta_default/inc/mediaitem_list.html:18
++msgid "Location"
++msgstr "Lieu"
++
++#: templates/telemeta_default/mediaitem_detail.html:166
++msgid "Musical informations"
++msgstr "Informations sur la musique"
++
++#: templates/telemeta_default/mediaitem_detail.html:202
++msgid "General informations"
++msgstr "Informations générales"
++
++#: templates/telemeta_default/mediaitem_detail_dc.html:19
++msgid "No such item"
++msgstr "Item introuvable"
++
++#: templates/telemeta_default/mediaitem_list.html:5
++#: templates/telemeta_default/mediaitem_list.html:8
++msgid "Media Items"
++msgstr "Items"
++
++#: templates/telemeta_default/search_criteria.html:5
++#: templates/telemeta_default/search_criteria.html:55
++msgid "Advanced Search"
++msgstr "Recherche avancée"
++
++#: templates/telemeta_default/search_criteria.html:79
++#: templates/telemeta_default/search_results.html:28
++#: templates/telemeta_default/inc/collection_list.html:14
++#: templates/telemeta_default/inc/mediaitem_list.html:14
++msgid "Title"
++msgstr "Titre"
++
++#: templates/telemeta_default/search_criteria.html:95
++#: templates/telemeta_default/search_results.html:31
++#: templates/telemeta_default/inc/collection_list.html:18
++#: templates/telemeta_default/inc/mediaitem_list.html:22
++msgid "Year of recording"
++msgstr "Année d'enregistrement"
++
++#: templates/telemeta_default/search_criteria.html:102
++#: templates/telemeta_default/search_criteria.html:121
++#: templates/telemeta_default/search_results.html:33
++#: templates/telemeta_default/search_results.html:40
++msgid "to"
++msgstr "à"
++
++#: templates/telemeta_default/search_criteria.html:114
++#: templates/telemeta_default/search_results.html:38
++msgid "Year of publication"
++msgstr "Année de publication"
++
++#: templates/telemeta_default/search_results.html:5
++#: templates/telemeta_default/search_results.html:8
++msgid "Search Results"
++msgstr "Résultats de recherche"
++
++#: templates/telemeta_default/search_results.html:13
++msgid "Search pattern"
++msgstr "Recherche"
++
++#: templates/telemeta_default/inc/collection_list.html:6
++#, python-format
++msgid "Collections %(first_on_page)s to %(last_on_page)s on %(hits)s"
++msgstr "Collections %(first_on_page)s à %(last_on_page)s sur %(hits)s"
++
++#: templates/telemeta_default/inc/collection_list.html:15
++#: templates/telemeta_default/inc/mediaitem_list.html:15
++msgid "Code"
++msgstr "Cote"
++
++#: templates/telemeta_default/inc/collection_list.html:42
++msgid "No collection"
++msgstr "Aucune collection"
++
++#: templates/telemeta_default/inc/dublincore.html:4
++msgid "Dublin Core Metadata"
++msgstr "Métadonnées Dublin Core"
++
++#: templates/telemeta_default/inc/mediaitem_list.html:6
++#, python-format
++msgid "Items %(first_on_page)s to %(last_on_page)s on %(hits)s"
++msgstr "Items %(first_on_page)s à %(last_on_page)s sur %(hits)s"
++
++#: templates/telemeta_default/inc/mediaitem_list.html:20
++msgid "Country/Continent"
++msgstr "Etat/Continent"
++
++#: templates/telemeta_default/inc/mediaitem_list.html:50
++msgid "No item"
++msgstr "Aucun item"
++
++#: templatetags/telemeta_utils.py:218
++#, python-format
++msgid "%(count)d item"
++msgid_plural "%(count)d items"
++msgstr[0] "%(count)d item"
++msgstr[1] "%(count)d items"
++
++#: templatetags/telemeta_utils.py:221
++#, python-format
++msgid "%(count)d collection"
++msgid_plural "%(count)d collections"
++msgstr[0] "%(count)d collection"
++msgstr[1] "%(count)d collections"
--- /dev/null
--- /dev/null
--- /dev/null
--- /dev/null
--- /dev/null
--- /dev/null
++from optparse import make_option
++from django.conf import settings
++from django.core.management.base import BaseCommand, CommandError
++from telemeta.models import Location
++from telemeta.util.unaccent import unaccent
++import logging
++import codecs
++
++class Command(BaseCommand):
++ help = "Geocode Telemeta countries from a local Geonames data file"
++ args = "path to geoname's allCountries.txt"
++
++ def handle(self, datafile=None, *args, **options):
++
++ if not datafile:
++ raise CommandError("Please provide the %s" % self.args)
++
++ try:
++ datafile = codecs.open(datafile, 'r', 'utf-8')
++ except IOError:
++ raise CommandError("Unable to open %s" % datafile)
++
++ locations = {}
++ for l in Location.objects.all().current().filter(type=Location.COUNTRY):
++ locations[l] = [a.alias for a in l.aliases.all()]
++
++ i = 0
++ geocoded = 0
++ total = len(locations)
++ found_by_alias = {}
++ for line in datafile:
++ (geonameid, name, asciiname, alternatenames, latitude, longitude, feature_class,
++ feature_code, country_code, cc2, admin1_code, admin2_code, admin3_code,
++ admin4_code, population, elevation, gtopo30, timezone, modification_date) = line.strip().split("\t")
++
++ if feature_code[0:3] == 'PCL':
++ names = [asciiname.lower()]
++ if alternatenames:
++ names.extend([unaccent(n).lower() for n in alternatenames.split(',')])
++
++ found = []
++ for l in locations:
++ if unaccent(l.name).lower() in names:
++ l.latitude = float(latitude)
++ l.longitude = float(longitude)
++ l.save()
++ geocoded += 1
++ found.append(l)
++ else:
++ for a in locations[l]:
++ if unaccent(a).lower() in names:
++ found_by_alias[l] = float(latitude), float(longitude)
++ break
++
++
++ for l in found:
++ locations.pop(l)
++
++ i += 1
++
++ if i % 200000 == 0:
++ print "Geocoded %d (%d by alias) out of %d countries (parsed %d geonames)" % (geocoded, len(found_by_alias), total, i)
++
++ if total == geocoded:
++ break
++
++ for l in locations:
++ if found_by_alias.has_key(l):
++ l.latitude, l.longitude = found_by_alias[l]
++ l.save()
++ geocoded += 1
++
++ print "Done. Geocoded %d out of %d countries (parsed %d geonames)" % (geocoded, total, i)
++ datafile.close()
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++from telemeta.models.media import *
++from telemeta.models.location import *
++from telemeta.models.instrument import *
++from telemeta.models.enum import *
++from telemeta.models.system import *
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2007-2010 Samalyse SARL
++#
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++#
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++#
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++#
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++#
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++
++__all__ = ['ModelCore', 'MetaCore', 'DurationField', 'Duration', 'WeakForeignKey',
++ 'EnhancedModel', 'CharField', 'TextField', 'IntegerField', 'BooleanField',
++ 'DateTimeField', 'FileField', 'ForeignKey', 'FloatField', 'DateField',
++ 'RequiredFieldError', 'CoreQuerySet', 'CoreManager', 'word_search_q']
++
++from django.core import exceptions
++from django import forms
++from xml.dom.minidom import getDOMImplementation
++from django.db.models.fields import FieldDoesNotExist
++from django.db.models import Q
++from django.db import models
++import datetime
++from django.utils.translation import ugettext_lazy as _
++import re
++from django.core.exceptions import ObjectDoesNotExist
++
++class Duration(object):
++ """Represent a time duration"""
++ def __init__(self, *args, **kwargs):
++ if len(args) and isinstance(args[0], datetime.timedelta):
++ self._delta = datetime.timedelta(days=args[0].days, seconds=args[0].seconds)
++ else:
++ self._delta = datetime.timedelta(*args, **kwargs)
++
++ def __decorate(self, method, other):
++ if isinstance(other, Duration):
++ res = method(other._delta)
++ else:
++ res = method(other)
++ if type(res) == datetime.timedelta:
++ return Duration(res)
++
++ return res
++
++ def __add__(self, other):
++ return self.__decorate(self._delta.__add__, other)
++
++ def __nonzero__(self):
++ return self._delta.__nonzero__()
++
++ def __str__(self):
++ hours = self._delta.days * 24 + self._delta.seconds / 3600
++ minutes = (self._delta.seconds % 3600) / 60
++ seconds = self._delta.seconds % 60
++
++ return "%.2d:%.2d:%.2d" % (hours, minutes, seconds)
++
++ @staticmethod
++ def fromstr(str):
++ if not str:
++ return Duration()
++
++ test = re.match('^([0-9]+)(?::([0-9]+)(?::([0-9]+))?)?$', str)
++ if test:
++ groups = test.groups()
++ try:
++ hours = minutes = seconds = 0
++ if groups[0]:
++ hours = int(groups[0])
++ if groups[1]:
++ minutes = int(groups[1])
++ if groups[2]:
++ seconds = int(groups[2])
++
++ return Duration(hours=hours, minutes=minutes, seconds=seconds)
++ except TypeError:
++ print groups
++ raise
++ else:
++ raise ValueError("Malformed duration string: " + str)
++
++ def as_seconds(self):
++ return self._delta.days * 24 * 3600 + self._delta.seconds
++
++def normalize_field(args, default_value=None):
++ """Normalize field constructor arguments, so that the field is marked blank=True
++ and has a default value by default.
++
++ This behaviour can be disabled by passing the special argument required=True.
++
++ The default value can also be overriden with the default=value argument.
++ """
++ required = False
++ if args.has_key('required'):
++ required = args['required']
++ args.pop('required')
++
++ args['blank'] = not required
++
++ if not required:
++ if not args.has_key('default'):
++ if args.get('null'):
++ args['default'] = None
++ elif default_value is not None:
++ args['default'] = default_value
++
++ return args
++
++# The following is based on Django TimeField
++class DurationField(models.Field):
++ """Duration Django model field. Essentially the same as a TimeField, but
++ with values over 24h allowed.
++
++ The constructor arguments are also normalized with normalize_field().
++ """
++
++ description = _("Duration")
++
++ __metaclass__ = models.SubfieldBase
++
++ default_error_messages = {
++ 'invalid': _('Enter a valid duration in HH:MM[:ss] format.'),
++ }
++
++ def __init__(self, *args, **kwargs):
++ super(DurationField, self).__init__(*args, **normalize_field(kwargs, '00:00'))
++
++ def db_type(self):
++ return 'int'
++
++ def to_python(self, value):
++ if value is None:
++ return None
++ if isinstance(value, int) or isinstance(value, long):
++ return Duration(seconds=value)
++ if isinstance(value, datetime.time):
++ return Duration(hours=value.hour, minutes=value.minute, seconds=value.second)
++ if isinstance(value, datetime.datetime):
++ # Not usually a good idea to pass in a datetime here (it loses
++ # information), but this can be a side-effect of interacting with a
++ # database backend (e.g. Oracle), so we'll be accommodating.
++ return self.to_python(value.time())
++
++ try:
++ return Duration.fromstr(value)
++ except ValueError:
++ raise exceptions.ValidationError(self.error_messages['invalid'])
++
++ def get_prep_value(self, value):
++ return self.to_python(value)
++
++ def get_db_prep_value(self, value, connection=None, prepared=False):
++ # Casts times into the format expected by the backend
++ return value.as_seconds()
++
++ def value_to_string(self, obj):
++ val = self._get_val_from_obj(obj)
++ if val is None:
++ data = ''
++ else:
++ data = unicode(val)
++ return data
++
++ def formfield(self, **kwargs):
++ defaults = {'form_class': forms.TimeField}
++ defaults.update(kwargs)
++ return super(DurationField, self).formfield(**defaults)
++
++class ForeignKey(models.ForeignKey):
++ """The constructor arguments of this ForeignKey are normalized
++ with normalize_field(), however the field is marked required by default
++ unless it is allowed to be null."""
++
++ def __init__(self, to, **kwargs):
++ if not kwargs.has_key('required'):
++ if not kwargs.get('null'):
++ kwargs['required'] = True
++
++ super(ForeignKey, self).__init__(to, **normalize_field(kwargs, 0))
++
++class WeakForeignKey(ForeignKey):
++ """A weak foreign key is the same as foreign key but without cascading
++ delete. Instead the reference is set to null when the referenced record
++ get deleted. This emulates the ON DELETE SET NULL sql behaviour.
++
++ This field is automatically allowed to be null, there's no need to pass
++ null=True.
++
++ The constructor arguments are normalized with normalize_field() by the
++ parent ForeignKey
++
++ Warning: must be used in conjunction with EnhancedQuerySet, EnhancedManager,
++ and EnhancedModel
++ """
++ def __init__(self, to, **kwargs):
++ kwargs['null'] = True
++ super(WeakForeignKey, self).__init__(to, **kwargs)
++
++class EnhancedQuerySet(models.query.QuerySet):
++ """QuerySet with added functionalities such as WeakForeignKey handling"""
++
++ def delete(self):
++ CHUNK=1024
++ objects = self.model._meta.get_all_related_objects()
++ ii = self.count()
++ for related in objects:
++ i = 0
++ while i < ii:
++ ids = [v[0] for v in self[i:i + CHUNK].values_list('pk')]
++ filter = {related.field.name + '__pk__in': ids}
++ q = related.model.objects.filter(**filter)
++ if isinstance(related.field, WeakForeignKey):
++ update = {related.field.name: None}
++ q.update(**update)
++ else:
++ q.delete()
++
++ i += CHUNK
++
++ super(EnhancedQuerySet, self).delete()
++
++class EnhancedManager(models.Manager):
++ """Manager which is bound to EnhancedQuerySet"""
++ def get_query_set(self):
++ return EnhancedQuerySet(self.model)
++
++
++class EnhancedModel(models.Model):
++ """Base model class with added functionality. See EnhancedQuerySet"""
++
++ objects = EnhancedManager()
++
++ def delete(self):
++ if not self.pk:
++ raise Exception("Can't delete without a primary key")
++ self.__class__.objects.filter(pk=self.pk).delete()
++
++ class Meta:
++ abstract = True
++
++class CharField(models.CharField):
++ """This is a CharField with a default max_length of 250.
++
++ The arguments are also normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ if not kwargs.has_key('max_length'):
++ kwargs['max_length'] = 250
++
++ super(CharField, self).__init__(*args, **normalize_field(kwargs, ''))
++
++class IntegerField(models.IntegerField):
++ """IntegerField normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ super(IntegerField, self).__init__(*args, **normalize_field(kwargs, 0))
++
++class BooleanField(models.BooleanField):
++ """BooleanField normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ super(BooleanField, self).__init__(*args, **normalize_field(kwargs, False))
++
++class TextField(models.TextField):
++ """TextField normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ super(TextField, self).__init__(*args, **normalize_field(kwargs, ''))
++
++class DateTimeField(models.DateTimeField):
++ """DateTimeField normalized with normalize_field(). This field is allowed to
++ be null by default unless null=False is passed"""
++
++ def __init__(self, *args, **kwargs):
++ if not kwargs.has_key('null'):
++ kwargs['null'] = True
++ super(DateTimeField, self).__init__(*args, **normalize_field(kwargs))
++
++class FileField(models.FileField):
++ """FileField normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ super(FileField, self).__init__(*args, **normalize_field(kwargs, ''))
++
++class FloatField(models.FloatField):
++ """FloatField normalized with normalize_field()"""
++
++ def __init__(self, *args, **kwargs):
++ super(FloatField, self).__init__(*args, **normalize_field(kwargs, 0))
++
++class DateField(models.DateField):
++ """DateField normalized with normalize_field(). This field is allowed to
++ be null by default unless null=False is passed"""
++
++ def __init__(self, *args, **kwargs):
++ if not kwargs.has_key('null'):
++ kwargs['null'] = True
++ super(DateField, self).__init__(*args, **normalize_field(kwargs))
++
++class RequiredFieldError(Exception):
++ def __init__(self, model, field):
++ self.model = model
++ self.field = field
++ super(Exception, self).__init__('%s.%s is required' % (model._meta.object_name, field.name))
++
++class ModelCore(EnhancedModel):
++
++ @classmethod
++ def required_fields(cls):
++ required = []
++ for field in cls._meta.fields:
++ if not field.blank:
++ required.append(field)
++ return required
++
++ def save(self, force_insert=False, force_update=False):
++ required = self.required_fields()
++ for field in required:
++ if not getattr(self, field.name):
++ raise RequiredFieldError(self, field)
++ super(ModelCore, self).save(force_insert, force_update)
++
++ @classmethod
++ def get_dom_name(cls):
++ "Convert the class name to a DOM element name"
++ clsname = cls.__name__
++ return clsname[0].lower() + clsname[1:]
++
++ @staticmethod
++ def get_dom_field_name(field_name):
++ "Convert the class name to a DOM element name"
++ tokens = field_name.split('_')
++ name = tokens[0]
++ for t in tokens[1:]:
++ name += t[0].upper() + t[1:]
++ return name
++
++ def to_dom(self):
++ "Return the DOM representation of this media object"
++ impl = getDOMImplementation()
++ root = self.get_dom_name()
++ doc = impl.createDocument(None, root, None)
++ top = doc.documentElement
++ top.setAttribute("id", str(self.pk))
++ fields = self.to_dict()
++ for name, value in fields.iteritems():
++ element = doc.createElement(self.get_dom_field_name(name))
++ if isinstance(value, EnhancedModel):
++ element.setAttribute('key', str(value.pk))
++ value = unicode(value)
++ element.appendChild(doc.createTextNode(value))
++ top.appendChild(element)
++ return doc
++
++ def to_dict(self):
++ "Return model fields as a dict of name/value pairs"
++ fields_dict = {}
++ for field in self._meta.fields:
++ fields_dict[field.name] = getattr(self, field.name)
++ return fields_dict
++
++ def to_list(self):
++ "Return model fields as a list"
++ fields_list = []
++ for field in self._meta.fields:
++ fields_list.append({'name': field.name, 'value': getattr(self, field.name)})
++ return fields_list
++
++ @classmethod
++ def field_label(cls, field_name=None):
++ if field_name:
++ try:
++ return cls._meta.get_field(field_name).verbose_name
++ except FieldDoesNotExist:
++ try:
++ return getattr(cls, field_name).verbose_name
++ except AttributeError:
++ return field_name
++ else:
++ return cls._meta.verbose_name
++
++ class Meta:
++ abstract = True
++
++class MetaCore:
++ app_label = 'telemeta'
++
++def word_search_q(field, pattern):
++ words = re.split("[ .*-]+", pattern)
++ q = Q()
++ for w in words:
++ if len(w) >= 3:
++ kwargs = {field + '__icontains': w}
++ q &= Q(**kwargs)
++
++ return q
++
++class CoreQuerySet(EnhancedQuerySet):
++ "Base class for all query sets"
++
++ def none(self): # redundant with none() in recent Django svn
++ "Return an empty result set"
++ return self.extra(where = ["0 = 1"])
++
++ def word_search(self, field, pattern):
++ return self.filter(word_search_q(field, pattern))
++
++ def _by_change_time(self, type, from_time = None, until_time = None):
++ "Search between two revision dates"
++ table = self.model._meta.db_table
++ where = []
++ if from_time:
++ where.append("revisions.time >= '%s'" % from_time.strftime('%Y-%m-%d %H:%M:%S'))
++ if until_time:
++ where.append("revisions.time <= '%s'" % until_time.strftime('%Y-%m-%d %H:%M:%S'))
++
++ qs = self
++ if where:
++ where.extend(["revisions.element_type = '%s'" % type, "revisions.element_id = %s.id" % table])
++ qs = qs.extra(where = [" AND ".join(where)],
++ tables = ['revisions']).distinct()
++ return qs
++
++class CoreManager(EnhancedManager):
++ "Base class for all models managers"
++
++ def none(self, *args, **kwargs):
++ ""
++ return self.get_query_set().none(*args, **kwargs)
++
++ def get(self, **kwargs):
++ if kwargs.has_key('public_id'):
++ try:
++ args = kwargs.copy()
++ args['code'] = kwargs['public_id']
++ args.pop('public_id')
++ return super(CoreManager, self).get(**args)
++ except ObjectDoesNotExist:
++ args = kwargs.copy()
++ args['id'] = kwargs['public_id']
++ args.pop('public_id')
++ return super(CoreManager, self).get(**args)
++
++ return super(CoreManager, self).get(**kwargs)
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++from telemeta.models.core import Duration
++from telemeta.models.media import MediaItem, MediaCollection
++from django.conf import settings
++
++class Resource(object):
++ "Represent a Dublin Core resource"
++
++ def __init__(self, *args):
++ self.elements = []
++ self.add(*args)
++
++ def flatten(self):
++ """Convert the resource to a dictionary with element names as keys.
++
++ Warnings:
++ - refinements are lost during this conversion,
++ - if there are several occurences of the same element, only the first is
++ used, others are lost.
++ - all values are converted to strings
++ """
++ result = {}
++ for element in self.elements:
++ if not result.has_key(element.name):
++ result[element.name] = unicode(element.value)
++ return result
++
++ def to_list(self):
++ """Convert the resource to unqualified dublin core, as a list of the form:
++ [(key, value), ...]"""
++ result = []
++ for element in self.elements:
++ result.append((element.name, unicode(element.value)))
++ return result
++
++ def add(self, *elements):
++ for e in elements:
++ if isinstance(e, Element):
++ if not e in self.elements:
++ self.elements.append(e)
++ else:
++ try:
++ iter(e)
++ except TypeError:
++ raise Exception("add() only accepts elements or sequences of elements")
++
++ self.add(*e)
++
++ def __unicode__(self):
++ dump = u''
++ for e in self.elements:
++ key = unicode(e.name)
++ if e.refinement:
++ key += u'.' + unicode(e.refinement)
++ dump += u'%s:\t%s\n' % (key, unicode(e.value))
++ return dump
++
++
++class Element(object):
++ "Represent a Dublin Core element"
++
++ def __init__(self, name, value=None, refinement=None, related=None):
++ self.name = name
++ self.value = value
++ self.refinement = refinement
++ self.related = related
++
++ def __eq__(self, other):
++ return self.name == other.name and self.value == other.value and self.refinement == self.refinement
++
++ def __ne__(self, other):
++ return not (self == other)
++
++ @staticmethod
++ def multiple(name, values, refinement=None):
++ elements = []
++ if values:
++ for v in values:
++ elements.append(Element(name, v, refinement))
++ return elements
++
++class Date(Element):
++ "Dublin Core date element formatted according to W3C-DTF or DCMI Period"
++
++ def __init__(self, start, end=None, refinement=None):
++ value = ''
++ if start:
++ value = str(start)
++ if end and start != end:
++ value = 'start=' + value + '; end=' + unicode(end) + ';'
++ super(Date, self).__init__('date', value, refinement)
++
++def media_access_rights(media):
++ if media.public_access == 'full':
++ return 'public'
++ if media.public_access == 'metadata':
++ return 'restricted'
++ return 'private'
++
++def media_identifier(media):
++ if media.code:
++ return media.element_type + ':' + media.code
++ elif media.old_code:
++ return media.element_type + ':' + media.old_code
++ return None
++
++def express_collection(collection):
++ "Express a collection as a Dublin Core resource"
++
++ if collection.collector:
++ creator = (Element('creator', collection.collector),
++ Element('contributor', collection.creator))
++ else:
++ creator = Element('creator', collection.creator)
++
++ duration = max(collection.approx_duration, collection.computed_duration())
++ parts = []
++ for item in collection.items.all():
++ id = media_identifier(item)
++ if id:
++ parts.append(Element('relation', id, 'hasPart', item))
++
++ resource = Resource(
++ Element('identifier', media_identifier(collection), related=collection),
++ Element('type', 'Collection'),
++ Element('title', collection.title),
++ Element('title', collection.alt_title),
++ creator,
++ Element('contributor', collection.metadata_author),
++ Element.multiple('subject', settings.TELEMETA_SUBJECTS),
++ Element('publisher', collection.publisher),
++ Element('publisher', settings.TELEMETA_ORGANIZATION),
++ Date(collection.recorded_from_year, collection.recorded_to_year, 'created'),
++ Date(collection.year_published, refinement='issued'),
++ Element('rights', collection.legal_rights, 'license'),
++ Element('rights', media_access_rights(collection), 'accessRights'),
++ Element('format', duration, 'extent'),
++ Element('format', collection.physical_format, 'medium'),
++ #FIXME: audio mime types are missing,
++ parts
++ )
++
++ return resource
++
++def express_item(item):
++ "Express a media item as a Dublin Core resource"
++
++ if item.collector:
++ creator = (Element('creator', item.collector),
++ Element('contributor', item.collection.creator))
++ elif item.collection.collector:
++ creator = (Element('creator', item.collection.collector),
++ Element('contributor', item.collection.creator))
++ else:
++ creator = Element('creator', item.collection.creator)
++
++ if item.recorded_from_date:
++ date = Date(item.recorded_from_date, item.recorded_to_date, 'created')
++ else:
++ date = Date(item.collection.recorded_from_year, item.collection.recorded_to_year, 'created'),
++
++ if item.title:
++ title = item.title
++ else:
++ title = item.collection.title
++ if item.track:
++ title += u' - ' + item.track
++
++ resource = Resource(
++ Element('identifier', media_identifier(item), related=item),
++ Element('type', 'Sound'),
++ Element('title', title),
++ Element('title', item.alt_title),
++ creator,
++ Element('contributor', item.collection.metadata_author),
++ Element.multiple('subject', settings.TELEMETA_SUBJECTS),
++ Element.multiple('subject', item.keywords()),
++ Element('description', item.context_comment, 'abstract'),
++ Element('publisher', item.collection.publisher),
++ Element('publisher', settings.TELEMETA_ORGANIZATION),
++ date,
++ Date(item.collection.year_published, refinement='issued'),
++ Element.multiple('coverage', item.location and item.location.fullnames(), 'spatial'),
++ Element('coverage', item.location_comment, 'spatial'),
++ Element('rights', item.collection.legal_rights, 'license'),
++ Element('rights', media_access_rights(item.collection), 'accessRights'),
++
++ Element('format', max(item.approx_duration, item.computed_duration()), 'extent'),
++ Element('format', item.collection.physical_format, 'medium'),
++ #FIXME: audio mime types are missing,
++ Element('relation', media_identifier(item.collection), 'isPartOf', item.collection)
++ )
++
++ return resource
++
++def express_resource(res):
++ if isinstance(res, MediaItem):
++ return express_item(res)
++ elif isinstance(res, MediaCollection):
++ return express_collection(res)
++
++ raise Exception("Invalid resource type")
++
++def lookup_resource(media_id):
++ try:
++ type, code = media_id.split(':', 1)
++ except ValueError:
++ raise MalformedMediaIdentifier("Media identifier must be in type:code format")
++
++ if (type == 'collection'):
++ try:
++ return MediaCollection.objects.get(code=code)
++ except MediaCollection.DoesNotExist:
++ return None
++ elif (type == 'item'):
++ try:
++ return MediaItem.objects.get(code=code)
++ except MediaItem.DoesNotExist:
++ try:
++ return MediaItem.objects.get(old_code=code)
++ except MediaItem.DoesNotExist:
++ return None
++ else:
++ raise MalformedMediaIdentifier("No such type in media identifier: " + type)
++
++class MalformedMediaIdentifier(Exception):
++ pass
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from telemeta.models.core import *
++from django.utils.translation import ugettext_lazy as _
++
++class Enumeration(ModelCore):
++ "Abstract enumerations base class"
++ value = CharField(_('value'), required=True, unique=True)
++
++ def __unicode__(self):
++ return self.value
++
++ class Meta(MetaCore):
++ abstract = True
++
++class MetaEnumeration(MetaCore):
++ ordering = ['value']
++
++class PhysicalFormat(Enumeration):
++ "Collection physical format"
++
++ class Meta(MetaEnumeration):
++ db_table = 'physical_formats'
++ verbose_name = _("archive format")
++
++class PublishingStatus(Enumeration):
++ "Collection publishing status"
++
++ class Meta(MetaEnumeration):
++ db_table = 'publishing_status'
++ verbose_name = _("secondary edition")
++
++class AcquisitionMode(Enumeration):
++ "Mode of acquisition of the collection"
++
++ class Meta(MetaEnumeration):
++ db_table = 'acquisition_modes'
++ verbose_name = _("mode of acquisition")
++
++class MetadataAuthor(Enumeration):
++ "Collection metadata author"
++
++ class Meta(MetaEnumeration):
++ db_table = 'metadata_authors'
++ verbose_name = _("record author")
++
++class MetadataWriter(Enumeration):
++ "Collection metadata writer"
++
++ class Meta(MetaEnumeration):
++ db_table = 'metadata_writers'
++ verbose_name = _("record writer")
++
++class LegalRight(Enumeration):
++ "Collection legal rights"
++
++ class Meta(MetaEnumeration):
++ db_table = 'legal_rights'
++ verbose_name = _("legal rights")
++
++class RecordingContext(Enumeration):
++ "Collection recording context"
++
++ class Meta(MetaEnumeration):
++ db_table = 'recording_contexts'
++ verbose_name = _("recording context")
++
++class AdConversion(Enumeration):
++ "Collection digital to analog conversion status"
++
++ class Meta(MetaEnumeration):
++ db_table = 'ad_conversions'
++ verbose_name = _("A/D conversion")
++
++class VernacularStyle(Enumeration):
++ "Item vernacular style"
++
++ class Meta(MetaEnumeration):
++ db_table = 'vernacular_styles'
++ verbose_name = _("vernacular style")
++
++class GenericStyle(Enumeration):
++ "Item generic style"
++
++ class Meta(MetaEnumeration):
++ db_table = 'generic_styles'
++ verbose_name = _("generic style")
++
++class ContextKeyword(Enumeration):
++ "Keyword"
++
++ class Meta(MetaEnumeration):
++ db_table = 'context_keywords'
++ verbose_name = _("keyword")
++
++class Publisher(Enumeration):
++ "Collection publisher"
++
++ class Meta(MetaEnumeration):
++ db_table = 'publishers'
++ verbose_name = _("publisher / status")
++
++class PublisherCollection(ModelCore):
++ "Collection which belongs to publisher"
++ publisher = ForeignKey('Publisher', related_name="publisher_collections", verbose_name=_('publisher'))
++ value = CharField(_('value'), required=True)
++
++ def __unicode__(self):
++ return self.value
++
++ class Meta(MetaCore):
++ db_table = 'publisher_collections'
++
++class EthnicGroup(Enumeration):
++ "Item ethnic group"
++
++ class Meta(MetaEnumeration):
++ db_table = 'ethnic_groups'
++ verbose_name = _('population / social group')
++
++class EthnicGroupAlias(ModelCore):
++ "Item ethnic group other name"
++ ethnic_group = ForeignKey('EthnicGroup', related_name="aliases", verbose_name=_('population / social group'))
++ value = CharField(_('name'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'ethnic_group_aliases'
++ unique_together = (('ethnic_group', 'value'),)
++
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from telemeta.models.core import *
++from django.utils.translation import ugettext_lazy as _
++
++class Instrument(ModelCore):
++ "Instrument used in the item"
++ name = CharField(_('name'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'instruments'
++
++ def __unicode__(self):
++ return self.name
++
++class InstrumentAlias(ModelCore):
++ "Instrument other name"
++ name = CharField(_('name'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'instrument_aliases'
++
++ def __unicode__(self):
++ return self.name
++
++class InstrumentRelation(ModelCore):
++ "Instrument family"
++ instrument = ForeignKey('Instrument', related_name="parent_relation",
++ verbose_name=_('instrument'))
++ parent_instrument = ForeignKey('Instrument', related_name="child_relation",
++ verbose_name=_('parent instrument'))
++
++ class Meta(MetaCore):
++ db_table = 'instrument_relations'
++ unique_together = (('instrument', 'parent_instrument'),)
++
++class InstrumentAliasRelation(ModelCore):
++ "Instrument family other name"
++ alias = ForeignKey('InstrumentAlias', related_name="other_name",
++ verbose_name=_('alias'))
++ instrument = ForeignKey('InstrumentAlias', related_name="relation",
++ verbose_name=_('instrument'))
++
++ class Meta(MetaCore):
++ db_table = 'instrument_alias_relations'
++ unique_together = (('alias', 'instrument'),)
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from telemeta.models.core import *
++from telemeta.util.unaccent import unaccent
++import re
++from django.db.models import Q
++from django.utils.translation import ugettext_lazy as _
++from telemeta.models import query
++
++class Location(ModelCore):
++ "Locations"
++ OTHER_TYPE = 0
++ CONTINENT = 1
++ COUNTRY = 2
++ TYPE_CHOICES = ((COUNTRY, _('country')), (CONTINENT, _('continent')), (OTHER_TYPE, _('other')))
++
++ name = CharField(_('name'), unique=True, max_length=150, required=True)
++ type = IntegerField(_('type'), choices=TYPE_CHOICES, default=OTHER_TYPE, db_index=True)
++ complete_type = ForeignKey('LocationType', related_name="locations", verbose_name=_('complete type'))
++ current_location = WeakForeignKey('self', related_name="past_names",
++ verbose_name=_('current location'))
++ latitude = FloatField(null=True)
++ longitude = FloatField(null=True)
++ is_authoritative = BooleanField(_('authoritative'))
++
++ objects = query.LocationManager()
++
++ def items(self):
++ from telemeta.models import MediaItem
++ return MediaItem.objects.by_location(self)
++
++ def collections(self):
++ from telemeta.models import MediaCollection
++ return MediaCollection.objects.by_location(self)
++
++ def ancestors(self, direct=False):
++ q = Q(descendant_relations__location=self)
++ if direct:
++ q &= Q(descendant_relations__is_direct=True)
++ return Location.objects.filter(q)
++
++ def descendants(self, direct=False):
++ q = Q(ancestor_relations__ancestor_location=self)
++ if direct:
++ q &= Q(ancestor_relations__is_direct=True)
++ return Location.objects.filter(q)
++
++ def apparented(self):
++ return Location.objects.filter(
++ Q(pk=self.id) |
++ Q(ancestor_relations__ancestor_location=self) |
++ Q(current_location=self.id)).distinct()
++
++ def add_child(self, other):
++ LocationRelation.objects.create(location=other, ancestor_location=self, is_direct=True)
++ for location in self.ancestors():
++ #FIXME: might raise Duplicate Entry
++ LocationRelation.objects.create(location=other, ancestor_location=location)
++
++ def add_parent(self, other):
++ LocationRelation.objects.create(location=self, ancestor_location=other, is_direct=True)
++ for location in self.descendants():
++ #FIXME: might raise Duplicate Entry
++ LocationRelation.objects.create(location=location, ancestor_location=other)
++
++ def countries(self):
++ if self.type == self.COUNTRY:
++ return Location.objects.filter(pk=self.id)
++ return self.ancestors().filter(type=self.COUNTRY)
++
++ def continents(self):
++ if self.type == self.CONTINENT:
++ return Location.objects.filter(pk=self.id)
++ return self.ancestors().filter(type=self.CONTINENT)
++
++ class Meta(MetaCore):
++ db_table = 'locations'
++ verbose_name = _('location')
++
++ def __unicode__(self):
++ return self.name
++
++ def flatname(self):
++ if self.type != self.COUNTRY and self.type != self.CONTINENT:
++ raise Exception("Flat names are only supported for countries and continents")
++
++ map = Location.objects.flatname_map()
++ for flatname in map:
++ if self.id == map[flatname]:
++ return flatname
++
++ return None
++
++ def paths(self):
++ #FIXME: need to handle multiple (polyhierarchical) paths
++ path = []
++ location = self
++ while location:
++ path.append(location)
++ try:
++ location = location.ancestors(direct=True)[0]
++ except IndexError:
++ location = None
++ return [path]
++
++ def fullnames(self):
++ names = []
++ for path in self.paths():
++ names.append(u', '.join([unicode(l) for l in path]))
++ return names
++
++class LocationType(ModelCore):
++ "Location types"
++ code = CharField(_('identifier'), max_length=64, unique=True, required=True)
++ name = CharField(_('name'), max_length=150, required=True)
++
++ class Meta(MetaCore):
++ db_table = 'location_types'
++
++class LocationAlias(ModelCore):
++ "Location aliases"
++ location = ForeignKey('Location', related_name="aliases", verbose_name=_('location'))
++ alias = CharField(_('alias'), max_length=150, required=True)
++ is_authoritative = BooleanField(_('authoritative'))
++
++ def __unicode__(self):
++ return self.alias
++
++ class Meta(MetaCore):
++ db_table = 'location_aliases'
++ unique_together = (('location', 'alias'),)
++
++class LocationRelation(ModelCore):
++ "Location relations"
++ location = ForeignKey('Location', related_name="ancestor_relations", verbose_name=_('location'))
++ ancestor_location = ForeignKey('Location', related_name="descendant_relations", verbose_name=_('ancestor location'))
++ is_direct = BooleanField(db_index=True)
++ is_authoritative = BooleanField(_('authoritative'))
++
++ class Meta(MetaCore):
++ db_table = 'location_relations'
++ unique_together = ('location', 'ancestor_location')
++
++ def __unicode__(self):
++ sep = ' > '
++ if not self.is_direct:
++ sep = ' >..> '
++ return unicode(self.ancestor_location) + sep + unicode(self.location)
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from django.utils.translation import ugettext_lazy as _
++from telemeta.models.core import *
++from telemeta.models.enum import ContextKeyword
++from telemeta.util.unaccent import unaccent_icmp
++import re
++from telemeta.models.location import LocationRelation, Location
++from telemeta.models.system import Revision
++from telemeta.models import query
++
++class MediaResource(ModelCore):
++ "Base class of all media objects"
++
++ def public_access_label(self):
++ if self.public_access == 'metadata':
++ return _('Metadata only')
++ elif self.public_access == 'full':
++ return _('Sound and metadata')
++
++ return _('Private data')
++ public_access_label.verbose_name = _('public access')
++
++ def save_with_revision(self, user, force_insert=False, force_update=False):
++ "Save a media object and add a revision"
++ self.save(force_insert, force_update)
++ Revision.touch(self, user)
++
++ def get_revision(self):
++ return Revision.objects.filter(element_type=self.element_type, element_id=self.id).order_by('-time')[0]
++
++ class Meta:
++ abstract = True
++
++class MediaCollection(MediaResource):
++ "Describe a collection of items"
++ element_type = 'collection'
++ PUBLIC_ACCESS_CHOICES = (('none', 'none'), ('metadata', 'metadata'), ('full', 'full'))
++
++ published_code_regex = 'CNRSMH_E_[0-9]{4}(?:_[0-9]{3}){2}'
++ unpublished_code_regex = 'CNRSMH_I_[0-9]{4}_[0-9]{3}'
++ code_regex = '(?:%s|%s)' % (published_code_regex, unpublished_code_regex)
++
++ reference = CharField(_('reference'), unique=True, null=True)
++ physical_format = WeakForeignKey('PhysicalFormat', related_name="collections",
++ verbose_name=_('archive format'))
++ old_code = CharField(_('old code'), unique=True, null=True)
++ code = CharField(_('code'), unique=True, required=True)
++ title = CharField(_('title'), required=True)
++ alt_title = CharField(_('original title / translation'))
++ physical_items_num = IntegerField(_('number of components (medium / piece)'))
++ publishing_status = WeakForeignKey('PublishingStatus', related_name="collections",
++ verbose_name=_('secondary edition'))
++ creator = CharField(_('depositor / contributor'))
++ booklet_author = CharField(_('author of published notice'))
++ booklet_description = TextField(_('related documentation'))
++ collector = CharField(_('recordist'))
++ collector_is_creator = BooleanField(_('recordist identical to depositor'))
++ publisher = WeakForeignKey('Publisher', related_name="collections",
++ verbose_name=_('publisher / status'))
++ is_published = BooleanField(_('published'))
++ year_published = IntegerField(_('year published'))
++ publisher_collection = WeakForeignKey('PublisherCollection', related_name="collections",
++ verbose_name=_('publisher collection'))
++ publisher_serial = CharField(_('publisher serial number'))
++ external_references = TextField(_('bibliographic references'))
++ acquisition_mode = WeakForeignKey('AcquisitionMode', related_name="collections",
++ verbose_name=_('mode of acquisition'))
++ comment = TextField(_('comment'))
++ metadata_author = WeakForeignKey('MetadataAuthor', related_name="collections",
++ verbose_name=_('record author'))
++ metadata_writer = WeakForeignKey('MetadataWriter', related_name="collections",
++ verbose_name=_('record writer'))
++ legal_rights = WeakForeignKey('LegalRight', related_name="collections",
++ verbose_name=_('legal rights'))
++ alt_ids = CharField(_('copies'))
++ recorded_from_year = IntegerField(_('recording year (from)'))
++ recorded_to_year = IntegerField(_('recording year (until)'))
++ recording_context = WeakForeignKey('RecordingContext', related_name="collections",
++ verbose_name=_('recording context'))
++ approx_duration = DurationField(_('approximative duration'))
++ doctype_code = IntegerField(_('document type'))
++ travail = CharField(_('archiver notes'))
++ state = TextField(_('status'))
++ cnrs_contributor = CharField(_('CNRS depositor'))
++ items_done = CharField(_('items finished'))
++ a_informer_07_03 = CharField(_('a_informer_07_03'))
++ ad_conversion = WeakForeignKey('AdConversion', related_name='collections',
++ verbose_name=_('digitization'))
++ public_access = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES,
++ max_length=16, default="metadata")
++
++ objects = query.MediaCollectionManager()
++
++ def __unicode__(self):
++ if self.title:
++ return self.title
++
++ return self.code
++
++ @property
++ def public_id(self):
++ return self.code
++
++ def has_mediafile(self):
++ "Tell wether this collection has any media files attached to its items"
++ items = self.items.all()
++ for item in items:
++ if item.file:
++ return True
++ return False
++
++ def __name_cmp(self, obj1, obj2):
++ return unaccent_icmp(obj1.name, obj2.name)
++
++ def countries(self):
++ "Return the countries of the items"
++ countries = []
++ for item in self.items.filter(location__isnull=False):
++ for country in item.location.countries():
++ if not country in countries:
++ countries.append(country)
++
++ countries.sort(self.__name_cmp)
++
++ return countries
++ countries.verbose_name = _("states / nations")
++
++ def ethnic_groups(self):
++ "Return the ethnic groups of the items"
++ groups = []
++ items = self.items.all()
++ for item in items:
++ if item.ethnic_group and not item.ethnic_group in groups:
++ groups.append(item.ethnic_group)
++
++ cmp = lambda a, b: unaccent_icmp(a.value, b.value)
++ groups.sort(cmp)
++
++ return groups
++ ethnic_groups.verbose_name = _('populations / social groups')
++
++ def computed_duration(self):
++ duration = Duration()
++ for item in self.items.all():
++ duration += item.computed_duration()
++
++ return duration
++ computed_duration.verbose_name = _('computed duration')
++
++ def is_valid_code(self, code):
++ "Check if the collection code is well formed"
++ if self.is_published:
++ regex = '^' + self.published_code_regex + '$'
++ else:
++ regex = '^' + self.unpublished_code_regex + '$'
++
++ if re.match(regex, code):
++ return True
++
++ return False
++
++ def save(self, force_insert=False, force_update=False):
++ if not self.code:
++ raise RequiredFieldError(self, self._meta.get_field('code'))
++ if not self.is_valid_code(self.code):
++ raise MediaInvalidCodeError("%s is not a valid code for this collection" % self.code)
++ super(MediaCollection, self).save(force_insert, force_update)
++
++ class Meta(MetaCore):
++ db_table = 'media_collections'
++
++class MediaItem(MediaResource):
++ "Describe an item"
++ element_type = 'item'
++ PUBLIC_ACCESS_CHOICES = (('none', 'none'), ('metadata', 'metadata'), ('full', 'full'))
++
++ published_code_regex = MediaCollection.published_code_regex + '(?:_[0-9]{2}){1,2}'
++ unpublished_code_regex = MediaCollection.unpublished_code_regex + '_[0-9]{2,3}(?:_[0-9]{2}){0,2}'
++ code_regex = '(?:%s|%s)' % (published_code_regex, unpublished_code_regex)
++
++ collection = ForeignKey('MediaCollection', related_name="items",
++ verbose_name=_('collection'))
++ track = CharField(_('item number'))
++ old_code = CharField(_('old code'), unique=True, null=True)
++ code = CharField(_('code'), unique=True, null=True)
++ approx_duration = DurationField(_('approximative duration'))
++ recorded_from_date = DateField(_('recording date (from)'))
++ recorded_to_date = DateField(_('recording date (until)'))
++ location = WeakForeignKey('Location', verbose_name=_('location'))
++ location_comment = CharField(_('location details'))
++ ethnic_group = WeakForeignKey('EthnicGroup', related_name="items",
++ verbose_name=_('population / social group'))
++ title = CharField(_('title'))
++ alt_title = CharField(_('original title / translation'))
++ author = CharField(_('author / compositor'))
++ vernacular_style = WeakForeignKey('VernacularStyle', related_name="items",
++ verbose_name=_('vernacular style'))
++ context_comment = TextField(_('comments'))
++ external_references = TextField(_('published reference'))
++ moda_execut = CharField(_('moda_execut'))
++ copied_from_item = WeakForeignKey('self', related_name="copies", verbose_name=_('copy of'))
++ collector = CharField(_('recordist'))
++ collector_from_collection = BooleanField(_('recordist as in collection'))
++ cultural_area = CharField(_('cultural area'))
++ generic_style = WeakForeignKey('GenericStyle', related_name="items",
++ verbose_name=_('generic style'))
++ collector_selection = CharField(_('recordist selection'))
++ creator_reference = CharField(_('reference'))
++ comment = TextField(_('remarks'))
++ file = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename")
++ public_access = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, max_length=16, default="metadata")
++
++ objects = query.MediaItemManager()
++
++ def keywords(self):
++ return ContextKeyword.objects.filter(item_relations__item = self)
++ keywords.verbose_name = _('keywords')
++
++ @property
++ def public_id(self):
++ if self.code:
++ return self.code
++ return self.id
++
++ class Meta(MetaCore):
++ db_table = 'media_items'
++
++ def is_valid_code(self, code):
++ "Check if the item code is well formed"
++ if not re.match('^' + self.collection.code, self.code):
++ return False
++
++ if self.collection.is_published:
++ regex = '^' + self.published_code_regex + '$'
++ else:
++ regex = '^' + self.unpublished_code_regex + '$'
++
++ if re.match(regex, code):
++ return True
++
++ return False
++
++ def save(self, force_insert=False, force_update=False):
++ if self.code and not self.is_valid_code(self.code):
++ raise MediaInvalidCodeError("%s is not a valid item code for collection %s"
++ % (self.code, self.collection.code))
++ super(MediaItem, self).save(force_insert, force_update)
++
++ def computed_duration(self):
++ "Tell the length in seconds of this item media data"
++ return self.approx_duration
++
++ computed_duration.verbose_name = _('computed duration')
++
++ def __unicode__(self):
++ if self.title and not re.match('^ *N *$', self.title):
++ title = self.title
++ else:
++ title = unicode(self.collection)
++
++ if self.track:
++ title += ' ' + self.track
++
++ return title
++
++class MediaItemKeyword(ModelCore):
++ "Item keyword"
++ item = ForeignKey('MediaItem', verbose_name=_('item'), related_name="keyword_relations")
++ keyword = ForeignKey('ContextKeyword', verbose_name=_('keyword'), related_name="item_relations")
++
++ class Meta(MetaCore):
++ db_table = 'media_item_keywords'
++ unique_together = (('item', 'keyword'),)
++
++class MediaItemPerformance(ModelCore):
++ "Item performance"
++ media_item = ForeignKey('MediaItem', related_name="performances",
++ verbose_name=_('item'))
++ instrument = WeakForeignKey('Instrument', related_name="performances",
++ verbose_name=_('composition'))
++ alias = WeakForeignKey('InstrumentAlias', related_name="performances",
++ verbose_name=_('vernacular name'))
++ instruments_num = CharField(_('number'))
++ musicians = CharField(_('interprets'))
++
++ class Meta(MetaCore):
++ db_table = 'media_item_performances'
++
++class MediaPart(MediaResource):
++ "Describe an item part"
++ element_type = 'part'
++ item = ForeignKey('MediaItem', related_name="parts", verbose_name=_('item'))
++ title = CharField(_('title'), required=True)
++ start = FloatField(_('start'), required=True)
++ end = FloatField(_('end'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'media_parts'
++
++ def __unicode__(self):
++ return self.title
++
++class Playlist(ModelCore):
++ "Item or collection playlist"
++ owner_username = ForeignKey('User', related_name="playlists", db_column="owner_username")
++ name = CharField(_('name'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'playlists'
++
++ def __unicode__(self):
++ return self.name
++
++class PlaylistResource(ModelCore):
++ "Playlist components"
++ RESOURCE_TYPE_CHOICES = (('item', 'item'), ('collection', 'collection'))
++
++ playlist = ForeignKey('Playlist', related_name="resources", verbose_name=_('playlist'))
++ resource_type = CharField(_('resource type'), choices=RESOURCE_TYPE_CHOICES, required=True)
++ resource = IntegerField(_('resource'), required=True)
++
++ class Meta(MetaCore):
++ db_table = 'playlist_resources'
++
++class MediaInvalidCodeError(Exception):
++ pass
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++#
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++#
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++#
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++#
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++#
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from django.db.models import Q, Max, Min
++from telemeta.models.core import *
++from telemeta.util.unaccent import unaccent, unaccent_icmp
++from telemeta.models.enum import EthnicGroup
++import re
++
++class MediaItemQuerySet(CoreQuerySet):
++ "Base class for all media item query sets"
++
++ def quick_search(self, pattern):
++ "Perform a quick search on code, title and collector name"
++ pattern = pattern.strip()
++ return self.filter(
++ Q(code__contains=pattern.strip()) |
++ Q(old_code__contains=pattern.strip()) |
++ word_search_q('title', pattern) |
++ self.by_fuzzy_collector_q(pattern)
++ )
++
++ def without_collection(self):
++ "Find items which do not belong to any collection"
++ return self.extra(
++ where = ["collection_id NOT IN (SELECT id FROM media_collections)"]);
++
++ def by_recording_date(self, from_date, to_date = None):
++ "Find items by recording date"
++ if to_date is None:
++ return (self.filter(recorded_from_date__lte=from_date, recorded_to_date__gte=from_date))
++ else :
++ return (self.filter(Q(recorded_from_date__range=(from_date, to_date))
++ | Q(recorded_to_date__range=(from_date, to_date))))
++
++ def by_title(self, pattern):
++ "Find items by title"
++ # to (sort of) sync with models.media.MediaItem.get_title()
++ return self.filter(word_search_q("title", pattern) |
++ (Q(title="") & word_search_q("collection__title", pattern)))
++
++ def by_publish_year(self, from_year, to_year = None):
++ "Find items by publishing year"
++ if to_year is None:
++ to_year = from_year
++ return self.filter(collection__year_published__range=(from_year, to_year))
++
++ def by_change_time(self, from_time = None, until_time = None):
++ "Find items by last change time"
++ return self._by_change_time('item', from_time, until_time)
++
++ def by_location(self, location):
++ "Find items by location"
++ return self.filter(location__in=location.apparented())
++
++ @staticmethod
++ def __name_cmp(obj1, obj2):
++ return unaccent_icmp(obj1.name, obj2.name)
++
++ def locations(self):
++ from telemeta.models import Location, LocationRelation
++ l = self.values('location')
++ c = self.values('location__current_location')
++ r = LocationRelation.objects.filter(location__in=l).values('ancestor_location')
++ return Location.objects.filter(Q(pk__in=l) | Q(pk__in=r) | Q(pk__in=c))
++
++ def countries(self, group_by_continent=False):
++ countries = []
++ from telemeta.models import Location
++ for id in self.filter(location__isnull=False).values_list('location', flat=True).distinct():
++ location = Location.objects.get(pk=id)
++ for l in location.countries():
++ c = l.current_location
++ if not c in countries:
++ countries.append(c)
++
++ if group_by_continent:
++ grouped = {}
++
++ for country in countries:
++ for continent in country.continents():
++ if not grouped.has_key(continent):
++ grouped[continent] = []
++
++ grouped[continent].append(country)
++
++ keys = grouped.keys()
++ keys.sort(self.__name_cmp)
++ ordered = []
++ for c in keys:
++ grouped[c].sort(self.__name_cmp)
++ ordered.append({'continent': c, 'countries': grouped[c]})
++
++ countries = ordered
++ else:
++ countries.sort(self.__name_cmp)
++
++ return countries
++
++ def virtual(self, *args):
++ qs = self
++ need_collection = False
++ related = []
++ from telemeta.models import Location
++ for f in args:
++ if f == 'apparent_collector':
++ related.append('collection')
++ qs = qs.extra(select={f:
++ 'IF(collector_from_collection, '
++ 'IF(media_collections.collector_is_creator, '
++ 'media_collections.creator, '
++ 'media_collections.collector),'
++ 'media_items.collector)'})
++ elif f == 'country_or_continent':
++ related.append('location')
++ qs = qs.extra(select={f:
++ 'IF(locations.type = ' + str(Location.COUNTRY) + ' '
++ 'OR locations.type = ' + str(Location.CONTINENT) + ','
++ 'locations.name, '
++ '(SELECT l2.name FROM location_relations AS r INNER JOIN locations AS l2 '
++ 'ON r.ancestor_location_id = l2.id '
++ 'WHERE r.location_id = media_items.location_id AND l2.type = ' + str(Location.COUNTRY) + ' LIMIT 1))'
++ })
++ else:
++ raise Exception("Unsupported virtual field: %s" % f)
++
++ if related:
++ qs = qs.select_related(*related)
++
++ return qs
++
++ def ethnic_groups(self):
++ ids = self.filter(ethnic_group__isnull=False).values('ethnic_group');
++ return EthnicGroup.objects.filter(pk__in=ids)
++
++ @staticmethod
++ def by_fuzzy_collector_q(pattern):
++ return (word_search_q('collection__creator', pattern) |
++ word_search_q('collection__collector', pattern) |
++ word_search_q('collector', pattern))
++
++ def by_fuzzy_collector(self, pattern):
++ return self.filter(self.by_fuzzy_collector_q(pattern))
++
++class MediaItemManager(CoreManager):
++ "Manage media items queries"
++
++ def get_query_set(self):
++ "Return media query sets"
++ return MediaItemQuerySet(self.model)
++
++ def enriched(self):
++ "Query set with additional virtual fields such as apparent_collector and country_or_continent"
++ return self.get_query_set().virtual('apparent_collector', 'country_or_continent')
++
++ def quick_search(self, *args, **kwargs):
++ return self.get_query_set().quick_search(*args, **kwargs)
++ quick_search.__doc__ = MediaItemQuerySet.quick_search.__doc__
++
++ def without_collection(self, *args, **kwargs):
++ return self.get_query_set().without_collection(*args, **kwargs)
++ without_collection.__doc__ = MediaItemQuerySet.without_collection.__doc__
++
++ def by_recording_date(self, *args, **kwargs):
++ return self.get_query_set().by_recording_date(*args, **kwargs)
++ by_recording_date.__doc__ = MediaItemQuerySet.by_recording_date.__doc__
++
++ def by_title(self, *args, **kwargs):
++ return self.get_query_set().by_title(*args, **kwargs)
++ by_title.__doc__ = MediaItemQuerySet.by_title.__doc__
++
++ def by_publish_year(self, *args, **kwargs):
++ return self.get_query_set().by_publish_year(*args, **kwargs)
++ by_publish_year.__doc__ = MediaItemQuerySet.by_publish_year.__doc__
++
++ def by_change_time(self, *args, **kwargs):
++ return self.get_query_set().by_change_time(*args, **kwargs)
++ by_change_time.__doc__ = MediaItemQuerySet.by_change_time.__doc__
++
++ def by_location(self, *args, **kwargs):
++ return self.get_query_set().by_location(*args, **kwargs)
++ by_location.__doc__ = MediaItemQuerySet.by_location.__doc__
++
++class MediaCollectionQuerySet(CoreQuerySet):
++
++ def quick_search(self, pattern):
++ "Perform a quick search on code, title and collector name"
++ pattern = pattern.strip()
++ return self.filter(
++ Q(code__contains=pattern.strip()) |
++ Q(old_code__contains=pattern.strip()) |
++ word_search_q('title', pattern) |
++ self.by_fuzzy_collector_q(pattern)
++ )
++
++ def by_location(self, location):
++ "Find collections by location"
++ return self.filter(items__location__in=location.apparented()).distinct()
++
++ def by_recording_year(self, from_year, to_year=None):
++ "Find collections by recording year"
++ if to_year is None:
++ return (self.filter(recorded_from_year__lte=from_year, recorded_to_year__gte=from_year))
++ else:
++ return (self.filter(Q(recorded_from_year__range=(from_year, to_year)) |
++ Q(recorded_to_year__range=(from_year, to_year))))
++
++ def by_publish_year(self, from_year, to_year=None):
++ "Find collections by publishing year"
++ if to_year is None:
++ to_year = from_year
++ return self.filter(year_published__range=(from_year, to_year))
++
++ def by_ethnic_group(self, group):
++ "Find collections by ethnic group"
++ return self.filter(items__ethnic_group=group).distinct()
++
++ def by_change_time(self, from_time=None, until_time=None):
++ "Find collections between two dates"
++ return self._by_change_time('collection', from_time, until_time)
++
++ def virtual(self, *args):
++ qs = self
++ for f in args:
++ if f == 'apparent_collector':
++ qs = qs.extra(select={f: 'IF(media_collections.collector_is_creator, '
++ 'media_collections.creator, media_collections.collector)'})
++ else:
++ raise Exception("Unsupported virtual field: %s" % f)
++
++ return qs
++
++ def recording_year_range(self):
++ from_max = self.aggregate(Max('recorded_from_year'))['recorded_from_year__max']
++ to_max = self.aggregate(Max('recorded_to_year'))['recorded_to_year__max']
++ year_max = max(from_max, to_max)
++
++ from_min = self.filter(recorded_from_year__gt=0).aggregate(Min('recorded_from_year'))['recorded_from_year__min']
++ to_min = self.filter(recorded_to_year__gt=0).aggregate(Min('recorded_to_year'))['recorded_to_year__min']
++ year_min = min(from_min, to_min)
++
++ if not year_max:
++ year_max = year_min
++ elif not year_min:
++ year_min = year_max
++
++ return year_min, year_max
++
++ def publishing_year_range(self):
++ year_max = self.aggregate(Max('year_published'))['year_published__max']
++ year_min = self.filter(year_published__gt=0).aggregate(Min('year_published'))['year_published__min']
++
++ return year_min, year_max
++
++ @staticmethod
++ def by_fuzzy_collector_q(pattern):
++ return word_search_q('creator', pattern) | word_search_q('collector', pattern)
++
++ def by_fuzzy_collector(self, pattern):
++ return self.filter(self.by_fuzzy_collector_q(pattern))
++
++class MediaCollectionManager(CoreManager):
++ "Manage collection queries"
++
++ def get_query_set(self):
++ "Return the collection query"
++ return MediaCollectionQuerySet(self.model)
++
++ def enriched(self):
++ "Query set with additional virtual fields such as apparent_collector"
++ return self.get_query_set().virtual('apparent_collector')
++
++ def quick_search(self, *args, **kwargs):
++ return self.get_query_set().quick_search(*args, **kwargs)
++ quick_search.__doc__ = MediaCollectionQuerySet.quick_search.__doc__
++
++ def by_location(self, *args, **kwargs):
++ return self.get_query_set().by_location(*args, **kwargs)
++ by_location.__doc__ = MediaCollectionQuerySet.by_location.__doc__
++
++ def by_recording_year(self, *args, **kwargs):
++ return self.get_query_set().by_recording_year(*args, **kwargs)
++ by_recording_year.__doc__ = MediaCollectionQuerySet.by_recording_year.__doc__
++
++ def by_publish_year(self, *args, **kwargs):
++ return self.get_query_set().by_publish_year(*args, **kwargs)
++ by_publish_year.__doc__ = MediaCollectionQuerySet.by_publish_year.__doc__
++
++ def by_ethnic_group(self, *args, **kwargs):
++ return self.get_query_set().by_ethnic_group(*args, **kwargs)
++ by_ethnic_group.__doc__ = MediaCollectionQuerySet.by_ethnic_group.__doc__
++
++ def by_change_time(self, *args, **kwargs):
++ return self.get_query_set().by_change_time(*args, **kwargs)
++ by_change_time.__doc__ = MediaCollectionQuerySet.by_change_time.__doc__
++
++ @staticmethod
++ def __name_cmp(obj1, obj2):
++ return unaccent_icmp(obj1.name, obj2.name)
++
++class LocationQuerySet(CoreQuerySet):
++ __flatname_map = None
++
++ def by_flatname(self, flatname):
++ map = self.flatname_map()
++ return self.filter(pk=map[flatname])
++
++ def flatname_map(self):
++ if self.__class__.__flatname_map:
++ return self.__class__.__flatname_map
++
++ map = {}
++ locations = self.filter(Q(type=self.model.COUNTRY) | Q(type=self.model.CONTINENT))
++ for l in locations:
++ flatname = unaccent(l.name).lower()
++ flatname = re.sub('[^a-z]', '_', flatname)
++ while map.has_key(flatname):
++ flatname = '_' + flatname
++ map[flatname] = l.id
++
++ self.__class__.__flatname_map = map
++ return map
++
++ def current(self):
++ return self.filter(id__in=self.values_list('current_location_id', flat=True)).distinct()
++
++class LocationManager(CoreManager):
++
++ def get_query_set(self):
++ "Return location query set"
++ return LocationQuerySet(self.model)
++
++ def by_flatname(self, *args, **kwargs):
++ return self.get_query_set().by_flatname(*args, **kwargs)
++ by_flatname.__doc__ = LocationQuerySet.by_flatname.__doc__
++
++ def flatname_map(self, *args, **kwargs):
++ return self.get_query_set().flatname_map(*args, **kwargs)
++ flatname_map.__doc__ = LocationQuerySet.flatname_map.__doc__
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from telemeta.models.core import *
++from django.core.exceptions import ObjectDoesNotExist
++from django.utils.translation import ugettext_lazy as _
++
++class User(ModelCore):
++ "Telemeta user"
++ LEVEL_CHOICES = (('user', 'user'), ('maintainer', 'maintainer'), ('admin', 'admin'))
++
++ username = CharField(_('username'), primary_key=True, max_length=64, required=True)
++ level = CharField(_('level'), choices=LEVEL_CHOICES, max_length=32, required=True)
++ first_name = CharField(_('first name'))
++ last_name = CharField(_('last name'))
++ phone = CharField(_('phone'))
++ email = CharField(_('email'))
++
++ class Meta(MetaCore):
++ db_table = 'users'
++
++ def __unicode__(self):
++ return self.username
++
++class Revision(ModelCore):
++ "Revision made by user"
++ ELEMENT_TYPE_CHOICES = (('collection', 'collection'), ('item', 'item'), ('part', 'part'))
++ CHANGE_TYPE_CHOICES = (('import', 'import'), ('create', 'create'), ('update', 'update'), ('delete','delete'))
++
++ element_type = CharField(_('element type'), choices=ELEMENT_TYPE_CHOICES, max_length=16, required=True)
++ element_id = IntegerField(_('element identifier'), required=True)
++ change_type = CharField(_('modification type'), choices=CHANGE_TYPE_CHOICES, max_length=16, required=True)
++ time = DateTimeField(_('time'), auto_now_add=True)
++ user = ForeignKey('User', db_column='username', related_name="revisions", verbose_name=_('user'))
++
++ @classmethod
++ def touch(cls, element, user):
++ "Create or update a revision"
++ revision = cls(element_type=element.element_type, element_id=element.pk,
++ user=user, change_type='create')
++ if element.pk:
++ try:
++ element.__class__.objects.get(pk=element.pk)
++ except ObjectDoesNotExist:
++ pass
++ else:
++ revision.change_type = 'update'
++
++ revision.save()
++ return revision
++
++ class Meta(MetaCore):
++ db_table = 'revisions'
++
--- /dev/null
--- /dev/null
++======================================================================================================
++Telemeta : a web frontend to backup, analyse, transcode and stream any audio content with its metadata
++======================================================================================================
++
++Telemeta is a web audio archiving program which introduces useful and secure methods to backup, index, transcode, analyse and publish any digitalized audio file with its metadata. It is dedicated to professionnals who wants to easily backup and publish documented sounds from collections of vinyls, magnetic tapes or audio CDs over a strong database, in accordance with open standards.
++
++Here are the main features of Telemeta:
++
++* Secure archiving, editing and publishing of audio files over internet.
++* User friendly web frontend including workflows and high level search methods
++* Smart dynamical and skinnable audio player (thanks to Timeside and soundmanager2)
++* "On the fly" analyzing, transcoding and metadata embedding based on an easy plugin architecture
++* Multi-format support : FLAC, OGG, MP3, WAV and more
++* GEO Navigator for audio geolocalization
++* DublinCore compatibility
++* OAI-PMH data provider
++* XML serialized backup
++* Strong SQL backend
++
++The Telemeta data model is based on 'collections' and 'items'. A collection is described by its metadata and includes original audio items (sounds) and its own metadata. This existing model has been designed to fit the one of the French Centre of Etnomusicology (CREM) but could be easily adapted/overrided to suit other data structures.
++
++
++
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/admin.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/base.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/base_site.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/base_xspf.xml" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/collection.m3u" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/collection_detail.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/collection_detail_dc.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/collection_list.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/collection_xspf.xml" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/country_info.html" %}
++
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/enumeration_edit.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/enumeration_edit_value.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/flatpage.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/geo_continents.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/geo_countries.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/geo_country_collections.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/geo_country_items.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/inc/collection_list.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/inc/dublincore.html" %}
++
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/inc/mediaitem_list.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/index.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/login.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/mediaitem_detail.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/mediaitem_detail_dc.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/mediaitem_list.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/mediaitem_xspf.xml" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/search_criteria.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta_default/search_results.html" %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++
++{% block stylesheets %}
++{{ block.super }}
++<link rel="stylesheet" type="text/css" href="{% url telemeta-css "admin.css" %}" />
++{% endblock %}
++
++{% block content %}
++<h3>Administration</h3>
++<div class="tabs">
++<ul>
++<li>Users</li>
++
++{% if enumerations %}
++ <li>Enumerations
++ <ul>
++ {% for enum in enumerations %}
++ {%ifequal enum.id enumeration_id %}
++ <li class="active">{{ enum.name|capfirst }}</li>
++ {%else%}
++ <li><a href="{% url telemeta-enumeration-edit enum.id %}">
++ {{ enum.name|capfirst }}</a></li>
++ {%endifequal%}
++ {% endfor %}
++ </ul>
++</li>
++{% endif %}
++</ul>
++</div>
++<div class="tabcontents">
++ {% block tabcontents %}
++ {% endblock %}
++</div>
++{% endblock %}
--- /dev/null
--- /dev/null
++<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
++<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ LANGUAGE_CODE }}" xml:lang="{{ LANGUAGE_CODE }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
++<head>
++{% load i18n %}
++{% load telemeta_utils %}
++<title>{%block head_title %}{% organization %} - Telemeta{% endblock %}</title>
++{% block stylesheets %}
++<link rel="stylesheet" type="text/css" href="{% url telemeta-css "telemeta.css" %}" />
++<!--[if IE]>
++<link rel="stylesheet" type="text/css" href="{% url telemeta-css "telemeta_ie.css" %}" />
++<![endif]-->
++<!--[if lte IE 6]>
++<link rel="stylesheet"type="text/css" href="{% url telemeta-css "telemeta_ie6.css" %}" />
++<![endif]-->
++{% endblock %}
++<script src="{% url telemeta-js "jquery.js" %}" type="text/javascript"></script>
++<script src="{% url telemeta-js "application.js" %}" type="text/javascript"></script>
++{% block extra_javascript %}{% endblock %}
++</head>
++<body>
++<div id="layout">
++<div id="header">
++<div id="logo">
++{% block logo %}
++<a href="{% url telemeta-home %}"><img src="{% url telemeta-images "logo_telemeta_2.png" %}" alt="Telemeta" /></a>
++{% endblock %}
++</div>
++
++<div id="auth_info">
++{% if user.is_authenticated %}
++{% if user.first_name and user.last_name %}
++{{ user.first_name }} {{ user.last_name }}
++{% else %}
++{{ user.username }}
++{% endif %}
++|
++<a href="{% url telemeta-logout %}">{% trans "Sign out" %}</a>
++{% else %}
++<a href="{% url telemeta-login %}?next={{ request.path|urlencode }}">{% trans "Sign in" %}</a>
++{% endif %}
++</div>
++
++<div id="quick_search">
++<form action="{% url telemeta-search %}" method="GET">
++<input type="text" id="quick_search_pattern" name="pattern" />
++<input type="submit" value="{% trans 'Search' %}" />
++</form>
++<p><a href="{% url telemeta-search-criteria %}">{% trans "Advanced search" %}</a></p>
++</div>
++
++<div id="menu" class="nav">
++{% block menu %}
++<ul>
++{# spaces between li and a elements breaks layout #}
++<li><a href="/">Home</a></li><li><a href="{% url telemeta-collections %}">{% trans "Collections" %}</a></li><li><a href="{% url telemeta-items %}">{% trans "Items" %}</a></li><li {% if not user.is_authenticated %} class="last" {% endif %}><a href="{% url telemeta-geo-continents %}">{% trans "Geo Navigator" %}</a></li>{% if user.is_authenticated %}<li class="last"><a href="{% url telemeta-admin %}">{% trans "Admin" %}</a></li>{% endif %}
++</ul>
++{% endblock %}
++</div>
++</div>
++<div id="submenu">
++{% block submenu %}{% endblock %}
++</div>
++
++<div id="content">
++{% block content %}{% endblock %}
++<div class="nett"></div>
++</div>
++
++<div id="footer">
++{% block footer %}
++ <hr />
++ <a id="telemeta_powered" href="{% telemeta_url %}"><img src="{% url telemeta-images "logo_mini_2.png" %}" height="30" width="93"
++ alt="Telemeta Powered"/></a>
++ <p class="left">
++ {% trans "Powered by" %} <a href="{% telemeta_url %}"><strong>Telemeta {% telemeta_version %}</strong></a><br />
++ {% trans "By" %} <a href="http://www.parisson.com/">Parisson</a> & <a href="http://www.samalyse.com/">Samalyse</a>.
++ </p>
++
++ <p class="right">
++ {% trans "Visit the Telemeta open source project at" %}<br /><a href="{% telemeta_url %}">{% telemeta_url %}</a>
++ </p>
++{% endblock %}
++</div>
++</div>
++</body>
++</html>
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="UTF-8"?>
++<playlist version="1" xmlns="http://xspf.org/ns/0/">
++{% block listinfo %}{% endblock %}
++ <trackList>
++ {% block tracklist %}{% endblock %}
++ </trackList>
++</playlist>
++
++
--- /dev/null
--- /dev/null
++#EXTM3U{% load telemeta_utils %}{% for item in collection.items.all %}
++#EXTINF:{{ item.get_duration }},{{ item }}
++http://{{ host }}{% url telemeta-item-export item.public_id,"mp3" %}{% endfor %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}\r
++{% load telemeta_utils %}\r
++{% load i18n %}\r
++\r
++{% block head_title %}{% trans "Collection" %}{{collection|prepend:': '}} - {{ block.super }}{% endblock %}\r
++\r
++{% block extra_javascript %}\r
++<script src="{% url telemeta-js "swfobject.js" %}" type="text/javascript"></script>\r
++{% endblock %}\r
++\r
++{% if collection %}\r
++\r
++{% block submenu %}\r
++ <div><a href="{% url telemeta-collection-dublincore collection.public_id %}">Dublin Core</a></div>\r
++{% endblock %}\r
++\r
++{% block content %}\r
++ <h3>Collection: {{ collection }}</h3>\r
++ <div class="{% if collection.has_mediafile %}with-rightcol{% endif %}">\r
++ {% if collection.has_mediafile %}\r
++ <div id="rightcol">\r
++ <div id="collection_player">\r
++ <p><b>Listen to this collection</b>\r
++ (<a href="{% url telemeta-collection-m3u collection.public_id %}">M3U</a>,\r
++ <a href="{% url telemeta-collection-xspf collection.public_id %}">XSPF</a>)</p>\r
++ <!-- This is Jeroen Wijering's Flash MP3 Player, \r
++ under CC Attribution-NonCommercial-ShareAlike 2.0 license\r
++ from: http://www.jeroenwijering.com/?item=Flash_MP3_Player-->\r
++ <p id="collection_player_c">\r
++ <a href="http://www.macromedia.com/go/getflashplayer">Get Flash</a> to see this player.\r
++ </p>\r
++ <script type="text/javascript">\r
++ var so = new SWFObject('{% url telemeta-swf "mp3player.swf" %}','playlist','362','200','7');\r
++ so.addVariable("file","{% url telemeta-collection-xspf collection.public_id %}");\r
++ so.addVariable("displayheight","0");\r
++ so.write('collection_player_c');\r
++ </script> \r
++ </div>\r
++ </div>\r
++ {% endif %}\r
++ <div class="intro">\r
++ <span>{% if collection.items.count %}{{ collection.items.count }} {% ifequal collection.items.count 1 %}item{% else %}items{% endifequal %}{% else %}No item{% endif %}</span>\r
++ </div>\r
++ <div class="infos">\r
++ {% block general_info %}\r
++ <dl class="listing">\r
++ {% dl_field collection "reference" %}\r
++ {% dl_field collection "title" %}\r
++ {% dl_field collection "alt_title" %}\r
++ {% dl_field collection "creator" %}\r
++ {% dl_field collection "recording_context" %}\r
++ {% if collection.recorded_from_year %}\r
++ <dt>{% trans "Recording year" %}</dt>\r
++ <dd>{{ collection.recorded_from_year|default:'' }} {{ collection.recorded_to_year|prepend:" - " }}</dd>\r
++ {% endif %}\r
++ {% dl_field collection "year_published" %}\r
++ </dl>\r
++ {% endblock general_info %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block geoethnic_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Geographic and cultural informations" %}</a></h4>\r
++ <div>\r
++ <dl class="listing">\r
++ {% dl_field collection "countries" join with ", " %}\r
++ {% dl_field collection "ethnic_groups" join with ", " %}\r
++ </dl>\r
++ </div>\r
++ </div>\r
++ {% endblock geoethnic_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block legal_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Legal mentions" %}</a></h4>\r
++ <div>\r
++ <dl class="listing">\r
++ {% if collection.collector_is_creator %}\r
++ {% if collection.creator %}\r
++ <dt>{% trans "Recordist" %}</dt><dd>{{ collection.creator }}</dd>\r
++ {% endif%}\r
++ {% else %}\r
++ {% dl_field collection "collector" %}\r
++ {% endif %}\r
++ {% dl_field collection "publisher" %}\r
++ {% dl_field collection "publisher_collection" %}\r
++ {% dl_field collection "publisher_serial" %}\r
++ {% dl_field collection "booklet_author" %}\r
++ {% dl_field collection "external_references" %}\r
++ {% dl_field collection "doctype_code" %}\r
++ {% dl_field collection "public_access_label" %}\r
++ {% dl_field collection "legal_rights" %}\r
++ </dl>\r
++ </div>\r
++ </div>\r
++ {% endblock legal_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block archive_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Archiving data" %}</a></h4>\r
++ <div>\r
++ <dl class="listing">\r
++ {% dl_field collection "acquisition_mode" %}\r
++ {% dl_field collection "cnrs_contributor" %}\r
++ {% dl_field collection "metadata_author" %}\r
++ {% dl_field collection "booklet_description" %}\r
++ {% dl_field collection "publishing_status" %}\r
++ <!-- FIXME: alt_ids unsupported\r
++ {% dl_field collection "alt_ids" %}\r
++ -->\r
++ {% dl_field collection "comment" %}\r
++ {% dl_field collection "metadata_writer" %}\r
++ {% dl_field collection "travail" %}\r
++ {% dl_field collection "items_done" %}\r
++ </dl>\r
++ </div>\r
++ </div>\r
++ {% endblock archive_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block technical_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Technical data" %}</a></h4>\r
++ <div>\r
++ <dl class="listing">\r
++ {% dl_field collection "code" %}\r
++ {% dl_field collection "old_code" %}\r
++ <dt>{% trans "Media type" %}</dt><dd>{% trans "Audio" %}</dd>\r
++ {% dl_field collection "approx_duration" %}\r
++ {% dl_field collection "computed_duration" %}\r
++ {% dl_field collection "physical_items_num" %}\r
++ <div class="wazing"></div>\r
++ <dt>{% trans "Number of items" %}</dt><dd>{{ collection.items.count }}</dd>\r
++ {% dl_field collection "physical_format" %}\r
++ {% dl_field collection "ad_conversion" %}\r
++ </dl>\r
++ </div>\r
++ </div>\r
++ {% endblock technical_data %}\r
++ </div>\r
++ <h4>Items</h4>\r
++ {% with collection.items.enriched as items %}\r
++ {% with "1" as location_name %}\r
++ {% include "telemeta/inc/mediaitem_list.html" %}\r
++ {% endwith %}\r
++ {% endwith %}\r
++ <!--\r
++ {% with collection.ordered_items as items %}\r
++ {% include "telemeta/inc/mediaitem_list.html" %}\r
++ {% endwith %}\r
++ -->\r
++ </div>\r
++ </div>\r
++{% endblock %}\r
++{% else %}\r
++ <p>No such collection</p>\r
++{% endif %}\r
++\r
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Collection" %}{{collection|prepend:': '}} - {{ block.super }}{% endblock %}
++
++{% if collection %}
++{% block submenu %}
++ <h3>Collection: {{ collection }}</h3>
++ <div><a href="{% url telemeta-collection-detail collection.public_id %}">{% trans "Normal View" %}</a></div>
++{% endblock %}
++
++{% block content %}
++{% with collection|to_dublincore as resource %}
++{% include "telemeta/inc/dublincore.html" %}
++{% endwith %}
++
++{% endblock %}
++{% else %}
++ <p>{% trans "No such collection" %}</p>
++{% endif %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Media Collections" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3>{% trans "Media Collections" %}</h3>
++
++{% with object_list as collections %}
++<div class="fullpage">
++{% include "telemeta/inc/collection_list.html" %}
++</div>
++{% endwith %}
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base_xspf.xml" %}
++{% load telemeta_utils %}
++
++{% block listinfo %}
++{% with collection.to_dublincore.flatten as dc %}
++ <creator>{{ dc.creator }}</creator>
++ <title>{{ dc.title }}</title>
++ <info>http://{{ host }}{% url telemeta-collection-detail collection.public_id %}</info>
++{% endwith %}
++{% endblock %}
++
++{% block tracklist %}
++{% for item in collection.items.all %}
++ <track>
++ <title>{{ item }}</title>
++ <meta rel="type">mp3</meta>
++ <location>http://{{ host }}{% url telemeta-item-export item.public_id,"mp3" %}</location>
++ <duration>{{ item.computed_duration.as_seconds|mul:1000 }}</duration>
++ <info>http://{{ host }}{% url telemeta-item-detail item.public_id %}</info>
++ </track>
++{% endfor %}
++{% endblock %}
++
--- /dev/null
--- /dev/null
++{% load telemeta_utils %}
++{% load i18n %}
++
++<h2>{{ country }}</h2>
++<p>
++<a href="{% url telemeta-geo-country-items continent.flatname,country.flatname %}">
++{{ country.items|resources_num }}
++</a>
++{% trans "in" %}
++<a href="{% url telemeta-geo-country-collections continent.flatname,country.flatname %}">
++{{ country.collections|resources_num }}
++</a>
++</p>
++<!--
++{% with country.items.all.ethnic_groups as ethnic_groups %}
++{% if ethnic_groups %}
++<p>
++<b>{% trans "Populations / Social groups" %}:</b>
++{{ ethnic_groups|join:', ' }}
++</p>
++{% endif %}
++{% endwith %}
++-->
--- /dev/null
--- /dev/null
++{% extends "telemeta/admin.html" %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %}
++
++{% block tabcontents %}
++ <h4>{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}</h4>
++
++ <form class="addnew" id="addenum" method="post"
++ action="{% url telemeta-enumeration-add enumeration_id %}">
++ <fieldset>
++ <legend>{% trans "Add entry" %}</legend>
++ <div class="field">
++ <label>{% trans "Value" %}: <input type="text" name="value"></label>
++
++ </div>
++ <div class="buttons">
++ <input type="submit" name="add" value="{% trans 'Add' %}">
++ </div>
++ </fieldset>
++ </form>
++ {% if enumeration_values %}
++ <form method="POST" action="{% url telemeta-enumeration-update enumeration_id %}">
++ <table class="listing">
++ <thead>
++ <tr><th class="sel"> </th><th>{% trans "Value"%}</th>
++
++ </tr>
++ </thead><tbody>
++ {% for record in enumeration_values %}
++ <tr>
++ <td><input type="checkbox" name="sel" value="{{record.id}}" /></td>
++ <td><a href="{% url telemeta-enumeration-record-edit enumeration_id,record.id %}">
++ {{record.value}}</a></td>
++ </tr>
++ {% endfor %}
++ </tbody>
++ </table>
++ <div class="buttons">
++ <input type="submit" name="remove" value="{% trans 'Remove selected items' %}" />
++ </div>
++ </form>
++ {% else %}
++ <p class="help">{% trans "This enumeration is empty" %}</p>
++ {% endif %}
++
++ <br style="clear: right"/>
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/admin.html" %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Enumeration" %}: {{ enumeration_name|capfirst }} - {{ block.super }}{% endblock %}
++
++{% block tabcontents %}
++ <h4>{% trans "Enumeration" %}: {{ enumeration_name|capfirst }}</h4>
++
++ <form class="mod" id="addenum" method="post"
++ action="{% url telemeta-enumeration-record-update enumeration_id,enumeration_record.id %}">
++ <fieldset>
++ <legend>{% trans "Modify an entry" %}</legend>
++ <div class="field">
++ <label>{% trans "Value" %}: <input type="text" name="value" value="{{enumeration_record.value}}" /></label>
++
++ </div>
++ <div class="buttons">
++ <input type="submit" name="save" value="{% trans 'Save' %}">
++ <input type="submit" name="cancel" value="{% trans 'Cancel' %}">
++ </div>
++ </fieldset>
++ </form>
++ <br style="clear: right"/>
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% block content %}
++{{ page_content|render_flatpage }}
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Geographic Navigator" %} - {{ block.super }}{% endblock %}
++
++{% block extra_javascript %}
++{% if gmap_key %}
++<script src="http://www.google.com/jsapi?key={{ gmap_key }}" type="text/javascript"></script>
++<script src="{% url telemeta-js "resourcemap.js" %}" type="text/javascript"></script>
++<script type="text/javascript">
++var resourceMap = new ResourceMap('.continents', {
++ 'countryInfoUri': '{% url telemeta-country-info "RESOURCEID" %}'
++});
++</script>
++{% endif %}
++{% endblock %}
++
++{% block submenu %}
++ <div>
++ <a href="#" onclick="resourceMap.toggle('map'); return false;">{% trans "Map" %}</a> |
++ <a href="#"onclick="resourceMap.toggle('list'); return false;">{% trans "List" %}</a>
++ </div>
++{% endblock %}
++{% block content %}
++<h3>{% trans "Geographic Navigator" %}</h3>
++{% if continents %}
++<ul class="continents">
++{% for group in continents %}
++ <li class="name {% if not forloop.counter0|divisibleby:"2" %}odd{% endif %}"><b><a href="{% url telemeta-geo-countries group.continent.flatname %}">{{ group.continent }}</a></b>
++ <ul>
++ {% for country in group.countries %}
++ <li id="resource-{{country.id}}" class="country_name resourcemap-element">
++ <a href="{% url telemeta-geo-country-collections group.continent.flatname,country.flatname %}">
++ <span class="resourcemap-name">{{ country }}</span></a>
++ {% if not country.latitude|is_none and not country.longitude|is_none %}
++ <input type="hidden" class="resourcemap-lat" value="{{country.latitude}}" />
++ <input type="hidden" class="resourcemap-lng" value="{{country.longitude}}" />
++ {% endif %}
++ </li>
++ {% endfor %}
++ </ul>
++ </li>
++{% endfor %}
++</ul>
++{% else %}
++<p>No data</p>
++{% endif %}
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{{ continent }} - {% trans "Geographic Navigator" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3><a href="{% url telemeta-geo-continents %}">{% trans "World" %}</a> /
++ {{ continent }}</h3>
++<table class="listing">
++<tr>
++ <th>{% trans "Country" %}</th>
++ <th>{% trans "Number of collections" %}</th>
++ <th>{% trans "Number of items" %}</th>
++</tr>
++{% for country in countries %}
++<tr>
++ <td>{{ country }}</td>
++ <td>
++ {% with country.collections.count as num %}
++ <a href="{% url telemeta-geo-country-collections continent.flatname,country.flatname %}">
++ {% blocktrans count num as counter %}1 collection{% plural %}{{ counter }} collections{% endblocktrans %}
++ </a>
++ {% endwith %}
++ </td>
++ <td>
++ {% with country.items.count as num %}
++ <a href="{% url telemeta-geo-country-items continent.flatname,country.flatname %}">
++ {% blocktrans count num as counter %}1 item{% plural %}{{ counter }} items {% endblocktrans %}
++ </a>
++ {% endwith %}
++ </td>
++</tr>
++{% endfor %}
++</table>
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{{ country }} - {% trans "Geographic Navigator" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3><a href="{% url telemeta-geo-continents %}">{% trans "World" %}</a> /
++ <a href="{% url telemeta-geo-countries continent.flatname %}">{{ continent }}</a>
++ / {{ country }}</h3>
++
++{% with object_list as collections %}
++<div class="fullpage">
++{% include "telemeta/inc/collection_list.html" %}
++</div>
++{% endwith %}
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{{ country }} - {% trans "Geographic Navigator" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3><a href="{% url telemeta-geo-continents %}">{% trans "World" %}</a> /
++ <a href="{% url telemeta-geo-countries continent.flatname %}">{{ continent }}</a>
++ / {{ country }}</h3>
++
++{% with object_list as items %}
++<div class="fullpage">
++{% include "telemeta/inc/mediaitem_list.html" %}
++</div>
++{% endwith %}
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% load telemeta_utils %}
++{% load i18n %}
++{% if collections %}
++{% if hits %}
++<p class="pagination">
++{% blocktrans %}Collections {{ first_on_page }} to {{ last_on_page }} on {{ hits }}{% endblocktrans %}
++
++{% if has_previous %} <a href="?page={{ previous }}&{{criteria|build_query_string}}"><<</a> {% endif %}
++{% if has_next %} <a href="?page={{ next }}&{{criteria|build_query_string}}">>></a> {% endif %}
++</p>
++{% endif %}
++<table class="listing">
++<tr>
++ <th class="highlight">{% trans "Title" %}</th>
++ <th>{% trans "Code" %}</th>
++ <th>{% field_label "MediaCollection" "creator" %}</th>
++ <th>{% trans "Recordist" %}</th>
++ <th>{% trans "Year of recording" %}</th>
++</tr>
++{% for collection in collections %}
++<tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
++ <td class="highlight">
++ <a href="{% url telemeta-collection-detail collection.public_id %}">{{ collection }}</a>
++ </td>
++ <td>
++ {{ collection.code|default:collection.old_code }}
++ </td>
++ <td>{{ collection.creator }}</td>
++ <td>{{ collection.apparent_collector }}</td>
++ <td>
++ {% if collection.recorded_from_year %}
++ {{ collection.recorded_from_year }}
++ {% if collection.recorded_to_year and not collection.recorded_to_year|equals:collection.recorded_from_year %}
++ - {{ collection.recorded_to_year }}
++ {% endif %}
++ {% endif %}
++ </td>
++</tr>
++{% endfor %}
++</table>
++{% else %}
++ <p>{% trans "No collection" %}</p>
++{% endif %}
++
--- /dev/null
--- /dev/null
++{% load telemeta_utils %}
++{% load i18n %}
++
++ <h4 class="dublincore">{% trans "Dublin Core Metadata" %}</h4>
++ <dl class="dublincore">
++ <dt class="caption"><span>Element</span>Refinement</dt><dd class="caption">Value</dd>
++ {% for element in resource.elements %}
++ <dt><span>{{ element.name }}</span>{{ element.refinement|default:" " }}</dt>
++ <dd>
++ {% if element.related|is_item or element.related|is_collection %}
++ {% if element.related|is_item %}
++ <a href="{% url telemeta-item-dublincore element.related.public_id %}">{{ element.value }}</a>
++ {% else %}
++ <a href="{% url telemeta-collection-dublincore element.related.public_id %}">{{ element.value }}</a>
++ {% endif %}
++ {% else %}
++ {{ element.value }}
++ {% endif %}
++ </dd>
++ {% endfor %}
++
++ </dl>
--- /dev/null
--- /dev/null
++{% load telemeta_utils %}
++{% load i18n %}
++{% if items %}
++{% if hits %}
++<p class="pagination">
++{% blocktrans %}Items {{ first_on_page }} to {{ last_on_page }} on {{ hits }}{% endblocktrans %}
++
++{% if has_previous %} <a href="?page={{ previous }}&{{criteria|build_query_string}}"><<</a> {% endif %}
++{% if has_next %} <a href="?page={{ next }}&{{criteria|build_query_string}}">>></a> {% endif %}
++</p>
++{% endif %}
++<table class="listing">
++<tr>
++ <th class="highlight">{% trans "Title" %}</th>
++ <th>{% trans "Code" %}</th>
++ <th>{% trans "Recordist" %}</th>
++ {% if location_name %}
++ <th>{% trans "Location" %}</th>
++ {% else %}
++ <th>{% trans "Country/Continent" %}</th>
++ {% endif %}
++ <th>{% trans "Year of recording" %}</th>
++</tr>
++{% for item in items %}
++<tr {% if not forloop.counter0|divisibleby:"2" %}class="odd"{% endif %}>
++ <td class="highlight">
++ <a href="{% url telemeta-item-detail item.public_id %}">{{ item }}</a>
++ </td>
++ <td>
++ {{ item.code|default:item.old_code }}
++ </td>
++ <td>{{ item.apparent_collector }}</td>
++ {% if location_name %}
++ <td>{{ item.location.name }}</td>
++ {% else %}
++ <td>{{ item.country_or_continent|default:' ' }}</td>
++ {% endif %}
++ <td>
++ {% if item.recorded_from_date %}
++ {{ item.recorded_from_date.year }}
++ {% if item.recorded_to_date and not item.recorded_to_date.year|equals:item.recorded_from_date.year %}
++ - {{ item.recorded_to_date.year }}
++ {% endif %}
++ {% endif %}
++ </td>
++</tr>
++{% endfor %}
++</table>
++{% else %}
++ <p>{% trans "No item" %}</p>
++{% endif %}
++
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block content %}
++<div class="home-content">
++
++<div class="module-set">
++
++{% block modules %}
++<div class="module">
++ <h3>{% trans "Geographic Navigator" %}</h3>
++ <a class="image-link" href="{% url telemeta-geo-continents %}">
++ <img class="map-thumbnail" src="{% url telemeta-images "map_thumbnail.png" %}" alt="{% trans "Open the geographic navigator" %}" /></a>
++</div>
++<div class="module">
++ <h3>{% trans "Musical selection" %}</h3>
++ <ul class="playlist">
++ {% for item in items %}
++ <li>
++ <a href="{% url telemeta-item-detail item.public_id %}"><b>{{item}}</b></a>
++ <br />
++ <span class="info">{{item.apparent_collector|prepend:' - '}} - {{item.country_or_continent}}</span>
++ </li>
++ {% endfor %}
++ </ul>
++</div>
++{% endblock %}
++
++</div>
++
++<div class="home-description">
++{{ page_content|render_flatpage }}
++</div>
++</div>
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load i18n %}
++
++{% block content %}
++<h3>{% trans "User authentication" %}</h3>
++
++{% if form.errors %}
++<p class="login-error">{% trans "Your username and password didn't match. Please try again." %}</p>
++{% endif %}
++
++<form class="login" method="post" action="{% url telemeta-login %}">
++<p>
++{{ form.username.label_tag }}
++{{ form.username }}<br />
++
++{{ form.password.label_tag }}
++{{ form.password }}
++
++</p>
++<input class="submit" type="submit" value="{% trans "Sign in" %}"/>
++<input type="hidden" name="next" value="{{ next }}" />
++</form>
++
++<div class="wazing" />
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}\r
++{% load telemeta_utils %}\r
++{% load i18n %}\r
++\r
++{% block head_title %}{% trans "Item" %}{{item|prepend:': '}} - {{ block.super }}{% endblock %}\r
++\r
++{% block stylesheets %}\r
++{{ block.super }}\r
++<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "css/timeside.css" %}" />\r
++<link rel="stylesheet" type="text/css" href="{% url telemeta-timeside "skins/lab/style.css" %}" />\r
++<link rel="stylesheet" type="text/css" href="{% url telemeta-css "player.css" %}" />\r
++{% endblock %}\r
++{% block extra_javascript %}\r
++\r
++<script src="{% url telemeta-js "wz_jsgraphics.js" %}" type="text/javascript"></script>\r
++<script src="{% url telemeta-js "soundmanager2.js" %}" type="text/javascript"></script>\r
++<script src="{% url telemeta-timeside "src/timeside.js" %}" type="text/javascript"></script>\r
++<script src="{% url telemeta-js "player.js" %}" type="text/javascript"></script>\r
++\r
++<script type="text/javascript">\r
++soundManager.url = '{% url telemeta-swf "./" %}';\r
++soundManager.flashVersion = 9;\r
++soundManager.useMovieStar = true; // enable MP4/M4A/AAC\r
++soundManager.debugMode = false;\r
++set_player_image_url('{% url telemeta-item-visualize item.public_id,visualizer_id,"WIDTH","HEIGHT" %}');\r
++load_player({{ item.approx_duration.as_seconds }});\r
++</script>\r
++\r
++{% endblock %}\r
++\r
++\r
++{% if item %}\r
++{% block submenu %}\r
++ <div><a href="{% url telemeta-item-dublincore item.public_id %}">Dublin Core</a></div>\r
++{% endblock %}\r
++\r
++{% block content %}\r
++\r
++<h3>Item : {{ item }}</h3>\r
++<div class="{% if item.file %}with-rightcol{% endif %}">\r
++\r
++{% if item.file %}\r
++ <div id="player_maximized" class="ts-skin-lab">\r
++ <a href="#" class="toggle">Minimize</a>\r
++ <div class="wazing"></div>\r
++ </div>\r
++ <div id="rightcol">\r
++ <div id="player_minimized" class="ts-skin-lab">\r
++ <a href="#" class="toggle">Maximize</a>\r
++ <div class="wazing"></div>\r
++ <div id="player" class="ts-player">\r
++ <div class="ts-viewer">\r
++ <div class="ts-wave">\r
++ <div class="ts-image-container">\r
++ <a href="{% url telemeta-item-export item.public_id,"mp3" %}">\r
++ <img class="ts-image" src="{% url telemeta-item-visualize item.public_id,visualizer_id,360,130 %}"\r
++ alt="" /></a>\r
++ </div>\r
++ </div>\r
++ </div>\r
++ </div>\r
++ </div>\r
++\r
++ <div class="item_visualization">\r
++ <form id="visualizer_id_form" method="get" action="#">\r
++ <!--\r
++ <select name="visualizer_id" onchange="this.form.submit()">\r
++ {% for v in visualizers %}\r
++ <option value="{{ v.id }}" {% ifequal v.id visualizer_id %} selected="selected" {% endifequal %}>\r
++ {{v.name}}</option>\r
++ {% endfor %}\r
++ </select>\r
++ -->\r
++ <select id="visualizer_id" name="visualizer_id">\r
++ {% for v in visualizers %}\r
++ <option value="{% url telemeta-item-visualize item.public_id,v.id,"WIDTH","HEIGHT" %}">\r
++ {{v.name}}</option>\r
++ {% endfor %}\r
++ </select>\r
++ <input type="submit" value="Set" />\r
++ </form>\r
++\r
++ <div class="analyzer">\r
++ <table width="100%">\r
++ <tr class="analyzer-title">\r
++ <td>Property</td>\r
++ <td>Value</td>\r
++ <td>Unit</td>\r
++ <tr>\r
++ {% for analyser in analysers %}\r
++ <tr class="analyzer-line">\r
++ <td>\r
++ {{ analyser.name }}\r
++ </td>\r
++ <td>\r
++ {{ analyser.value }}\r
++ </td>\r
++ <td>\r
++ {{ analyser.unit }}\r
++ </td>\r
++ </tr>\r
++ {% endfor %}\r
++ </table>\r
++ </div>\r
++<!--\r
++ <form method="get" action="#">\r
++ <p> Vamp plugin analysis</p>\r
++ <select name="vamp_id">\r
++ {% for plugin in vamp_plugins %}\r
++ <option value="{{ plugin }}" {% ifequal plugin vamp_id %} selected="selected" {% endifequal %}>\r
++ {{ plugin }}</option>\r
++ {% endfor %}\r
++ </select>\r
++ <input type="submit" value="Get" />\r
++ </form>\r
++-->\r
++ </div>\r
++\r
++ {% if audio_export_enabled %}\r
++ <div class="exporter">\r
++ <p>{% trans "Download:" %}\r
++ {% for format in export_formats %}\r
++ <a href="{% url telemeta-item-export item.public_id,format.extension %}">{{ format.name }}</a>\r
++ {% endfor %}</p>\r
++ </div>\r
++ {% endif %}\r
++\r
++ </div>\r
++{% endif %}\r
++\r
++ <div class="infos">\r
++ {% block general_info %}\r
++ <dl class="listing">\r
++ {% dl_field item "title" %}\r
++ {% dl_field item "alt_title" %}\r
++ {% dl_field item "collector" %}\r
++ <dt>{% field_label item "collection" %}</dt>\r
++ <dd><a href="{% url telemeta-collection-detail item.collection.public_id %}">{{ item.collection }}</a></dd>\r
++ {% if item.recorded_from_date %}\r
++ <dt>{% trans "Recording date" %}</dt>\r
++ <dd>{{ item.recorded_from_date }} {{ item.recorded_to_date|prepend:" - " }}</dd>\r
++ {% endif %}\r
++ </dl>\r
++ {% endblock general_info %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block geoethnic_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Geographic and cultural informations" %}</a></h4>\r
++ <dl class="listing">\r
++ {% if item.location %}\r
++ <dt>{% trans "Location" %}</dt>\r
++ <dd>{{ item.location.fullnames|join:"<br/>" }}</dd>\r
++ {% endif %}\r
++ {% dl_field item "location_comment" %}\r
++ {% dl_field item "cultural_area" %}\r
++ {% dl_field item "ethnic_group" %}\r
++ {% dl_field item "context_comment" %}\r
++ {% dl_field item "keywords" join with ", " %}\r
++ </dl>\r
++ </div>\r
++ {% endblock geoethnic_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block musical_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Musical informations" %}</a></h4>\r
++ <dl class="listing">\r
++ {% dl_field item "vernacular_style" %}\r
++ {% dl_field item "generic_style" %}\r
++ {% dl_field item "author" %}\r
++ </dl>\r
++ {% if item.performances %}\r
++ <div class="instruments">\r
++ <table class="instruments">\r
++ <thead>\r
++ <tr>\r
++ <td>{% field_label "MediaItemPerformance" "instruments_num" %}</td>\r
++ <td>{% field_label "MediaItemPerformance" "instrument" %}</td>\r
++ <td>{% field_label "MediaItemPerformance" "alias" %}</td>\r
++ <td>{% field_label "MediaItemPerformance" "musicians" %}</td>\r
++ </tr>\r
++ </thead>\r
++ <tbody>\r
++ {% for performance in item.performances.all %}\r
++ <tr>\r
++ <td>{{ performance.instruments_num }}</td>\r
++ <td>{{ performance.instrument|default:"" }}</td>\r
++ <td>{{ performance.alias|default:"" }}</td>\r
++ <td>{{ performance.musicians }}</td>\r
++ </tr>\r
++ {% endfor %}\r
++ </tbody>\r
++ </table>\r
++ </div>\r
++ {% endif %}\r
++ </div>\r
++ {% endblock musical_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block general_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "General informations" %}</a></h4>\r
++ <dl class="listing">\r
++ {% dl_field item "comment" %}\r
++ {% dl_field item "collector_selection" %}\r
++ </dl>\r
++ </div>\r
++ {% endblock general_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block archive_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Archiving data" %}</a></h4>\r
++ <dl class="listing">\r
++ {% dl_field item "code" %}\r
++ {% dl_field item "old_code" %}\r
++ {% dl_field item "track" %}\r
++ {% dl_field item "creator_reference" %}\r
++ {% dl_field item "external_references" %}\r
++ {% dl_field item "public_access_label" %}\r
++ </dl>\r
++ </div>\r
++ {% endblock archive_data %}\r
++ </div>\r
++ <div class="extraInfos">\r
++ {% block technical_data %}\r
++ <div>\r
++ <h4><a href="#">{% trans "Technical data" %}</a></h4>\r
++ <div>\r
++ <dl class="listing">\r
++ <dt>{% trans "Media type" %}</dt><dd>{% trans "Audio" %}</dd>\r
++ {% dl_field item "approx_duration" %}\r
++ </dl>\r
++ </div>\r
++ </div>\r
++ {% endblock technical_data %}\r
++ </div>\r
++\r
++</div> <!-- with-rightcol -->\r
++\r
++{% endblock %}\r
++{% else %}\r
++ <p>No such item</p>\r
++{% endif %}\r
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}\r
++{% load telemeta_utils %}\r
++{% load i18n %}\r
++\r
++{% block head_title %}{% trans "Item" %}{{item|prepend:': '}} - {{ block.super }}{% endblock %}\r
++\r
++{% if item %}\r
++{% block submenu %}\r
++ <h3>Item: {{ item }}</h3>\r
++ <div><a href="{% url telemeta-item-detail item.public_id %}">{% trans "Normal View" %}</a></div>\r
++{% endblock %}\r
++\r
++{% block content %}\r
++{% with item|to_dublincore as resource %}\r
++{% include "telemeta/inc/dublincore.html" %}\r
++{% endwith %}\r
++{% endblock %}\r
++{% else %}\r
++ <p>{% trans "No such item" %}</p>\r
++{% endif %}\r
++\r
++\r
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load i18n %}
++{% load telemeta_utils %}
++
++{% block head_title %}{% trans "Media Items" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3>{% trans "Media Items" %}</h3>
++{% with object_list as items %}
++<div class="fullpage">
++{% include "telemeta/inc/mediaitem_list.html" %}
++</div>
++{% endwith %}
++
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base_xspf.xml" %}
++{% load telemeta_utils %}
++
++{% block tracklist %}
++ <track>
++ <title>{{ item }}</title>
++ <meta rel="type">mp3</meta>
++ <location>http://{{ host }}{% url telemeta-item-export item.public_id,"mp3" %}</location>
++ <duration>{{ item.get_duration|mul:1000 }}</duration>
++ <info>http://{{ host }}{% url telemeta-item-detail item.public_id %}</info>
++ </track>
++{% endblock %}
++
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Advanced Search" %} - {{ block.super }}{% endblock %}
++
++{% block stylesheets %}
++{{ block.super }}
++<link rel="stylesheet" type="text/css" href="{% url telemeta-css "jquery.autocomplete.css" %}" />
++{% endblock %}
++
++{% block extra_javascript %}
++<script src="{% url telemeta-js "jquery.bgiframe.js" %}" type="text/javascript"></script>
++<script src="{% url telemeta-js "jquery.autocomplete.js" %}" type="text/javascript"></script>
++<script type="text/javascript">
++function update_period(source, from_field, to_field) {
++ var from_year = $(from_field);
++ var to_year = $(to_field);
++
++ if (from_year.val() == "0") {
++ to_year.attr('disabled', '1');
++ to_year.val('0');
++ } else {
++ to_year.removeAttr('disabled');
++ if ($(source).is(to_field)) {
++ if (parseInt(from_year.val()) > parseInt(to_year.val()))
++ from_year.val(to_year.val());
++ } else if (parseInt(from_year.val()) > parseInt(to_year.val())) {
++ to_year.val(from_year.val());
++ }
++ }
++}
++
++$(document).ready(function () {
++ $('#location').autocomplete('{% url telemeta-complete-location %}', {
++ max: 20,
++ formatResult: function(data) {
++ return data[0].replace(/ *\([0-9]+.*\) *$/, '');
++ }
++ });
++ update_period('#rec_year_from', '#rec_year_to');
++ $('#rec_year_from, #rec_year_to').change(function () {
++ update_period(this, '#rec_year_from', '#rec_year_to');
++ });
++ update_period('#pub_year_from', '#pub_year_to');
++ $('#pub_year_from, #pub_year_to').change(function () {
++ update_period(this, '#pub_year_from', '#pub_year_to');
++ });
++});
++
++</script>
++{% endblock %}
++
++{% block content %}
++<h3>{% trans "Advanced Search" %}</h3>
++
++<form action="{% url telemeta-search %}" id="searchform">
++<fieldset>
++
++ <p>
++ <label for="location">{% field_label "Location" %}</label>
++ <input type="text" name="location" id="location" value="{{ criteria.location }}" />
++ </p>
++
++ <p>
++ <label for="ethnic_group">{% field_label "EthnicGroup" %}</label>
++ <select id="ethnic_group" name="ethnic_group">
++ <option value="">All ethnic groups</option>
++ {% for group in ethnic_groups %}
++ <option value="{{group.id}}" {% ifequal criteria.ethnic_group.id group.id %}selected {% endifequal %}>{{group|escape}}</option>
++ {% endfor %}
++ </select>
++ </p>
++
++</fieldset>
++<fieldset>
++
++ <p>
++ <label for="title">{% trans "Title" %}</label>
++ <input type="text" id="title" name="title" />
++ </p>
++
++ <p>
++ <label for="creator">{% field_label "MediaCollection" "creator" %}</label>
++ <input type="text" id="creator" name="creator" />
++ </p>
++
++ <p>
++ <label for="collector">{% field_label "MediaCollection" "collector" %}</label>
++ <input type="text" id="collector" name="collector" />
++ </p>
++
++ {% if rec_years %}
++ <p>
++ <label for="rec_date_from">{% trans "Year of recording" %}</label>
++ <select id="rec_year_from" name="rec_year_from" class="tiny">
++ <option value="0"></option>
++ {% for year in rec_years %}
++ <option value="{{ year }}" {% ifequal criteria.rec_year_from year %}selected {% endifequal %}>{{year}}</option>
++ {% endfor %}
++ </select>
++ {% trans "to" %}
++ <select id="rec_year_to" name="rec_year_to" class="tiny">
++ <option value="0"></option>
++ {% for year in rec_years %}
++ <option value="{{ year }}" {% ifequal criteria.rec_year_to year %}selected {% endifequal %}>{{year}}</option>
++ {% endfor %}
++ </select>
++ </p>
++ {% endif %}
++
++ {% if pub_years %}
++ <p>
++ <label for="pub_date_from">{% trans "Year of publication" %}</label>
++ <select id="pub_year_from" name="pub_year_from" class="tiny">
++ <option value="0"></option>
++ {% for year in pub_years %}
++ <option value="{{ year }}" {% ifequal criteria.pub_year_from year %}selected {% endifequal %}>{{year}}</option>
++ {% endfor %}
++ </select>
++ {% trans "to" %}
++ <select id="pub_year_to" name="pub_year_to" class="tiny">
++ <option value="0"></option>
++ {% for year in pub_years %}
++ <option value="{{ year }}" {% ifequal criteria.pub_year_to year %}selected {% endifequal %}>{{year}}</option>
++ {% endfor %}
++ </select>
++ </p>
++ {% endif %}
++
++</fieldset>
++
++<p class="input">
++<input type="submit" value="{% trans 'Search' %}" />
++</p>
++
++</form>
++{% endblock %}
--- /dev/null
--- /dev/null
++{% extends "telemeta/base.html" %}
++{% load telemeta_utils %}
++{% load i18n %}
++
++{% block head_title %}{% trans "Search Results" %} - {{ block.super }}{% endblock %}
++
++{% block content %}
++<h3>{% trans "Search Results" %}</h3>
++
++{% if criteria %}
++<ul>
++ {% if criteria.pattern %}
++ <li><b>{% trans "Search pattern" %}:</b> {{criteria.pattern}}</li>
++ {% endif %}
++ {% if criteria.location %}
++ <li><b>{% field_label "Location" %}:</b> {{criteria.location}}</li>
++ {% endif %}
++ {% if criteria.ethnic_group %}
++ <li><b>{% field_label "EthnicGroup" %}:</b> {{criteria.ethnic_group}}</li>
++ {% endif %}
++ {% if criteria.creator %}
++ <li><b>{% field_label "MediaCollection" "creator" %}:</b> {{criteria.creator}}</li>
++ {% endif %}
++ {% if criteria.collector %}
++ <li><b>{% field_label "MediaCollection" "collector" %}:</b> {{criteria.collector}}</li>
++ {% endif %}
++ {% if criteria.title %}
++ <li><b>{% trans "Title" %}:</b> {{criteria.title}}</li>
++ {% endif %}
++ {% if criteria.rec_year_from %}
++ <li><b>{% trans "Year of recording" %}:</b> {{criteria.rec_year_from}}
++ {% ifnotequal criteria.rec_year_to criteria.rec_year_from %}
++ {% trans "to" %} {{criteria.rec_year_to}}
++ {% endifnotequal %}
++ </li>
++ {% endif %}
++ {% if criteria.pub_year_from %}
++ <li><b>{% trans "Year of publication" %}:</b> {{criteria.pub_year_from}}
++ {% ifnotequal criteria.pub_year_to criteria.pub_year_from %}
++ {% trans "to" %} {{criteria.pub_year_to}}
++ {% endifnotequal %}
++ </li>
++ {% endif %}
++</ul>
++{% endif %}
++
++{% ifequal type 'items' %}
++
++ <p><b>Items ({{items_num}})</b> |
++ <a href="{% url telemeta-search-collections %}?{{criteria|build_query_string}}">
++ Collections ({{collections_num}})</a></p>
++
++ {% with object_list as items %}
++ {% include "telemeta/inc/mediaitem_list.html" %}
++ {% endwith %}
++
++{% else %}
++
++ <p><a href="{% url telemeta-search-items %}?{{criteria|build_query_string}}">
++ Items ({{items_num}})</a> |
++ <b>Collections ({{collections_num}})</b></p>
++
++ {% with object_list as collections %}
++ {% include "telemeta/inc/collection_list.html" %}
++ {% endwith %}
++
++{% endifequal %}
++
++{% endblock %}
--- /dev/null
--- /dev/null
--- /dev/null
--- /dev/null
++from django import template
++from django.utils.http import urlquote
++from telemeta import models
++from django.core.urlresolvers import reverse
++import telemeta.models.dublincore as dc
++from django.utils import html
++from django import template
++from django.utils.text import capfirst
++from telemeta import models
++from django.utils.translation import ungettext
++from docutils.core import publish_parts
++from django.utils.encoding import smart_str, force_unicode
++from django.utils.safestring import mark_safe
++from django import db
++import re
++from django.conf import settings
++
++register = template.Library()
++
++@register.filter
++def tolist(dict):
++ "Converts a simple dict into a list"
++ list = []
++ for k, v in dict.iteritems():
++ list.append({'name': k, 'value': v})
++ return list
++
++@register.filter
++def mul(value, arg):
++ "Multiply a numeric value"
++ return value * arg
++
++class TelemetaVersionNode(template.Node):
++ def render(self, context):
++ from telemeta import __version__
++ return __version__
++
++@register.tag
++def telemeta_version(parser, token):
++ "Get Telemeta version number"
++ return TelemetaVersionNode()
++
++class TelemetaUrlNode(template.Node):
++ def render(self, context):
++ from telemeta import __url__
++ return __url__
++
++@register.tag
++def telemeta_url(parser, token):
++ "Get Telemeta project homepage URL"
++ return TelemetaUrlNode()
++
++_js_escapes = (
++ ('\\', '\\\\'),
++ ('"', '\\"'),
++ ("'", "\\'"),
++ ('\n', '\\n'),
++ ('\r', '\\r'),
++ ('\b', '\\b'),
++ ('\f', '\\f'),
++ ('\t', '\\t'),
++ ('\v', '\\v'),
++ ('</', '<\\/'),
++)
++@register.filter
++def escapejs(value):
++ """Backslash-escapes characters for use in JavaScript strings."""
++ for bad, good in _js_escapes:
++ value = value.replace(bad, good)
++ return value
++
++@register.filter
++def build_query_string(vars):
++ """Build an HTTP query string out of a dict"""
++ if type(vars) == dict:
++ import urllib
++ args = []
++ for k, v in vars.iteritems():
++ if isinstance(v, db.models.Model):
++ v = v.pk
++ elif not isinstance(v, basestring):
++ v = unicode(v)
++ args.append(urlquote(k) + '=' + urlquote(v))
++
++ return "&".join(args)
++ return ''
++
++@register.filter
++def code_or_id(resource):
++ if resource.code:
++ return resource.code
++ else:
++ return resource.id
++
++@register.filter
++def is_item(resource):
++ return isinstance(resource, models.MediaItem)
++
++@register.filter
++def is_collection(resource):
++ return isinstance(resource, models.MediaCollection)
++
++@register.filter
++def to_dublincore(resource):
++ if isinstance(resource, models.MediaItem):
++ return dc.express_item(resource)
++ else:
++ return dc.express_collection(resource)
++
++class DescriptionListFieldNode(template.Node):
++ def __init__(self, model, attr, join_with = None, show_empty = False):
++ self.model = model
++ self.member = attr
++ self.join_with = join_with
++ self.show_empty = show_empty
++
++ def render(self, context):
++ try:
++ model = self.model.resolve(context)
++ if isinstance(self.member, template.Variable):
++ member = self.member.resolve(context)
++ else:
++ member = self.member
++ label = html.escape(capfirst(unicode(model.field_label(member))))
++ try:
++ value = getattr(model, member)
++ except AttributeError:
++ value = '<ERROR: no such field>'
++ except template.VariableDoesNotExist:
++ label = unicode(self.model) + '.' + self.member
++ value = '<ERROR: can\'t find variable>'
++
++ try:
++ value = value()
++ except TypeError:
++ pass
++ if self.join_with:
++ value = self.join_with.join([unicode(v) for v in value])
++ if not value:
++ value = ''
++ if value or self.show_empty:
++ value = html.escape(unicode(value))
++ markup = '<dt>%s</dt><dd>%s</dd>' % (label, value)
++ return markup
++
++ return ''
++
++@register.tag
++def dl_field(parser, token):
++ cut = token.split_contents()
++ join_with = None
++ show_empty = False
++ if len(cut) == 3:
++ tag_name, model, attr = cut
++ elif len(cut) == 4:
++ tag_name, model, attr, arg3 = cut
++ if arg3 == 'placeholder':
++ show_empty = True
++ else:
++ raise ValueError()
++ elif len(cut) >= 6:
++ tag_name, model, attr, arg3, arg4, arg5 = cut[0:6]
++ if arg3 == 'join' and arg4 == 'with'and arg5[0] == arg5[-1] and arg5[0] in ('"', "'"):
++ join_with = arg5[1:-1]
++ else:
++ raise ValueError()
++ if len(cut) > 6:
++ if cut[6] == 'placeholder':
++ show_empty = True
++ else:
++ raise ValueError();
++ else:
++ raise template.TemplateSyntaxError("%r tag: invalid arguments"
++ % token.contents.split()[0])
++
++ if attr[0] == attr[-1] and attr[0] in ('"', "'"):
++ attr = attr[1:-1]
++ else:
++ attr = template.Variable(attr)
++ model = template.Variable(model)
++ return DescriptionListFieldNode(model, attr, join_with=join_with, show_empty=show_empty)
++
++@register.filter
++def prepend(str, prefix):
++ if str:
++ return prefix + unicode(str)
++ return ''
++
++@register.simple_tag
++def field_label(model, field=None):
++ if isinstance(model, basestring):
++ model = getattr(models, model)
++
++ if not field:
++ return capfirst(unicode(model._meta.verbose_name))
++
++ return capfirst(unicode(model.field_label(field)))
++
++@register.simple_tag
++def field_value(object, member):
++ value = getattr(object, member)
++ try:
++ value = value()
++ except TypeError:
++ pass
++ return value
++
++@register.filter
++def is_none(value):
++ return value is None
++
++@register.filter
++def resources_num(value):
++ model = value.model
++ count = value.count()
++ label = str(count)
++ if model == models.MediaItem:
++ label = ungettext('%(count)d item', '%(count)d items', count) % {
++ 'count': count, }
++ elif model == models.MediaCollection:
++ label = ungettext('%(count)d collection', '%(count)d collections', count) % {
++ 'count': count, }
++
++ return label
++
++@register.filter
++def split(value, sep=','):
++ return value.split(sep)
++
++@register.simple_tag
++def variable_link(object, url_name, url_key):
++ return reverse(url_name, args=[field_value(object, url_key)])
++
++@register.filter
++def equals(value1, value2):
++ return value1 == value2
++
++@register.filter
++def render_flatpage(content):
++ parsed = ""
++ path = getattr(content, 'path', '')
++ if isinstance(content, basestring):
++ content = content.split("\n")
++
++ for line in content:
++ match = re.match('^(\.\. *(?:_[^:]*:|(?:\|\w+\|)? *image::) *)([^ ]+) *$', line)
++ if match:
++ directive, urlname = match.groups()
++ line = directive
++ try:
++ i = urlname.index('telemeta-')
++ except ValueError:
++ i = -1
++ if i == 0:
++ line += reverse(urlname)
++ elif urlname[:1] != '/':
++ line += reverse('telemeta-flatpage', args=[path + '/../' + urlname])
++ else:
++ line += urlname
++
++ parsed += line + "\n"
++
++ parts = publish_parts(source=smart_str(parsed), writer_name="html4css1", settings_overrides={})
++ return mark_safe('<div class="rst-content">\n' + force_unicode(parts["html_body"]) + '</div>')
++render_flatpage.is_safe = True
++
++@register.simple_tag
++def organization():
++ return settings.TELEMETA_ORGANIZATION
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++from model_tests import *
++from util_tests import *
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++# David LIPSZYC <davidlipszyc@gmail.com>
++
++import unittest
++from telemeta.models import *
++from datetime import datetime, timedelta
++
++class CollectionItemTestCase(unittest.TestCase):
++
++ def setUp(self):
++ "Create a test database based on objects created in Django"
++
++ self.david = User.objects.create(username="david", level="user")
++ self.olivier = User.objects.create(username="olivier", level="admin")
++
++ self.country = LocationType.objects.create(code="country", name="Country")
++ self.continent = LocationType.objects.create(code="continent", name="Continent")
++ self.city = LocationType.objects.create(code="city", name="City")
++
++ self.paris = Location.objects.create(name="Paris", type=Location.OTHER_TYPE, complete_type=self.city)
++ self.france = Location.objects.create(name="France", type=Location.COUNTRY, complete_type=self.country)
++ self.europe = Location.objects.create(name="Europe", type=Location.CONTINENT, complete_type=self.continent)
++ self.belgique = Location.objects.create(name="Belgique", type=Location.COUNTRY, complete_type=self.country)
++
++ self.europe.add_child(self.france)
++ self.france.add_child(self.paris)
++ self.europe.add_child(self.belgique)
++
++ self.a = EthnicGroup.objects.create(value="a")
++ self.b = EthnicGroup.objects.create(value="b")
++ self.c = EthnicGroup.objects.create(value="c")
++ self.d = EthnicGroup.objects.create(value="d")
++
++ self.persepolis = MediaCollection(id=1, code="CNRSMH_E_1970_001_002", reference="A1", title="persepolis",
++ creator="Abraham LINCOLN", collector="Friedrich HEINZ", year_published=2009, is_published=True,
++ recorded_from_year=1970, recorded_to_year=1980)
++
++ self.persepolis.save_with_revision(self.david)
++
++ self.volonte = MediaCollection(id=2, reference="A2", code="CNRSMH_I_1960_001", title="Volonté de puissance",
++ creator="Friedrich NIETZSCHE", collector="Jean AMORA", year_published=1999,
++ recorded_from_year=1960, recorded_to_year=2000)
++
++ self.volonte.save_with_revision(self.olivier)
++
++ self.nicolas = MediaCollection(id=3, reference="A3", code="CNRSMH_I_1967_123", title="petit nicolas",
++ creator="Georgette McKenic", collector="Paul MAILLE", year_published=1999,
++ recorded_from_year=1967, recorded_to_year=1968)
++
++ self.nicolas.save_with_revision(self.olivier)
++
++ self.item_1 = MediaItem(id=1, collection=self.persepolis, code="CNRSMH_E_1970_001_002_44",
++ recorded_from_date="1971-01-12", recorded_to_date="1971-02-24", location=self.paris,
++ ethnic_group=self.a, title="item 1", author="Mickael SHEPHERD", collector="Charles PREMIER",
++ comment="comment 1")
++
++ self.item_1.save_with_revision(self.david)
++
++ self.item_2 = MediaItem(id=2, collection=self.volonte, code="CNRSMH_I_1960_001_129",
++ recorded_from_date="1981-01-12", recorded_to_date="1991-02-24", location=self.france,
++ ethnic_group=self.a, title="item 2", author="Rick ROLL", comment="comment 2")
++
++ self.item_2.save_with_revision(self.david)
++
++ self.item_3 = MediaItem(id=3, collection=self.nicolas, code="CNRSMH_I_1967_123_456_01",
++ recorded_from_date="1968-01-12", recorded_to_date="1968-02-24", location=self.belgique,
++ ethnic_group=self.b, title="item 3", author="John SMITH", collector="Paul CARLOS",
++ comment="comment 3", )
++
++ self.item_3.save_with_revision(self.olivier)
++
++ self.item_4 = MediaItem(id=4, collection=self.persepolis, code="CNRSMH_E_1970_001_002_22_33",
++ recorded_from_date="1972-01-12", recorded_to_date="1972-02-24", location=self.europe,
++ ethnic_group=self.a, title="item 4", alt_title="I4", author="Keanu REAVES",
++ collector="Christina BARCELONA", comment="comment 4")
++
++ self.item_4.save_with_revision(self.olivier)
++
++ self.item_5 = MediaItem(id=5, collection=self.volonte,code="CNRSMH_I_1960_001_789_85_22",
++ approx_duration="00:05:00", recorded_from_date="1978-01-12", recorded_to_date="1978-02-24",
++ location=self.belgique, ethnic_group=self.a, title="item 5", alt_title="I5",
++ author="Simon PAUL", collector="Javier BARDEM",
++ comment="comment 5")
++
++ self.item_5.save_with_revision(self.olivier)
++
++ self.item_6 = MediaItem(id=6, collection=self.persepolis, code="CNRSMH_E_1970_001_002_90",
++ recorded_from_date="1968-01-12", recorded_to_date="1968-02-11", location=self.france,
++ ethnic_group=self.b, title="item 6", author="Paul ANDERSON",
++ collector="Jim CARLSON", comment="comment 10000")
++
++ self.item_6.save_with_revision(self.david)
++
++ self.collections = MediaCollection.objects.all()
++ self.items = MediaItem.objects.all()
++
++ def tearDown(self):
++ User.objects.all().delete()
++ LocationType.objects.all().delete()
++ Location.objects.all().delete()
++ EthnicGroup.objects.all().delete()
++ MediaCollection.objects.all().delete()
++ MediaItem.objects.all().delete()
++
++ def testQuickSearchOnCollections(self):
++ "Test quick_search property of MediaCollection class"
++ result = self.collections.quick_search("persepolis")
++ self.assertEquals(len(result), 1)
++ self.assertEquals(result[0], self.persepolis)
++ self.assertEquals(self.collections.quick_search("nietzsche")[0], self.volonte)
++ result = self.collections.quick_search("nicolas")
++ self.assertEquals(result[0], self.nicolas)
++
++ def testQuickSearchOnItems(self):
++ "Test quick_search property of MediaItem class"
++ result = self.items.quick_search("item").order_by("title")
++ self.assertEquals(result[0], self.item_1)
++ self.assertEquals(result[1], self.item_2)
++ self.assertEquals(result[2], self.item_3)
++ self.assertEquals(result[3], self.item_4)
++ self.assertEquals(result[4], self.item_5)
++ self.assertEquals(result[5], self.item_6)
++
++ def testWordSearch(self):
++ "Test quick_search property of MediaCollection class, specificly quick_search on collection title"
++ result = self.collections.quick_search("volonté puissance")
++ self.assertEquals(result[0], self.volonte)
++ result = self.collections.quick_search("puissance volonté")
++ self.assertEquals(result[0], self.volonte)
++ result = self.collections.quick_search("volonte puissance")
++ self.assertEquals(result[0], self.volonte)
++ result = self.collections.quick_search("puissance volonte")
++ self.assertEquals(result[0], self.volonte)
++
++ def testLocationSearch(self):
++ "Test by_country and by_continent properties of MediaCollection class"
++ self.assertEquals(self.collections.by_location(self.france)[0], self.persepolis)
++ self.assertEquals(self.collections.by_location(self.europe)[0], self.persepolis)
++ self.assertEquals(self.collections.by_location(self.belgique).order_by("title")[0], self.nicolas)
++ self.assertEquals(self.collections.by_location(self.belgique).order_by("title")[1], self.volonte)
++
++ def testRecordingYear(self):
++ "Test by_recording_year property of MediaCollection class"
++ self.assertEquals(self.collections.by_recording_year(1970, 1980)[0], self.persepolis)
++ result = self.collections.by_recording_year(1975).order_by("title")
++ self.assertEquals(result[0], self.persepolis)
++ self.assertEquals(result[1], self.volonte)
++
++ def testPublishYearOnCollection(self):
++ "Test by_publish_year property of MediaCollection class"
++ result=self.collections.by_publish_year(1999).order_by("title")
++ self.assertEquals(result[0], self.nicolas)
++ self.assertEquals(result[1], self.volonte)
++
++ def testEthnicGroup(self):
++ "Test by_ethnic_group property of MediaCollection class"
++ result=self.collections.by_ethnic_group(self.a).order_by("title")
++ self.assertEquals(result[0], self.persepolis)
++ self.assertEquals(result[1], self.volonte)
++
++ def testRecordingDate(self):
++ "Test by_recording_date property of MediaItem class"
++ result = self.items.by_recording_date("1968-01-01", "1972-12-12").order_by("title")
++ self.assertEquals(result[0], self.item_1)
++ self.assertEquals(result[1], self.item_3)
++ self.assertEquals(result[2], self.item_4)
++ self.assertEquals(result[3], self.item_6)
++ result = self.items.by_recording_date("1968-02-06").order_by("title")
++ self.assertEquals(result[0], self.item_3)
++ self.assertEquals(result[1], self.item_6)
++
++ def testTitle(self):
++ "Test by_title property of MediaItem class"
++ result = self.items.by_title("item").order_by("title")
++ self.assertEquals(result[0], self.item_1)
++ self.assertEquals(result[1], self.item_2)
++ self.assertEquals(result[2], self.item_3)
++ self.assertEquals(result[3], self.item_4)
++ self.assertEquals(result[4], self.item_5)
++ self.assertEquals(result[5], self.item_6)
++ self.item_2.title = ''
++ self.item_2.save()
++ self.item_5.title = ''
++ self.item_5.save()
++ result = self.items.by_title("volonté").order_by("title")
++ self.assertEquals(result[0], self.item_2)
++ self.assertEquals(result[1], self.item_5)
++ result = self.items.by_title("puissance volonté").order_by("title")
++ self.assertEquals(result[0], self.item_2)
++ self.assertEquals(result[1], self.item_5)
++
++ def testPublishYearOnItem(self):
++ "Test by_publish_year property of MediaItem class"
++ result = self.items.by_publish_year(1999).order_by("title")
++ self.assertEquals(result[0], self.item_2)
++ self.assertEquals(result[1], self.item_3)
++ self.assertEquals(result[2], self.item_5)
++
++ def testWordSearchCore(self):
++ "Test word_search property of CoreQuerySet class"
++ self.assertEquals(self.collections.word_search("title", "volonté")[0], self.volonte)
++ self.assertEquals(self.collections.word_search("code", "CNRSMH_E_1970_001_002")[0], self.persepolis)
++ self.assertEquals(self.items.word_search("code", "CNRSMH_E_1970_001_002_44")[0], self.item_1)
++ result = self.items.word_search("comment", "comment").order_by("title")
++ self.assertEquals(result[0], self.item_1)
++ self.assertEquals(result[1], self.item_2)
++ self.assertEquals(result[2], self.item_3)
++ self.assertEquals(result[3], self.item_4)
++ self.assertEquals(result[4], self.item_5)
++ self.assertEquals(result[5], self.item_6)
++
++ def testByChangeTimeOnCollection(self):
++ "Test by_change_time property of MediaCollection class"
++ now = datetime.now()
++ result = self.collections.by_change_time(now - timedelta(hours=1), now).order_by("title")
++ self.assertEquals(result[0], self.persepolis)
++
++ def testByChangeTimeOnItem(self):
++ "Test by_change_time property of MediaItem class"
++ now = datetime.now()
++ result = self.items.by_change_time(now - timedelta(hours=1), now).order_by("title")
++ self.assertEquals(result[0], self.item_1)
++
++ def testWithoutCollection(self):
++ "Test without_collection property of MediaItem class"
++ self.assertEquals(self.items.without_collection().count(), 0)
++
++ def testCodeRequired(self):
++ "Test that a proper failure occur when a collection code isn't provided"
++ c = MediaCollection()
++ try:
++ c.save_with_revision(self.olivier)
++ except RequiredFieldError, e:
++ self.assertEquals(e.field.name, 'code')
++ else:
++ self.fail("No exception raised")
++
++ def testDomForeignKey(self):
++ "Test DOM foreign key embedding"
++ doc = self.item_4.to_dom()
++ self.assertEquals(doc.getElementsByTagName('collection')[0].getAttribute('key'), str(self.persepolis.id))
++
++ def testLocationRelation(self):
++ "Test location country and continent resolving"
++ self.assertEquals(self.france, self.item_1.location.countries()[0])
++ self.assertEquals(self.europe, self.item_1.location.continents()[0])
++ self.assertEquals(self.france, self.item_2.location.countries()[0])
++ self.assertEquals(self.europe, self.item_2.location.continents()[0])
++
++ def testCollectionCountries(self):
++ "Test the MediaCollection.countries() method"
++ self.assertEquals(self.volonte.countries(), [self.belgique, self.france])
++
++
++class RelatedDeleteTestCase(unittest.TestCase):
++ def setUp(self):
++ self.publisher1 = Publisher.objects.create(id=1, value='publisher1')
++ self.publisher2 = Publisher.objects.create(id=2, value='publisher2')
++ self.pubcollection1 = PublisherCollection.objects.create(publisher=self.publisher1, value='pub1_collection1')
++
++ self.rights1 = LegalRight.objects.create(id=1, value='right1')
++
++ MediaCollection.objects.create(id=1, code='CNRSMH_I_1256_456', title='Collection1',
++ publisher=self.publisher1, publisher_collection=self.pubcollection1,
++ legal_rights=self.rights1)
++ MediaCollection.objects.create(id=2, code='CNRSMH_I_1256_123', title='Collection2',
++ publisher=self.publisher2)
++
++ def tearDown(self):
++ Publisher.objects.all().delete()
++ PublisherCollection.objects.all().delete()
++ LegalRight.objects.all().delete()
++ MediaCollection.objects.all().delete()
++
++ def testOnDeleteSetNull(self):
++ self.rights1.delete()
++ self.assertEquals(LegalRight.objects.filter(id=1).count(), 0)
++ q = MediaCollection.objects.filter(id=1)
++ self.assertEquals(q.count(), 1)
++ self.assertEquals(q[0].legal_rights, None)
++
++ def testOnDeleteCascade(self):
++ self.publisher1.delete()
++ self.assertEquals(Publisher.objects.filter(id=1).count(), 0)
++ self.assertEquals(Publisher.objects.filter(id=2).count(), 1)
++ self.assertEquals(PublisherCollection.objects.filter(id=1).count(), 0)
++
++ q = MediaCollection.objects.filter(id=1)
++ self.assertEquals(q.count(), 1)
++ self.assertEquals(q[0].publisher, None)
++ self.assertEquals(q[0].publisher_collection, None)
++
++ q = MediaCollection.objects.filter(id=2)
++ self.assertEquals(q.count(), 1)
++ self.assertEquals(q[0].publisher, self.publisher2)
++ self.assertEquals(q[0].publisher_collection, None)
++
++ def testOnDeleteMultiple(self):
++ Publisher.objects.all().delete()
++ self.assertEquals(Publisher.objects.count(), 0)
++ self.assertEquals(PublisherCollection.objects.count(), 0)
++ self.assertEquals(MediaCollection.objects.count(), 2)
++
++
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007-2010 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Authors: Olivier Guilyardi <olivier@samalyse.com>
++
++import unittest
++from telemeta.util.unaccent import unaccent_icmp
++
++class UnaccentTestCase(unittest.TestCase):
++ def testSorting(self):
++ strings = [u'Métro', u'évasion', u'àccent', u'È', u'île', u'arrivée', u'elle']
++ strings.sort(unaccent_icmp)
++ expected = [u'àccent', u'arrivée', u'È', u'elle', u'évasion', u'île', u'Métro']
++ self.assertEquals(strings, expected)
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++#
++# Copyright (c) 2007-2009 Guillaume Pellerin <yomguy@parisson.com>
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++#
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++from django.conf.urls.defaults import *
++from telemeta.models import MediaItem, MediaCollection
++from telemeta.web.base import WebView
++import os.path
++import telemeta.config
++
++telemeta.config.check()
++
++# initialization
++web_view = WebView()
++
++# query sets for Django generic views
++all_items = { 'queryset': MediaItem.objects.enriched(), }
++all_collections = { 'queryset': MediaCollection.objects.enriched(), }
++
++# ID's regular expressions
++export_extensions = "|".join(web_view.list_export_extensions())
++
++htdocs = os.path.dirname(__file__) + '/htdocs'
++
++urlpatterns = patterns('',
++ url(r'^$', web_view.index, name="telemeta-home"),
++
++ # items
++ url(r'^items/$', 'django.views.generic.list_detail.object_list',
++ dict(all_items, paginate_by=20, template_name="telemeta/mediaitem_list.html"),
++ name="telemeta-items"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/$', web_view.item_detail,
++ name="telemeta-item-detail"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/dc/$', web_view.item_detail,
++ {'template': 'telemeta/mediaitem_detail_dc.html'},
++ name="telemeta-item-dublincore"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/dc/xml/$', web_view.item_detail,
++ {'format': 'dublin_core_xml'},
++ name="telemeta-item-dublincore-xml"),
++ url(r'^items/download/(?P<public_id>[A-Z0-9_]+)\.(?P<extension>'
++ + export_extensions + ')$',
++ web_view.item_export,
++ name="telemeta-item-export"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/visualize/(?P<visualizer_id>[0-9a-z_]+)/(?P<width>[0-9A-Z]+)x(?P<height>[0-9A-Z]+)/$',
++ web_view.item_visualize,
++ name="telemeta-item-visualize"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/analyze/(?P<analyzer_id>[0-9a-z_]+)/$',
++ web_view.item_analyze,
++ name="telemeta-item-analyze"),
++ url(r'^items/(?P<public_id>[A-Z0-9_]+)/item_xspf.xml$',
++ web_view.item_playlist,
++ dict(template="telemeta/mediaitem_xspf.xml", mimetype="application/xspf+xml"),
++ name="telemeta-item-xspf"),
++
++ # collections
++ url(r'^collections/$', 'django.views.generic.list_detail.object_list',
++ dict(all_collections, paginate_by=20,
++ template_name="telemeta/collection_list.html"),
++ name="telemeta-collections"),
++ url(r'^collections/?page=(?P<page>[0-9]+)$',
++ 'django.views.generic.list_detail.object_list',
++ dict(all_collections, paginate_by=20)),
++ url(r'^collections/(?P<public_id>[A-Z0-9_]+)/$', web_view.collection_detail,
++ dict(template="telemeta/collection_detail.html"), name="telemeta-collection-detail"),
++ url(r'^collections/(?P<public_id>[A-Z0-9_]+)/dc/$', web_view.collection_detail,
++ dict(template="telemeta/collection_detail_dc.html"), name="telemeta-collection-dublincore"),
++ url(r'^collections/(?P<public_id>[A-Z0-9_]+)/collection_xspf.xml$',
++ web_view.collection_playlist,
++ dict(template="telemeta/collection_xspf.xml", mimetype="application/xspf+xml"),
++ name="telemeta-collection-xspf"),
++ url(r'^collections/(?P<public_id>[A-Z0-9_]+)/collection.m3u$',
++ web_view.collection_playlist,
++ dict(template="telemeta/collection.m3u", mimetype="audio/mpegurl"),
++ name="telemeta-collection-m3u"),
++
++ # search
++ url(r'^search/$', web_view.search, name="telemeta-search"),
++ url(r'^search/collections/$', web_view.search, {'type': 'collections'},
++ name="telemeta-search-collections"),
++ url(r'^search/items/$', web_view.search, {'type': 'items'},
++ name="telemeta-search-items"),
++ url(r'^search/criteria/$', web_view.edit_search, name="telemeta-search-criteria"),
++ url(r'^complete_location/$', web_view.complete_location, name="telemeta-complete-location"),
++
++ # administration
++ url(r'^admin/$', web_view.admin_index, name="telemeta-admin"),
++
++ # enumerations administration
++ url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/$',
++ web_view.edit_enumeration ,
++ name="telemeta-enumeration-edit"),
++ url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/add/$',
++ web_view.add_to_enumeration,
++ name="telemeta-enumeration-add"),
++ url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/update/$',
++ web_view.update_enumeration,
++ name="telemeta-enumeration-update"),
++ url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/'
++ + r'(?P<value_id>[0-9]+)/$',
++ web_view.edit_enumeration_value,
++ name="telemeta-enumeration-record-edit"),
++ url(r'^admin/enumerations/(?P<enumeration_id>[0-9a-z]+)/'
++ + r'(?P<value_id>[0-9]+)/update/$',
++ web_view.update_enumeration_value,
++ name="telemeta-enumeration-record-update"),
++
++ # Geographic browsing
++ url(r'^geo/$', web_view.list_continents, name="telemeta-geo-continents"),
++ url(r'^geo/(?P<continent>[a-z_]+)/$', web_view.list_countries,
++ name="telemeta-geo-countries"),
++ url(r'^geo/collections/(?P<continent>[a-z_]+)/(?P<country>[a-z_]+)/$',
++ web_view.list_country_collections,
++ name="telemeta-geo-country-collections"),
++ url(r'^geo/items/(?P<continent>[a-z_]+)/(?P<country>[a-z_]+)/$',
++ web_view.list_country_items,
++ name="telemeta-geo-country-items"),
++ url(r'^geo/country_info/(?P<id>[0-9A-Z]+)/$',
++ web_view.country_info, name="telemeta-country-info"),
++
++ # CSS+Images (FIXME: for developement only)
++ url(r'^css/(?P<path>.*)$', 'django.views.static.serve',
++ {'document_root': htdocs+'/css'},
++ name="telemeta-css"),
++ url(r'^images/(?P<path>.*)$', 'django.views.static.serve',
++ {'document_root': htdocs+'/images'},
++ name="telemeta-images"),
++ url(r'^js/(?P<path>.*)$', 'django.views.static.serve',
++ {'document_root': htdocs+'/js'},
++ name="telemeta-js"),
++ url(r'^swf/(?P<path>.*)$', 'django.views.static.serve',
++ {'document_root': htdocs+'/swf'},
++ name="telemeta-swf"),
++ url(r'^timeside/(?P<path>.*)$', 'django.views.static.serve',
++ {'document_root': htdocs+'/timeside'},
++ name="telemeta-timeside"),
++
++ # Flat pages
++ url(r'^page/(?P<path>.*)$', web_view.render_flatpage, name="telemeta-flatpage"),
++
++ # OAI-PMH Data Provider
++ url(r'^oai/.*$', web_view.handle_oai_request, name="telemeta-oai"),
++
++ # Authentication
++ url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'telemeta/login.html'},
++ name="telemeta-login"),
++ url(r'^logout/$', web_view.logout, name="telemeta-logout"),
++)
--- /dev/null
--- /dev/null
++from telemeta.util import *
--- /dev/null
--- /dev/null
++
++import logging
++
++class Logger:
++ """A logging object"""
++
++ def __init__(self, file):
++ self.logger = logging.getLogger('myapp')
++ self.hdlr = logging.FileHandler(file)
++ self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
++ self.hdlr.setFormatter(self.formatter)
++ self.logger.addHandler(self.hdlr)
++ self.logger.setLevel(logging.INFO)
++
++ def write_info(self, message):
++ self.logger.info(message)
++
++ def write_error(self, message):
++ self.logger.error(message)
++
++ def debug(self, msg):
++ self.logger.error(message)
++
--- /dev/null
--- /dev/null
++# This file by Fredrik Lundh from:
++# http://effbot.org/zone/unicode-convert.htm
++# http://effbot.python-hosting.com/file/stuff/sandbox/text/unaccent.py
++
++# use a dynamically populated translation dictionary to remove accents
++# from a string
++
++import unicodedata, sys
++
++CHAR_REPLACEMENT = {
++ # latin-1 characters that don't have a unicode decomposition
++ 0xc6: u"AE", # LATIN CAPITAL LETTER AE
++ 0xd0: u"D", # LATIN CAPITAL LETTER ETH
++ 0xd8: u"OE", # LATIN CAPITAL LETTER O WITH STROKE
++ 0xde: u"Th", # LATIN CAPITAL LETTER THORN
++ 0xdf: u"ss", # LATIN SMALL LETTER SHARP S
++ 0xe6: u"ae", # LATIN SMALL LETTER AE
++ 0xf0: u"d", # LATIN SMALL LETTER ETH
++ 0xf8: u"oe", # LATIN SMALL LETTER O WITH STROKE
++ 0xfe: u"th", # LATIN SMALL LETTER THORN
++ }
++
++##
++# Translation dictionary. Translation entries are added to this
++# dictionary as needed.
++
++class UnaccentedMap(dict):
++
++ ##
++ # Maps a unicode character code (the key) to a replacement code
++ # (either a character code or a unicode string).
++
++ def mapchar(self, key):
++ ch = self.get(key)
++ if ch is not None:
++ return ch
++ de = unicodedata.decomposition(unichr(key))
++ if de:
++ try:
++ ch = int(de.split(None, 1)[0], 16)
++ except (IndexError, ValueError):
++ ch = key
++ else:
++ ch = CHAR_REPLACEMENT.get(key, key)
++ self[key] = ch
++ return ch
++
++ if sys.version >= "2.5":
++ # use __missing__ where available
++ __missing__ = mapchar
++ else:
++ # otherwise, use standard __getitem__ hook (this is slower,
++ # since it's called for each character)
++ __getitem__ = mapchar
++
++
++_map = UnaccentedMap()
++
++def unaccent(str):
++ return str.translate(_map)
++
++def unaccent_icmp(str1, str2):
++ str1 = unaccent(str1).lower()
++ str2 = unaccent(str2).lower()
++ if str1 > str2:
++ return 1
++
++ if str1 < str2:
++ return -1
++
++ return 0
--- /dev/null
--- /dev/null
++#import telemeta.web.base
++#import telemeta.web.pages
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++# Copyright (C) 2007 Samalyse SARL
++
++# This software is a computer program whose purpose is to backup, analyse,
++# transcode and stream any audio content with its metadata over a web frontend.
++
++# This software is governed by the CeCILL license under French law and
++# abiding by the rules of distribution of free software. You can use,
++# modify and/ or redistribute the software under the terms of the CeCILL
++# license as circulated by CEA, CNRS and INRIA at the following URL
++# "http://www.cecill.info".
++
++# As a counterpart to the access to the source code and rights to copy,
++# modify and redistribute granted by the license, users are provided only
++# with a limited warranty and the software's author, the holder of the
++# economic rights, and the successive licensors have only limited
++# liability.
++
++# In this respect, the user's attention is drawn to the risks associated
++# with loading, using, modifying and/or developing or reproducing the
++# software by the user in light of its specific status of free software,
++# that may mean that it is complicated to manipulate, and that also
++# therefore means that it is reserved for developers and experienced
++# professionals having in-depth computer knowledge. Users are therefore
++# encouraged to load and test the software's suitability as regards their
++# requirements in conditions enabling the security of their systems and/or
++# data to be ensured and, more generally, to use and operate it in the
++# same conditions as regards security.
++
++# The fact that you are presently reading this means that you have had
++# knowledge of the CeCILL license and that you accept its terms.
++
++# Author: Olivier Guilyardi <olivier@samalyse.com>
++
++import re
++import os
++import sys
++import datetime
++import timeside
++
++from django.template import RequestContext, loader
++from django import template
++from django.http import HttpResponse
++from django.http import Http404
++from django.shortcuts import render_to_response, redirect
++from django.views.generic import list_detail
++from django.conf import settings
++from django.contrib import auth
++from django.contrib.auth.decorators import login_required
++
++from telemeta.models import MediaItem, Location, MediaCollection, EthnicGroup
++from telemeta.models import dublincore, Enumeration
++import telemeta.interop.oai as oai
++from telemeta.interop.oaidatasource import TelemetaOAIDataSource
++from django.core.exceptions import ObjectDoesNotExist
++from telemeta.util.unaccent import unaccent
++from telemeta.util.unaccent import unaccent_icmp
++from telemeta.util.logger import Logger
++import telemeta.web.pages as pages
++
++def render(request, template, data = None, mimetype = None):
++ return render_to_response(template, data, context_instance=RequestContext(request),
++ mimetype=mimetype)
++
++def stream_from_file(file):
++ chunk_size = 0x1000
++ f = open(file, 'r')
++ while True:
++ _chunk = f.read(chunk_size)
++ if not len(_chunk):
++ break
++ yield _chunk
++ f.close()
++
++def stream_from_processor(decoder, processor):
++ while True:
++ frames, eod = decoder.process()
++ buffer, eod_proc = processor.process(frames, eod)
++ yield buffer
++ if eod_proc:
++ break
++
++
++class WebView:
++ """Provide web UI methods"""
++
++ graphers = timeside.core.processors(timeside.api.IGrapher)
++ decoders = timeside.core.processors(timeside.api.IDecoder)
++ encoders= timeside.core.processors(timeside.api.IEncoder)
++ analyzers = timeside.core.processors(timeside.api.IAnalyzer)
++ logger = Logger('/tmp/telemeta.log')
++
++ def index(self, request):
++ """Render the homepage"""
++
++ template = loader.get_template('telemeta/index.html')
++ ids = [id for id in MediaItem.objects.all().values_list('id', flat=True).order_by('?')[0:4]]
++ items = MediaItem.objects.enriched().filter(pk__in=ids)
++
++ context = RequestContext(request, {
++ 'page_content': pages.get_page_content(request, 'parts/home', ignore_slash_issue=True),
++ 'items': items})
++ return HttpResponse(template.render(context))
++
++ def collection_detail(self, request, public_id, template=''):
++ collection = MediaCollection.objects.get(public_id=public_id)
++ return render(request, template, {'collection': collection})
++
++
++ def item_detail(self, request, public_id, template='telemeta/mediaitem_detail.html'):
++ """Show the details of a given item"""
++ item = MediaItem.objects.get(public_id=public_id)
++
++ formats = []
++ for encoder in self.encoders:
++ formats.append({'name': encoder.format(), 'extension': encoder.file_extension()})
++
++ graphers = []
++ for grapher in self.graphers:
++ graphers.append({'name':grapher.name(), 'id': grapher.id()})
++ if request.REQUEST.has_key('grapher_id'):
++ grapher_id = request.REQUEST['grapher_id']
++ else:
++ grapher_id = 'waveform'
++
++ analyzers = [{'name':'','id':'','unit':'','value':''}]
++ # TODO: override timeside analyzer process when caching : write results to XML file in data/
++ self.analyzer_mode = 1
++
++ if self.analyzer_mode:
++ analyzers_sub = []
++ if item.file:
++ audio = os.path.join(os.path.dirname(__file__), item.file.path)
++ decoder = timeside.decoder.FileDecoder(audio)
++ self.pipe = decoder
++ for analyzer in self.analyzers:
++ subpipe = analyzer()
++ analyzers_sub.append(subpipe)
++ self.pipe = self.pipe | subpipe
++ self.pipe.run()
++
++ for analyzer in analyzers_sub:
++ if item.file:
++ value = analyzer.result()
++ if analyzer.id() == 'duration':
++ approx_value = int(round(value))
++ item.approx_duration = approx_value
++ item.save()
++ value = datetime.timedelta(0,value)
++ else:
++ value = 'N/A'
++
++ analyzers.append({'name':analyzer.name(),
++ 'id':analyzer.id(),
++ 'unit':analyzer.unit(),
++ 'value':str(value)})
++
++ return render(request, template,
++ {'item': item, 'export_formats': formats,
++ 'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers,
++ 'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', False)
++ })
++
++ def item_analyze(self, request, public_id):
++ # TODO: return an XML stream of the analyzed metadata
++ # response = HttpResponse(stream_from_file(media), mimetype = mime_type)
++ # return response
++ pass
++
++ def item_visualize(self, request, public_id, visualizer_id, width, height):
++ mime_type = 'image/png'
++ grapher_id = visualizer_id
++ for grapher in self.graphers:
++ if grapher.id() == grapher_id:
++ break
++
++ if grapher.id() != grapher_id:
++ raise Http404
++
++ media = settings.TELEMETA_DATA_CACHE_DIR + \
++ os.sep + '_'.join([public_id, grapher_id, width, height]) + '.png'
++
++ #graph.set_colors((255,255,255), 'purple')
++
++ if not os.path.exists(media):
++ item = MediaItem.objects.get(public_id=public_id)
++ audio = os.path.join(os.path.dirname(__file__), item.file.path)
++ decoder = timeside.decoder.FileDecoder(audio)
++ graph = grapher(width=int(width), height=int(height))
++ pipe = decoder | graph
++ pipe.run()
++ graph.render(media)
++
++ response = HttpResponse(stream_from_file(media), mimetype = mime_type)
++ return response
++
++ def list_export_extensions(self):
++ "Return the recognized item export file extensions, as a list"
++ list = []
++ for encoder in self.encoders:
++ list.append(encoder.file_extension())
++ return list
++
++ def item_export(self, request, public_id, extension):
++ """Export a given media item in the specified format (OGG, FLAC, ...)"""
++
++ if extension != 'mp3' and not getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', False):
++ raise Http404 # FIXME: should be some sort of permissions denied error
++
++ for encoder in self.encoders:
++ if encoder.file_extension() == extension:
++ break
++
++ if encoder.file_extension() != extension:
++ raise Http404('Unknown export file extension: %s' % extension)
++
++ mime_type = encoder.mime_type()
++ cache_dir = settings.TELEMETA_EXPORT_CACHE_DIR
++ media = cache_dir + os.sep + public_id + '.' + encoder.file_extension()
++
++ item = MediaItem.objects.get(public_id=public_id)
++ audio = os.path.join(os.path.dirname(__file__), item.file.path)
++ decoder = timeside.decoder.FileDecoder(audio)
++# print decoder.format(), mime_type
++ if decoder.format() == mime_type:
++ # source > stream
++ response = HttpResponse(stream_from_file(audio), mimetype = mime_type)
++ else:
++ if not os.path.exists(media):
++ # source > encoder > stream
++ decoder.setup()
++ proc = encoder(media)
++ proc.setup(decoder.channels(), decoder.samplerate())
++ #metadata = dublincore.express_item(item).to_list()
++ #enc.set_metadata(metadata)
++ response = HttpResponse(stream_from_processor(decoder, proc), mimetype = mime_type)
++ else:
++ response = HttpResponse(stream_from_file(media), mimetype = mime_type)
++
++ response['Content-Disposition'] = 'attachment'
++ return response
++
++ def edit_search(self, request, criteria=None):
++ year_min, year_max = MediaCollection.objects.all().recording_year_range()
++ rec_years = year_min and year_max and range(year_min, year_max + 1) or []
++ year_min, year_max = MediaCollection.objects.all().publishing_year_range()
++ pub_years = year_min and year_max and range(year_min, year_max + 1) or []
++ return render(request, 'telemeta/search_criteria.html', {
++ 'rec_years': rec_years,
++ 'pub_years': pub_years,
++ 'ethnic_groups': MediaItem.objects.all().ethnic_groups(),
++ 'criteria': criteria
++ })
++
++ def complete_location(self, request, with_items=True):
++ input = request.REQUEST
++
++ token = input['q']
++ limit = int(input['limit'])
++ if with_items:
++ locations = MediaItem.objects.all().locations()
++ else:
++ locations = Location.objects.all()
++
++ locations = locations.filter(name__istartswith=token).order_by('name')[:limit]
++ data = [unicode(l) + " (%d items)" % l.items().count() for l in locations]
++
++ return HttpResponse("\n".join(data))
++
++ def search(self, request, type = None):
++ """Perform a search through collections and items metadata"""
++ collections = MediaCollection.objects.enriched()
++ items = MediaItem.objects.enriched()
++ input = request.REQUEST
++ criteria = {}
++
++ switch = {
++ 'pattern': lambda value: (
++ collections.quick_search(value),
++ items.quick_search(value)),
++ 'title': lambda value: (
++ collections.word_search('title', value),
++ items.by_title(value)),
++ 'location': lambda value: (
++ collections.by_location(Location.objects.get(name=value)),
++ items.by_location(Location.objects.get(name=value))),
++ 'continent': lambda value: (
++ collections.by_continent(value),
++ items.filter(continent = value)),
++ 'ethnic_group': lambda value: (
++ collections.by_ethnic_group(value),
++ items.filter(ethnic_group = value),
++ EthnicGroup.objects.get(pk=value)),
++ 'creator': lambda value: (
++ collections.word_search('creator', value),
++ items.word_search('collection__creator', value)),
++ 'collector': lambda value: (
++ collections.by_fuzzy_collector(value),
++ items.by_fuzzy_collector(value)),
++ 'rec_year_from': lambda value: (
++ collections.by_recording_year(int(value), int(input.get('rec_year_to', value))),
++ items.by_recording_date(datetime.date(int(value), 1, 1),
++ datetime.date(int(input.get('rec_year_to', value)), 12, 31))),
++ 'rec_year_to': lambda value: (collections, items),
++ 'pub_year_from': lambda value: (
++ collections.by_publish_year(int(value), int(input.get('pub_year_to', value))),
++ items.by_publish_year(int(value), int(input.get('pub_year_to', value)))),
++ 'pub_year_to': lambda value: (collections, items),
++ }
++
++ for key, value in input.items():
++ func = switch.get(key)
++ if func and value and value != "0":
++ try:
++ res = func(value)
++ if len(res) > 2:
++ collections, items, value = res
++ else:
++ collections, items = res
++ except ObjectDoesNotExist:
++ collections = collections.none()
++ items = items.none()
++
++ criteria[key] = value
++
++ if type is None:
++ if collections.count() and not items.count():
++ type = 'collections'
++ else:
++ type = 'items'
++
++ if type == 'items':
++ objects = items
++ else:
++ objects = collections
++
++ return list_detail.object_list(request, objects,
++ template_name='telemeta/search_results.html', paginate_by=20,
++ extra_context={'criteria': criteria, 'collections_num': collections.count(),
++ 'items_num': items.count(), 'type' : type})
++
++ def __get_enumerations_list(self):
++ from django.db.models import get_models
++ models = get_models(telemeta.models)
++
++ enumerations = []
++ for model in models:
++ if issubclass(model, Enumeration):
++ enumerations.append({"name": model._meta.verbose_name,
++ "id": model._meta.module_name})
++
++ cmp = lambda obj1, obj2: unaccent_icmp(obj1['name'], obj2['name'])
++ enumerations.sort(cmp)
++ return enumerations
++
++ def __get_admin_context_vars(self):
++ return {"enumerations": self.__get_enumerations_list()}
++
++ @login_required
++ def admin_index(self, request):
++ return render(request, 'telemeta/admin.html', self. __get_admin_context_vars())
++
++ def __get_enumeration(self, id):
++ from django.db.models import get_models
++ models = get_models(telemeta.models)
++ for model in models:
++ if model._meta.module_name == id:
++ break
++
++ if model._meta.module_name != id:
++ return None
++
++ return model
++
++ @login_required
++ def edit_enumeration(self, request, enumeration_id):
++
++ enumeration = self.__get_enumeration(enumeration_id)
++ if enumeration == None:
++ raise Http404
++
++ vars = self.__get_admin_context_vars()
++ vars["enumeration_id"] = enumeration._meta.module_name
++ vars["enumeration_name"] = enumeration._meta.verbose_name
++ vars["enumeration_values"] = enumeration.objects.all()
++ return render(request, 'telemeta/enumeration_edit.html', vars)
++
++ @login_required
++ def add_to_enumeration(self, request, enumeration_id):
++
++ enumeration = self.__get_enumeration(enumeration_id)
++ if enumeration == None:
++ raise Http404
++
++ enumeration_value = enumeration(value=request.POST['value'])
++ enumeration_value.save()
++
++ return self.edit_enumeration(request, enumeration_id)
++
++ @login_required
++ def update_enumeration(self, request, enumeration_id):
++
++ enumeration = self.__get_enumeration(enumeration_id)
++ if enumeration == None:
++ raise Http404
++
++ if request.POST.has_key("remove"):
++ enumeration.objects.filter(id__in=request.POST.getlist('sel')).delete()
++
++ return self.edit_enumeration(request, enumeration_id)
++
++ @login_required
++ def edit_enumeration_value(self, request, enumeration_id, value_id):
++
++ enumeration = self.__get_enumeration(enumeration_id)
++ if enumeration == None:
++ raise Http404
++
++ vars = self.__get_admin_context_vars()
++ vars["enumeration_id"] = enumeration._meta.module_name
++ vars["enumeration_name"] = enumeration._meta.verbose_name
++ vars["enumeration_record"] = enumeration.objects.get(id__exact=value_id)
++ return render(request, 'telemeta/enumeration_edit_value.html', vars)
++
++ @login_required
++ def update_enumeration_value(self, request, enumeration_id, value_id):
++
++ if request.POST.has_key("save"):
++ enumeration = self.__get_enumeration(enumeration_id)
++ if enumeration == None:
++ raise Http404
++
++ record = enumeration.objects.get(id__exact=value_id)
++ record.value = request.POST["value"]
++ record.save()
++
++ return self.edit_enumeration(request, enumeration_id)
++
++ def collection_playlist(self, request, public_id, template, mimetype):
++ try:
++ collection = MediaCollection.objects.get(public_id=public_id)
++ except ObjectDoesNotExist:
++ raise Http404
++
++ template = loader.get_template(template)
++ context = RequestContext(request, {'collection': collection, 'host': request.META['HTTP_HOST']})
++ return HttpResponse(template.render(context), mimetype=mimetype)
++
++ def item_playlist(self, request, public_id, template, mimetype):
++ try:
++ item = MediaItem.objects.get(public_id=public_id)
++ except ObjectDoesNotExist:
++ raise Http404
++
++ template = loader.get_template(template)
++ context = RequestContext(request, {'item': item, 'host': request.META['HTTP_HOST']})
++ return HttpResponse(template.render(context), mimetype=mimetype)
++
++ def list_continents(self, request):
++ continents = MediaItem.objects.all().countries(group_by_continent=True)
++ return render(request, 'telemeta/geo_continents.html',
++ {'continents': continents, 'gmap_key': settings.TELEMETA_GMAP_KEY })
++
++ def country_info(self, request, id):
++ country = Location.objects.get(pk=id)
++ return render(request, 'telemeta/country_info.html', {
++ 'country': country, 'continent': country.continents()[0]})
++
++ def list_countries(self, request, continent):
++ continent = Location.objects.by_flatname(continent)[0]
++ countries = MediaItem.objects.by_location(continent).countries()
++
++ return render(request, 'telemeta/geo_countries.html', {
++ 'continent': continent,
++ 'countries': countries
++ })
++
++ def list_country_collections(self, request, continent, country):
++ continent = Location.objects.by_flatname(continent)[0]
++ country = Location.objects.by_flatname(country)[0]
++ objects = MediaCollection.objects.enriched().by_location(country)
++ return list_detail.object_list(request, objects,
++ template_name='telemeta/geo_country_collections.html', paginate_by=20,
++ extra_context={'country': country, 'continent': continent})
++
++ def list_country_items(self, request, continent, country):
++ continent = Location.objects.by_flatname(continent)[0]
++ country = Location.objects.by_flatname(country)[0]
++ objects = MediaItem.objects.enriched().by_location(country)
++ return list_detail.object_list(request, objects,
++ template_name='telemeta/geo_country_items.html', paginate_by=20,
++ extra_context={'country': country, 'continent': continent})
++
++ def handle_oai_request(self, request):
++ url = 'http://' + request.META['HTTP_HOST'] + request.path
++ datasource = TelemetaOAIDataSource()
++ admin = settings.ADMINS[0][1]
++ provider = oai.DataProvider(datasource, "Telemeta", url, admin)
++ args = request.GET.copy()
++ args.update(request.POST)
++ return HttpResponse(provider.handle(args), mimetype='text/xml')
++
++ def render_flatpage(self, request, path):
++ try:
++ content = pages.get_page_content(request, path)
++ except pages.MalformedPagePath:
++ return redirect(request.path + '/')
++
++ if isinstance(content, pages.PageAttachment):
++ return HttpResponse(content, content.mimetype())
++ else:
++ return render(request, 'telemeta/flatpage.html', {'page_content': content })
++
++ def logout(self, request):
++ auth.logout(request)
++ return redirect('telemeta-home')
--- /dev/null
--- /dev/null
++from django.conf import settings
++import re
++import os
++import telemeta
++import mimetypes
++
++PAGES_ROOT = os.path.join(os.path.dirname(telemeta.__file__), 'pages')
++
++class PageTextContent(object):
++ def __init__(self, filename, path):
++ self.filename = filename
++ self.path = path
++
++ def __iter__(self):
++ file = open(self.filename, 'r')
++ for line in file:
++ yield line.rstrip('\r\n')
++ file.close()
++
++ def __unicode__(self):
++ file = open(self.filename, 'r')
++ data = file.read()
++ file.close()
++ return data
++
++class PageAttachment(object):
++ def __init__(self, filename, path):
++ self.filename = filename
++ self.path = path
++
++ def mimetype(self):
++ type, encoding = mimetypes.guess_type(self.filename)
++ return type
++
++ def __iter__(self):
++ file = open(self.filename, 'rb')
++ buffer_size = 0x10000
++ while True:
++ chunk = file.read(buffer_size)
++ yield chunk
++ if len(chunk) < buffer_size:
++ break
++
++ file.close()
++
++def language_code(request=None):
++ code = (request and getattr(request, 'LANGUAGE_CODE', None)) or settings.LANGUAGE_CODE
++ cut = re.split('[_-]', code)
++ code = cut[0]
++ return code.lower()
++
++def project_dir():
++ import settings as settings_mod
++ if '__init__.py' in settings_mod.__file__:
++ p = os.path.dirname(settings_mod.__file__)
++ else:
++ p = settings_mod.__file__
++ project_directory, settings_filename = os.path.split(p)
++ if project_directory == os.curdir or not project_directory:
++ project_directory = os.getcwd()
++
++ return project_directory
++
++def resolve_page_file(root, relative_path, ignore_slash_issue=False):
++ root = os.path.realpath(root)
++ filename = None
++ current = root
++ is_attachment = False
++ for node in relative_path.split('/'):
++ if not node:
++ continue
++ current = os.path.join(current, node)
++ rst = current + '.rst'
++ if os.path.isfile(rst):
++ filename = rst
++ break
++ elif os.path.isfile(current):
++ filename = current
++ is_attachment = True
++ elif not os.path.isdir(current):
++ break
++
++ if not filename and os.path.isdir(current):
++ rst = os.path.join(current, 'index.rst')
++ if os.path.isfile(rst):
++ if not ignore_slash_issue and relative_path[-1:] != '/':
++ raise MalformedPagePath("The relative page os.path must end with a slash when "
++ "resolving an implicit directory index")
++ filename = rst
++
++ if filename:
++ filename = os.path.realpath(filename)
++ if filename.index(root) != 0:
++ filename = None
++
++ if filename:
++ if is_attachment:
++ return PageAttachment(filename, relative_path)
++ else:
++ return PageTextContent(filename, relative_path)
++
++ return None
++
++def get_page_content(request, relative_path, ignore_slash_issue=False):
++ lang = language_code(request)
++ userroot = os.path.join(project_dir(), 'telemeta-pages')
++ rootlist = [os.path.join(userroot, lang), os.path.join(userroot, 'default'),
++ os.path.join(PAGES_ROOT, lang), os.path.join(PAGES_ROOT, 'default')]
++ for root in rootlist:
++ content = resolve_page_file(root, relative_path, ignore_slash_issue=ignore_slash_issue)
++ if content:
++ return content
++
++ return None
++
++class MalformedPagePath(Exception):
++ pass
++
--- /dev/null
--- /dev/null
++# -*- coding: utf-8 -*-
++#
++# Copyright (C) 2007 Parisson SARL
++# Copyright (c) 2006-2007 Guillaume Pellerin <pellerin@parisson.com>
++# All rights reserved.
++#
++# This software is licensed as described in the file COPYING, which
++# you should have received as part of this distribution. The terms
++# are also available at http://svn.parisson.org/telemeta/TelemetaLicense.
++#
++# Author: Guillaume Pellerin <pellerin@parisson.com>
++
++import os
++
++from telemeta.export import *
++from telemeta.core import *
++from telemeta.core import ComponentManager
++
++cache_dir = 'cache/'
++source = 'samples/wav/sweep.wav'
++item_id = '10'
++metadata = {'identifier': 'Test', #collection
++ 'title': 'Sweep',
++ 'creator': 'YomGuy',
++ 'type': 'Techno',
++ 'date': '2008',
++ 'publisher': 'Parisson',
++ }
++options = {'verbose': '1'}
++
++class ExportTest(Component):
++
++ exporters = ExtensionPoint(IExporter)
++
++ def run(self):
++ for exporter in self.exporters:
++ format = exporter.get_format()
++ if options['verbose'] != '0':
++ print "\n+------------------------------------------"
++ print '| Testing exporter format: ' + format
++ print "+------------------------------------------"
++ exporter.set_cache_dir(cache_dir)
++ stream = exporter.process(item_id,source,metadata,options)
++
++ for chunk in stream:
++ pass
++ #print chunk
++
++compmgr = ComponentManager()
++test = ExportTest(compmgr)
++test.run()
++
--- /dev/null
--- /dev/null
++../telemeta/
--- /dev/null
--- /dev/null
++from telemeta.analysis.vamp.core import *
++a = VampCoreAnalyzer()
++print a.get_plugins_list()
++print a.render(['qm-vamp-plugins', 'qm-tempotracker', 'beats'],'/home/momo/dev/telemeta/telemeta/tests/samples/wav/Cellar-ShowMe-02.wav')
++
--- /dev/null
--- /dev/null
++eztelemeta (0.1)
++ * Initial release
++
++ -- Olivier Guilyardi <olivier {at} samalyse {dot} com> Thu, 16 Apr 2009 16:02:17 +0200
--- /dev/null
--- /dev/null
++
++CeCILL FREE SOFTWARE LICENSE AGREEMENT
++
++
++ Notice
++
++This Agreement is a Free Software license agreement that is the result
++of discussions between its authors in order to ensure compliance with
++the two main principles guiding its drafting:
++
++ * firstly, compliance with the principles governing the distribution
++ of Free Software: access to source code, broad rights granted to
++ users,
++ * secondly, the election of a governing law, French law, with which
++ it is conformant, both as regards the law of torts and
++ intellectual property law, and the protection that it offers to
++ both authors and holders of the economic rights over software.
++
++The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
++license are:
++
++Commissariat à l'Energie Atomique - CEA, a public scientific, technical
++and industrial research establishment, having its principal place of
++business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
++
++Centre National de la Recherche Scientifique - CNRS, a public scientific
++and technological establishment, having its principal place of business
++at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
++
++Institut National de Recherche en Informatique et en Automatique -
++INRIA, a public scientific and technological establishment, having its
++principal place of business at Domaine de Voluceau, Rocquencourt, BP
++105, 78153 Le Chesnay cedex, France.
++
++
++ Preamble
++
++The purpose of this Free Software license agreement is to grant users
++the right to modify and redistribute the software governed by this
++license within the framework of an open source distribution model.
++
++The exercising of these rights is conditional upon certain obligations
++for users so as to preserve this status for all subsequent redistributions.
++
++In consideration of access to the source code and the rights to copy,
++modify and redistribute granted by the license, users are provided only
++with a limited warranty and the software's author, the holder of the
++economic rights, and the successive licensors only have limited liability.
++
++In this respect, the risks associated with loading, using, modifying
++and/or developing or reproducing the software by the user are brought to
++the user's attention, given its Free Software status, which may make it
++complicated to use, with the result that its use is reserved for
++developers and experienced professionals having in-depth computer
++knowledge. Users are therefore encouraged to load and test the
++suitability of the software as regards their requirements in conditions
++enabling the security of their systems and/or data to be ensured and,
++more generally, to use and operate it in the same conditions of
++security. This Agreement may be freely reproduced and published,
++provided it is not altered, and that no provisions are either added or
++removed herefrom.
++
++This Agreement may apply to any or all software for which the holder of
++the economic rights decides to submit the use thereof to its provisions.
++
++
++ Article 1 - DEFINITIONS
++
++For the purpose of this Agreement, when the following expressions
++commence with a capital letter, they shall have the following meaning:
++
++Agreement: means this license agreement, and its possible subsequent
++versions and annexes.
++
++Software: means the software in its Object Code and/or Source Code form
++and, where applicable, its documentation, "as is" when the Licensee
++accepts the Agreement.
++
++Initial Software: means the Software in its Source Code and possibly its
++Object Code form and, where applicable, its documentation, "as is" when
++it is first distributed under the terms and conditions of the Agreement.
++
++Modified Software: means the Software modified by at least one
++Contribution.
++
++Source Code: means all the Software's instructions and program lines to
++which access is required so as to modify the Software.
++
++Object Code: means the binary files originating from the compilation of
++the Source Code.
++
++Holder: means the holder(s) of the economic rights over the Initial
++Software.
++
++Licensee: means the Software user(s) having accepted the Agreement.
++
++Contributor: means a Licensee having made at least one Contribution.
++
++Licensor: means the Holder, or any other individual or legal entity, who
++distributes the Software under the Agreement.
++
++Contribution: means any or all modifications, corrections, translations,
++adaptations and/or new functions integrated into the Software by any or
++all Contributors, as well as any or all Internal Modules.
++
++Module: means a set of sources files including their documentation that
++enables supplementary functions or services in addition to those offered
++by the Software.
++
++External Module: means any or all Modules, not derived from the
++Software, so that this Module and the Software run in separate address
++spaces, with one calling the other when they are run.
++
++Internal Module: means any or all Module, connected to the Software so
++that they both execute in the same address space.
++
++GNU GPL: means the GNU General Public License version 2 or any
++subsequent version, as published by the Free Software Foundation Inc.
++
++Parties: mean both the Licensee and the Licensor.
++
++These expressions may be used both in singular and plural form.
++
++
++ Article 2 - PURPOSE
++
++The purpose of the Agreement is the grant by the Licensor to the
++Licensee of a non-exclusive, transferable and worldwide license for the
++Software as set forth in Article 5 hereinafter for the whole term of the
++protection granted by the rights over said Software.
++
++
++ Article 3 - ACCEPTANCE
++
++3.1 The Licensee shall be deemed as having accepted the terms and
++conditions of this Agreement upon the occurrence of the first of the
++following events:
++
++ * (i) loading the Software by any or all means, notably, by
++ downloading from a remote server, or by loading from a physical
++ medium;
++ * (ii) the first time the Licensee exercises any of the rights
++ granted hereunder.
++
++3.2 One copy of the Agreement, containing a notice relating to the
++characteristics of the Software, to the limited warranty, and to the
++fact that its use is restricted to experienced users has been provided
++to the Licensee prior to its acceptance as set forth in Article 3.1
++hereinabove, and the Licensee hereby acknowledges that it has read and
++understood it.
++
++
++ Article 4 - EFFECTIVE DATE AND TERM
++
++
++ 4.1 EFFECTIVE DATE
++
++The Agreement shall become effective on the date when it is accepted by
++the Licensee as set forth in Article 3.1.
++
++
++ 4.2 TERM
++
++The Agreement shall remain in force for the entire legal term of
++protection of the economic rights over the Software.
++
++
++ Article 5 - SCOPE OF RIGHTS GRANTED
++
++The Licensor hereby grants to the Licensee, who accepts, the following
++rights over the Software for any or all use, and for the term of the
++Agreement, on the basis of the terms and conditions set forth hereinafter.
++
++Besides, if the Licensor owns or comes to own one or more patents
++protecting all or part of the functions of the Software or of its
++components, the Licensor undertakes not to enforce the rights granted by
++these patents against successive Licensees using, exploiting or
++modifying the Software. If these patents are transferred, the Licensor
++undertakes to have the transferees subscribe to the obligations set
++forth in this paragraph.
++
++
++ 5.1 RIGHT OF USE
++
++The Licensee is authorized to use the Software, without any limitation
++as to its fields of application, with it being hereinafter specified
++that this comprises:
++
++ 1. permanent or temporary reproduction of all or part of the Software
++ by any or all means and in any or all form.
++
++ 2. loading, displaying, running, or storing the Software on any or
++ all medium.
++
++ 3. entitlement to observe, study or test its operation so as to
++ determine the ideas and principles behind any or all constituent
++ elements of said Software. This shall apply when the Licensee
++ carries out any or all loading, displaying, running, transmission
++ or storage operation as regards the Software, that it is entitled
++ to carry out hereunder.
++
++
++ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
++
++The right to make Contributions includes the right to translate, adapt,
++arrange, or make any or all modifications to the Software, and the right
++to reproduce the resulting software.
++
++The Licensee is authorized to make any or all Contributions to the
++Software provided that it includes an explicit notice that it is the
++author of said Contribution and indicates the date of the creation thereof.
++
++
++ 5.3 RIGHT OF DISTRIBUTION
++
++In particular, the right of distribution includes the right to publish,
++transmit and communicate the Software to the general public on any or
++all medium, and by any or all means, and the right to market, either in
++consideration of a fee, or free of charge, one or more copies of the
++Software by any means.
++
++The Licensee is further authorized to distribute copies of the modified
++or unmodified Software to third parties according to the terms and
++conditions set forth hereinafter.
++
++
++ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
++
++The Licensee is authorized to distribute true copies of the Software in
++Source Code or Object Code form, provided that said distribution
++complies with all the provisions of the Agreement and is accompanied by:
++
++ 1. a copy of the Agreement,
++
++ 2. a notice relating to the limitation of both the Licensor's
++ warranty and liability as set forth in Articles 8 and 9,
++
++and that, in the event that only the Object Code of the Software is
++redistributed, the Licensee allows future Licensees unhindered access to
++the full Source Code of the Software by indicating how to access it, it
++being understood that the additional cost of acquiring the Source Code
++shall not exceed the cost of transferring the data.
++
++
++ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
++
++When the Licensee makes a Contribution to the Software, the terms and
++conditions for the distribution of the resulting Modified Software
++become subject to all the provisions of this Agreement.
++
++The Licensee is authorized to distribute the Modified Software, in
++source code or object code form, provided that said distribution
++complies with all the provisions of the Agreement and is accompanied by:
++
++ 1. a copy of the Agreement,
++
++ 2. a notice relating to the limitation of both the Licensor's
++ warranty and liability as set forth in Articles 8 and 9,
++
++and that, in the event that only the object code of the Modified
++Software is redistributed, the Licensee allows future Licensees
++unhindered access to the full source code of the Modified Software by
++indicating how to access it, it being understood that the additional
++cost of acquiring the source code shall not exceed the cost of
++transferring the data.
++
++
++ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
++
++When the Licensee has developed an External Module, the terms and
++conditions of this Agreement do not apply to said External Module, that
++may be distributed under a separate license agreement.
++
++
++ 5.3.4 COMPATIBILITY WITH THE GNU GPL
++
++The Licensee can include a code that is subject to the provisions of one
++of the versions of the GNU GPL in the Modified or unmodified Software,
++and distribute that entire code under the terms of the same version of
++the GNU GPL.
++
++The Licensee can include the Modified or unmodified Software in a code
++that is subject to the provisions of one of the versions of the GNU GPL,
++and distribute that entire code under the terms of the same version of
++the GNU GPL.
++
++
++ Article 6 - INTELLECTUAL PROPERTY
++
++
++ 6.1 OVER THE INITIAL SOFTWARE
++
++The Holder owns the economic rights over the Initial Software. Any or
++all use of the Initial Software is subject to compliance with the terms
++and conditions under which the Holder has elected to distribute its work
++and no one shall be entitled to modify the terms and conditions for the
++distribution of said Initial Software.
++
++The Holder undertakes that the Initial Software will remain ruled at
++least by this Agreement, for the duration set forth in Article 4.2.
++
++
++ 6.2 OVER THE CONTRIBUTIONS
++
++The Licensee who develops a Contribution is the owner of the
++intellectual property rights over this Contribution as defined by
++applicable law.
++
++
++ 6.3 OVER THE EXTERNAL MODULES
++
++The Licensee who develops an External Module is the owner of the
++intellectual property rights over this External Module as defined by
++applicable law and is free to choose the type of agreement that shall
++govern its distribution.
++
++
++ 6.4 JOINT PROVISIONS
++
++The Licensee expressly undertakes:
++
++ 1. not to remove, or modify, in any manner, the intellectual property
++ notices attached to the Software;
++
++ 2. to reproduce said notices, in an identical manner, in the copies
++ of the Software modified or not.
++
++The Licensee undertakes not to directly or indirectly infringe the
++intellectual property rights of the Holder and/or Contributors on the
++Software and to take, where applicable, vis-à-vis its staff, any and all
++measures required to ensure respect of said intellectual property rights
++of the Holder and/or Contributors.
++
++
++ Article 7 - RELATED SERVICES
++
++7.1 Under no circumstances shall the Agreement oblige the Licensor to
++provide technical assistance or maintenance services for the Software.
++
++However, the Licensor is entitled to offer this type of services. The
++terms and conditions of such technical assistance, and/or such
++maintenance, shall be set forth in a separate instrument. Only the
++Licensor offering said maintenance and/or technical assistance services
++shall incur liability therefor.
++
++7.2 Similarly, any Licensor is entitled to offer to its licensees, under
++its sole responsibility, a warranty, that shall only be binding upon
++itself, for the redistribution of the Software and/or the Modified
++Software, under terms and conditions that it is free to decide. Said
++warranty, and the financial terms and conditions of its application,
++shall be subject of a separate instrument executed between the Licensor
++and the Licensee.
++
++
++ Article 8 - LIABILITY
++
++8.1 Subject to the provisions of Article 8.2, the Licensee shall be
++entitled to claim compensation for any direct loss it may have suffered
++from the Software as a result of a fault on the part of the relevant
++Licensor, subject to providing evidence thereof.
++
++8.2 The Licensor's liability is limited to the commitments made under
++this Agreement and shall not be incurred as a result of in particular:
++(i) loss due the Licensee's total or partial failure to fulfill its
++obligations, (ii) direct or consequential loss that is suffered by the
++Licensee due to the use or performance of the Software, and (iii) more
++generally, any consequential loss. In particular the Parties expressly
++agree that any or all pecuniary or business loss (i.e. loss of data,
++loss of profits, operating loss, loss of customers or orders,
++opportunity cost, any disturbance to business activities) or any or all
++legal proceedings instituted against the Licensee by a third party,
++shall constitute consequential loss and shall not provide entitlement to
++any or all compensation from the Licensor.
++
++
++ Article 9 - WARRANTY
++
++9.1 The Licensee acknowledges that the scientific and technical
++state-of-the-art when the Software was distributed did not enable all
++possible uses to be tested and verified, nor for the presence of
++possible defects to be detected. In this respect, the Licensee's
++attention has been drawn to the risks associated with loading, using,
++modifying and/or developing and reproducing the Software which are
++reserved for experienced users.
++
++The Licensee shall be responsible for verifying, by any or all means,
++the suitability of the product for its requirements, its good working
++order, and for ensuring that it shall not cause damage to either persons
++or properties.
++
++9.2 The Licensor hereby represents, in good faith, that it is entitled
++to grant all the rights over the Software (including in particular the
++rights set forth in Article 5).
++
++9.3 The Licensee acknowledges that the Software is supplied "as is" by
++the Licensor without any other express or tacit warranty, other than
++that provided for in Article 9.2 and, in particular, without any warranty
++as to its commercial value, its secured, safe, innovative or relevant
++nature.
++
++Specifically, the Licensor does not warrant that the Software is free
++from any error, that it will operate without interruption, that it will
++be compatible with the Licensee's own equipment and software
++configuration, nor that it will meet the Licensee's requirements.
++
++9.4 The Licensor does not either expressly or tacitly warrant that the
++Software does not infringe any third party intellectual property right
++relating to a patent, software or any other property right. Therefore,
++the Licensor disclaims any and all liability towards the Licensee
++arising out of any or all proceedings for infringement that may be
++instituted in respect of the use, modification and redistribution of the
++Software. Nevertheless, should such proceedings be instituted against
++the Licensee, the Licensor shall provide it with technical and legal
++assistance for its defense. Such technical and legal assistance shall be
++decided on a case-by-case basis between the relevant Licensor and the
++Licensee pursuant to a memorandum of understanding. The Licensor
++disclaims any and all liability as regards the Licensee's use of the
++name of the Software. No warranty is given as regards the existence of
++prior rights over the name of the Software or as regards the existence
++of a trademark.
++
++
++ Article 10 - TERMINATION
++
++10.1 In the event of a breach by the Licensee of its obligations
++hereunder, the Licensor may automatically terminate this Agreement
++thirty (30) days after notice has been sent to the Licensee and has
++remained ineffective.
++
++10.2 A Licensee whose Agreement is terminated shall no longer be
++authorized to use, modify or distribute the Software. However, any
++licenses that it may have granted prior to termination of the Agreement
++shall remain valid subject to their having been granted in compliance
++with the terms and conditions hereof.
++
++
++ Article 11 - MISCELLANEOUS
++
++
++ 11.1 EXCUSABLE EVENTS
++
++Neither Party shall be liable for any or all delay, or failure to
++perform the Agreement, that may be attributable to an event of force
++majeure, an act of God or an outside cause, such as defective
++functioning or interruptions of the electricity or telecommunications
++networks, network paralysis following a virus attack, intervention by
++government authorities, natural disasters, water damage, earthquakes,
++fire, explosions, strikes and labor unrest, war, etc.
++
++11.2 Any failure by either Party, on one or more occasions, to invoke
++one or more of the provisions hereof, shall under no circumstances be
++interpreted as being a waiver by the interested Party of its right to
++invoke said provision(s) subsequently.
++
++11.3 The Agreement cancels and replaces any or all previous agreements,
++whether written or oral, between the Parties and having the same
++purpose, and constitutes the entirety of the agreement between said
++Parties concerning said purpose. No supplement or modification to the
++terms and conditions hereof shall be effective as between the Parties
++unless it is made in writing and signed by their duly authorized
++representatives.
++
++11.4 In the event that one or more of the provisions hereof were to
++conflict with a current or future applicable act or legislative text,
++said act or legislative text shall prevail, and the Parties shall make
++the necessary amendments so as to comply with said act or legislative
++text. All other provisions shall remain effective. Similarly, invalidity
++of a provision of the Agreement, for any reason whatsoever, shall not
++cause the Agreement as a whole to be invalid.
++
++
++ 11.5 LANGUAGE
++
++The Agreement is drafted in both French and English and both versions
++are deemed authentic.
++
++
++ Article 12 - NEW VERSIONS OF THE AGREEMENT
++
++12.1 Any person is authorized to duplicate and distribute copies of this
++Agreement.
++
++12.2 So as to ensure coherence, the wording of this Agreement is
++protected and may only be modified by the authors of the License, who
++reserve the right to periodically publish updates or new versions of the
++Agreement, each with a separate number. These subsequent versions may
++address new issues encountered by Free Software.
++
++12.3 Any Software distributed under a given version of the Agreement may
++only be subsequently distributed under the same version of the Agreement
++or a subsequent version, subject to the provisions of Article 5.3.4.
++
++
++ Article 13 - GOVERNING LAW AND JURISDICTION
++
++13.1 The Agreement is governed by French law. The Parties agree to
++endeavor to seek an amicable solution to any disagreements or disputes
++that may arise during the performance of the Agreement.
++
++13.2 Failing an amicable solution within two (2) months as from their
++occurrence, and unless emergency proceedings are necessary, the
++disagreements or disputes shall be referred to the Paris Courts having
++jurisdiction, by the more diligent Party.
++
++
++Version 2.0 dated 2006-09-05.
--- /dev/null
--- /dev/null
++
++CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
++
++
++ Avertissement
++
++Ce contrat est une licence de logiciel libre issue d'une concertation
++entre ses auteurs afin que le respect de deux grands principes préside à
++sa rédaction:
++
++ * d'une part, le respect des principes de diffusion des logiciels
++ libres: accès au code source, droits étendus conférés aux
++ utilisateurs,
++ * d'autre part, la désignation d'un droit applicable, le droit
++ français, auquel elle est conforme, tant au regard du droit de la
++ responsabilité civile que du droit de la propriété intellectuelle
++ et de la protection qu'il offre aux auteurs et titulaires des
++ droits patrimoniaux sur un logiciel.
++
++Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
++L[ibre]) sont:
++
++Commissariat à l'Energie Atomique - CEA, établissement public de
++recherche à caractère scientifique, technique et industriel, dont le
++siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
++
++Centre National de la Recherche Scientifique - CNRS, établissement
++public à caractère scientifique et technologique, dont le siège est
++situé 3 rue Michel-Ange, 75794 Paris cedex 16.
++
++Institut National de Recherche en Informatique et en Automatique -
++INRIA, établissement public à caractère scientifique et technologique,
++dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
++Le Chesnay cedex.
++
++
++ Préambule
++
++Ce contrat est une licence de logiciel libre dont l'objectif est de
++conférer aux utilisateurs la liberté de modification et de
++redistribution du logiciel régi par cette licence dans le cadre d'un
++modèle de diffusion en logiciel libre.
++
++L'exercice de ces libertés est assorti de certains devoirs à la charge
++des utilisateurs afin de préserver ce statut au cours des
++redistributions ultérieures.
++
++L'accessibilité au code source et les droits de copie, de modification
++et de redistribution qui en découlent ont pour contrepartie de n'offrir
++aux utilisateurs qu'une garantie limitée et de ne faire peser sur
++l'auteur du logiciel, le titulaire des droits patrimoniaux et les
++concédants successifs qu'une responsabilité restreinte.
++
++A cet égard l'attention de l'utilisateur est attirée sur les risques
++associés au chargement, à l'utilisation, à la modification et/ou au
++développement et à la reproduction du logiciel par l'utilisateur étant
++donné sa spécificité de logiciel libre, qui peut le rendre complexe à
++manipuler et qui le réserve donc à des développeurs ou des
++professionnels avertis possédant des connaissances informatiques
++approfondies. Les utilisateurs sont donc invités à charger et tester
++l'adéquation du logiciel à leurs besoins dans des conditions permettant
++d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
++généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
++sécurité. Ce contrat peut être reproduit et diffusé librement, sous
++réserve de le conserver en l'état, sans ajout ni suppression de clauses.
++
++Ce contrat est susceptible de s'appliquer à tout logiciel dont le
++titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
++dispositions qu'il contient.
++
++
++ Article 1 - DEFINITIONS
++
++Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
++lettre capitale, auront la signification suivante:
++
++Contrat: désigne le présent contrat de licence, ses éventuelles versions
++postérieures et annexes.
++
++Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
++Source et le cas échéant sa documentation, dans leur état au moment de
++l'acceptation du Contrat par le Licencié.
++
++Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
++éventuellement de Code Objet et le cas échéant sa documentation, dans
++leur état au moment de leur première diffusion sous les termes du Contrat.
++
++Logiciel Modifié: désigne le Logiciel modifié par au moins une
++Contribution.
++
++Code Source: désigne l'ensemble des instructions et des lignes de
++programme du Logiciel et auquel l'accès est nécessaire en vue de
++modifier le Logiciel.
++
++Code Objet: désigne les fichiers binaires issus de la compilation du
++Code Source.
++
++Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
++sur le Logiciel Initial.
++
++Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
++Contrat.
++
++Contributeur: désigne le Licencié auteur d'au moins une Contribution.
++
++Concédant: désigne le Titulaire ou toute personne physique ou morale
++distribuant le Logiciel sous le Contrat.
++
++Contribution: désigne l'ensemble des modifications, corrections,
++traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
++le Logiciel par tout Contributeur, ainsi que tout Module Interne.
++
++Module: désigne un ensemble de fichiers sources y compris leur
++documentation qui permet de réaliser des fonctionnalités ou services
++supplémentaires à ceux fournis par le Logiciel.
++
++Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
++Module et le Logiciel s'exécutent dans des espaces d'adressage
++différents, l'un appelant l'autre au moment de leur exécution.
++
++Module Interne: désigne tout Module lié au Logiciel de telle sorte
++qu'ils s'exécutent dans le même espace d'adressage.
++
++GNU GPL: désigne la GNU General Public License dans sa version 2 ou
++toute version ultérieure, telle que publiée par Free Software Foundation
++Inc.
++
++Parties: désigne collectivement le Licencié et le Concédant.
++
++Ces termes s'entendent au singulier comme au pluriel.
++
++
++ Article 2 - OBJET
++
++Le Contrat a pour objet la concession par le Concédant au Licencié d'une
++licence non exclusive, cessible et mondiale du Logiciel telle que
++définie ci-après à l'article 5 pour toute la durée de protection des droits
++portant sur ce Logiciel.
++
++
++ Article 3 - ACCEPTATION
++
++3.1 L'acceptation par le Licencié des termes du Contrat est réputée
++acquise du fait du premier des faits suivants:
++
++ * (i) le chargement du Logiciel par tout moyen notamment par
++ téléchargement à partir d'un serveur distant ou par chargement à
++ partir d'un support physique;
++ * (ii) le premier exercice par le Licencié de l'un quelconque des
++ droits concédés par le Contrat.
++
++3.2 Un exemplaire du Contrat, contenant notamment un avertissement
++relatif aux spécificités du Logiciel, à la restriction de garantie et à
++la limitation à un usage par des utilisateurs expérimentés a été mis à
++disposition du Licencié préalablement à son acceptation telle que
++définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
++connaissance.
++
++
++ Article 4 - ENTREE EN VIGUEUR ET DUREE
++
++
++ 4.1 ENTREE EN VIGUEUR
++
++Le Contrat entre en vigueur à la date de son acceptation par le Licencié
++telle que définie en 3.1.
++
++
++ 4.2 DUREE
++
++Le Contrat produira ses effets pendant toute la durée légale de
++protection des droits patrimoniaux portant sur le Logiciel.
++
++
++ Article 5 - ETENDUE DES DROITS CONCEDES
++
++Le Concédant concède au Licencié, qui accepte, les droits suivants sur
++le Logiciel pour toutes destinations et pour la durée du Contrat dans
++les conditions ci-après détaillées.
++
++Par ailleurs, si le Concédant détient ou venait à détenir un ou
++plusieurs brevets d'invention protégeant tout ou partie des
++fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
++opposer les éventuels droits conférés par ces brevets aux Licenciés
++successifs qui utiliseraient, exploiteraient ou modifieraient le
++Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
++faire reprendre les obligations du présent alinéa aux cessionnaires.
++
++
++ 5.1 DROIT D'UTILISATION
++
++Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
++aux domaines d'application, étant ci-après précisé que cela comporte:
++
++ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
++ partie par tout moyen et sous toute forme.
++
++ 2. le chargement, l'affichage, l'exécution, ou le stockage du
++ Logiciel sur tout support.
++
++ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
++ fonctionnement afin de déterminer les idées et principes qui sont
++ à la base de n'importe quel élément de ce Logiciel; et ceci,
++ lorsque le Licencié effectue toute opération de chargement,
++ d'affichage, d'exécution, de transmission ou de stockage du
++ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
++
++
++ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
++
++Le droit d'apporter des Contributions comporte le droit de traduire,
++d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
++et le droit de reproduire le logiciel en résultant.
++
++Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
++réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
++cette Contribution et la date de création de celle-ci.
++
++
++ 5.3 DROIT DE DISTRIBUTION
++
++Le droit de distribution comporte notamment le droit de diffuser, de
++transmettre et de communiquer le Logiciel au public sur tout support et
++par tout moyen ainsi que le droit de mettre sur le marché à titre
++onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
++
++Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
++non, à des tiers dans les conditions ci-après détaillées.
++
++
++ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
++
++Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
++sous forme de Code Source ou de Code Objet, à condition que cette
++distribution respecte les dispositions du Contrat dans leur totalité et
++soit accompagnée:
++
++ 1. d'un exemplaire du Contrat,
++
++ 2. d'un avertissement relatif à la restriction de garantie et de
++ responsabilité du Concédant telle que prévue aux articles 8
++ et 9,
++
++et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
++le Licencié permette aux futurs Licenciés d'accéder facilement au Code
++Source complet du Logiciel en indiquant les modalités d'accès, étant
++entendu que le coût additionnel d'acquisition du Code Source ne devra
++pas excéder le simple coût de transfert des données.
++
++
++ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
++
++Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
++de distribution du Logiciel Modifié en résultant sont alors soumises à
++l'intégralité des dispositions du Contrat.
++
++Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
++code source ou de code objet, à condition que cette distribution
++respecte les dispositions du Contrat dans leur totalité et soit
++accompagnée:
++
++ 1. d'un exemplaire du Contrat,
++
++ 2. d'un avertissement relatif à la restriction de garantie et de
++ responsabilité du Concédant telle que prévue aux articles 8
++ et 9,
++
++et que, dans le cas où seul le code objet du Logiciel Modifié est
++redistribué, le Licencié permette aux futurs Licenciés d'accéder
++facilement au code source complet du Logiciel Modifié en indiquant les
++modalités d'accès, étant entendu que le coût additionnel d'acquisition
++du code source ne devra pas excéder le simple coût de transfert des données.
++
++
++ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
++
++Lorsque le Licencié a développé un Module Externe les conditions du
++Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
++sous un contrat de licence différent.
++
++
++ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
++
++Le Licencié peut inclure un code soumis aux dispositions d'une des
++versions de la licence GNU GPL dans le Logiciel modifié ou non et
++distribuer l'ensemble sous les conditions de la même version de la
++licence GNU GPL.
++
++Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
++aux dispositions d'une des versions de la licence GNU GPL et distribuer
++l'ensemble sous les conditions de la même version de la licence GNU GPL.
++
++
++ Article 6 - PROPRIETE INTELLECTUELLE
++
++
++ 6.1 SUR LE LOGICIEL INITIAL
++
++Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
++Initial. Toute utilisation du Logiciel Initial est soumise au respect
++des conditions dans lesquelles le Titulaire a choisi de diffuser son
++oeuvre et nul autre n'a la faculté de modifier les conditions de
++diffusion de ce Logiciel Initial.
++
++Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
++par le Contrat et ce, pour la durée visée à l'article 4.2.
++
++
++ 6.2 SUR LES CONTRIBUTIONS
++
++Le Licencié qui a développé une Contribution est titulaire sur celle-ci
++des droits de propriété intellectuelle dans les conditions définies par
++la législation applicable.
++
++
++ 6.3 SUR LES MODULES EXTERNES
++
++Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
++des droits de propriété intellectuelle dans les conditions définies par
++la législation applicable et reste libre du choix du contrat régissant
++sa diffusion.
++
++
++ 6.4 DISPOSITIONS COMMUNES
++
++Le Licencié s'engage expressément:
++
++ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
++ mentions de propriété intellectuelle apposées sur le Logiciel;
++
++ 2. à reproduire à l'identique lesdites mentions de propriété
++ intellectuelle sur les copies du Logiciel modifié ou non.
++
++Le Licencié s'engage à ne pas porter atteinte, directement ou
++indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
++des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
++l'égard de son personnel toutes les mesures nécessaires pour assurer le
++respect des dits droits de propriété intellectuelle du Titulaire et/ou
++des Contributeurs.
++
++
++ Article 7 - SERVICES ASSOCIES
++
++7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
++prestations d'assistance technique ou de maintenance du Logiciel.
++
++Cependant le Concédant reste libre de proposer ce type de services. Les
++termes et conditions d'une telle assistance technique et/ou d'une telle
++maintenance seront alors déterminés dans un acte séparé. Ces actes de
++maintenance et/ou assistance technique n'engageront que la seule
++responsabilité du Concédant qui les propose.
++
++7.2 De même, tout Concédant est libre de proposer, sous sa seule
++responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
++lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
++dans les conditions qu'il souhaite. Cette garantie et les modalités
++financières de son application feront l'objet d'un acte séparé entre le
++Concédant et le Licencié.
++
++
++ Article 8 - RESPONSABILITE
++
++8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
++faculté, sous réserve de prouver la faute du Concédant concerné, de
++solliciter la réparation du préjudice direct qu'il subirait du fait du
++Logiciel et dont il apportera la preuve.
++
++8.2 La responsabilité du Concédant est limitée aux engagements pris en
++application du Contrat et ne saurait être engagée en raison notamment:
++(i) des dommages dus à l'inexécution, totale ou partielle, de ses
++obligations par le Licencié, (ii) des dommages directs ou indirects
++découlant de l'utilisation ou des performances du Logiciel subis par le
++Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
++particulier, les Parties conviennent expressément que tout préjudice
++financier ou commercial (par exemple perte de données, perte de
++bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
++manque à gagner, trouble commercial quelconque) ou toute action dirigée
++contre le Licencié par un tiers, constitue un dommage indirect et
++n'ouvre pas droit à réparation par le Concédant.
++
++
++ Article 9 - GARANTIE
++
++9.1 Le Licencié reconnaît que l'état actuel des connaissances
++scientifiques et techniques au moment de la mise en circulation du
++Logiciel ne permet pas d'en tester et d'en vérifier toutes les
++utilisations ni de détecter l'existence d'éventuels défauts. L'attention
++du Licencié a été attirée sur ce point sur les risques associés au
++chargement, à l'utilisation, la modification et/ou au développement et à
++la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
++
++Il relève de la responsabilité du Licencié de contrôler, par tous
++moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
++de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
++
++9.2 Le Concédant déclare de bonne foi être en droit de concéder
++l'ensemble des droits attachés au Logiciel (comprenant notamment les
++droits visés à l'article 5).
++
++9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
++Concédant sans autre garantie, expresse ou tacite, que celle prévue à
++l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
++son caractère sécurisé, innovant ou pertinent.
++
++En particulier, le Concédant ne garantit pas que le Logiciel est exempt
++d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
++avec l'équipement du Licencié et sa configuration logicielle ni qu'il
++remplira les besoins du Licencié.
++
++9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
++Logiciel ne porte pas atteinte à un quelconque droit de propriété
++intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
++autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
++profit du Licencié contre les actions en contrefaçon qui pourraient être
++diligentées au titre de l'utilisation, de la modification, et de la
++redistribution du Logiciel. Néanmoins, si de telles actions sont
++exercées contre le Licencié, le Concédant lui apportera son aide
++technique et juridique pour sa défense. Cette aide technique et
++juridique est déterminée au cas par cas entre le Concédant concerné et
++le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
++toute responsabilité quant à l'utilisation de la dénomination du
++Logiciel par le Licencié. Aucune garantie n'est apportée quant à
++l'existence de droits antérieurs sur le nom du Logiciel et sur
++l'existence d'une marque.
++
++
++ Article 10 - RESILIATION
++
++10.1 En cas de manquement par le Licencié aux obligations mises à sa
++charge par le Contrat, le Concédant pourra résilier de plein droit le
++Contrat trente (30) jours après notification adressée au Licencié et
++restée sans effet.
++
++10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
++utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
++licences qu'il aura concédées antérieurement à la résiliation du Contrat
++resteront valides sous réserve qu'elles aient été effectuées en
++conformité avec le Contrat.
++
++
++ Article 11 - DISPOSITIONS DIVERSES
++
++
++ 11.1 CAUSE EXTERIEURE
++
++Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
++d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
++fortuit ou une cause extérieure, telle que, notamment, le mauvais
++fonctionnement ou les interruptions du réseau électrique ou de
++télécommunication, la paralysie du réseau liée à une attaque
++informatique, l'intervention des autorités gouvernementales, les
++catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
++le feu, les explosions, les grèves et les conflits sociaux, l'état de
++guerre...
++
++11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
++plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
++Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
++intéressée à s'en prévaloir ultérieurement.
++
++11.3 Le Contrat annule et remplace toute convention antérieure, écrite
++ou orale, entre les Parties sur le même objet et constitue l'accord
++entier entre les Parties sur cet objet. Aucune addition ou modification
++aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
++d'être faite par écrit et signée par leurs représentants dûment habilités.
++
++11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
++s'avèrerait contraire à une loi ou à un texte applicable, existants ou
++futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
++amendements nécessaires pour se conformer à cette loi ou à ce texte.
++Toutes les autres dispositions resteront en vigueur. De même, la
++nullité, pour quelque raison que ce soit, d'une des dispositions du
++Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
++
++
++ 11.5 LANGUE
++
++Le Contrat est rédigé en langue française et en langue anglaise, ces
++deux versions faisant également foi.
++
++
++ Article 12 - NOUVELLES VERSIONS DU CONTRAT
++
++12.1 Toute personne est autorisée à copier et distribuer des copies de
++ce Contrat.
++
++12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
++et ne peut être modifié que par les auteurs de la licence, lesquels se
++réservent le droit de publier périodiquement des mises à jour ou de
++nouvelles versions du Contrat, qui posséderont chacune un numéro
++distinct. Ces versions ultérieures seront susceptibles de prendre en
++compte de nouvelles problématiques rencontrées par les logiciels libres.
++
++12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
++faire l'objet d'une diffusion ultérieure que sous la même version du
++Contrat ou une version postérieure, sous réserve des dispositions de
++l'article 5.3.4.
++
++
++ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
++
++13.1 Le Contrat est régi par la loi française. Les Parties conviennent
++de tenter de régler à l'amiable les différends ou litiges qui
++viendraient à se produire par suite ou à l'occasion du Contrat.
++
++13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
++de leur survenance et sauf situation relevant d'une procédure d'urgence,
++les différends ou litiges seront portés par la Partie la plus diligente
++devant les Tribunaux compétents de Paris.
++
++
++Version 2.0 du 2006-09-05.
--- /dev/null
--- /dev/null
++PACKAGE = eztelemeta
++VERSION = 0.1
++
++DOCS = VERSION ChangeLog doc/README.fr doc/README.fr.html doc/doc.css doc/README.fr.latex \
++ doc/README.fr.pdf doc/player.png LICENCE LICENCE.fr
++
++SETTINGS = \
++ settings/content.ini.append \
++ settings/design.ini.append \
++ settings/site.ini.append \
++ settings/override.ini.append
++
++TEMPLATES = \
++ design/standard/templates/content/datatype/view/eztelemetaitem.tpl \
++ design/standard/templates/content/datatype/edit/eztelemetaitem.tpl \
++ design/standard/templates/eztelemeta_head.tpl \
++ design/standard/override/templates/embed/eztelemetaitem.tpl \
++ design/standard/override/templates/full/eztelemetaitem.tpl
++
++HTDOCS = \
++ design/standard/stylesheets/eztelemeta.css \
++ design/standard/javascript/soundmanager2.js \
++ design/standard/javascript/soundmanager2-nodebug-jsmin.js \
++ design/standard/javascript/eztelemeta-player.js \
++ design/standard/swf/soundmanager2_flash9.swf \
++ design/standard/swf/soundmanager2.swf \
++ design/standard/images/play.gif \
++ design/standard/images/stop.gif
++
++PHP = datatypes/eztelemetaitem/eztelemetaitemtype.php \
++ autoloads/eztelemetadata.php \
++ autoloads/eztemplateautoload.php
++
++I18N = translations/fre-FR/translation.ts
++
++DISTFILES = $(DOCS) $(SETTINGS) $(TEMPLATES) $(HTDOCS) $(PHP) $(I18N)
++
++DISTPKG = $(PACKAGE)-$(VERSION).tar.gz
++
++dist: $(DISTPKG)
++
++$(DISTPKG): doc $(DISTFILES)
++ tar -czf $@ --transform 's|^|eztelemeta/|' $(DISTFILES)
++
++.PHONY: doc
++doc: VERSION
++ $(MAKE) -C doc
++
++.PHONY: clean
++clean:
++ $(MAKE) -C doc clean
++ rm VERSION
++
++VERSION:
++ echo $(VERSION) > $@
++
++.PHONY: list
++list: doc $(DISTFILES)
++ @echo "------------------"
++ @echo "Distributed files:"
++ @echo "------------------"
++ @echo $(DISTFILES) | tr ' ' '\n' > cmp.tmp
++ @cat cmp.tmp
++ @echo
++ @echo "--------------------"
++ @echo "Undistributed files:"
++ @echo "--------------------"
++ @find -type f | grep -v svn | grep -v 'swp$$' | sed 's/^\.\///' >> cmp.tmp
++ @cat cmp.tmp | sort | uniq -u | grep -v 'cmp.tmp'
++ @rm cmp.tmp
++
++# vim: set noexpandtab: ts=2: sw=2:
--- /dev/null
--- /dev/null
++<?php
++/*
++ * eZTelemeta page data handling
++ *
++ * Note: this is a simplified version of the eZPageData utility from ezwebin (GPL)
++ *
++ * Copyright (c) 1999-2009 eZ Systems AS, 2009 Samalyse
++ * Author: Olivier Guilyardi <olivier samalyse com>
++ * License: CeCILL Free Software License Agreement
++ */
++
++/*
++ Template operator to speed up page settings and style init time
++ Gets its parameters directly from template.
++ module_result.path | content_info | persistant_variable | menu.ini ++
++ are all used to generate page data, what menues to show
++ and so on.
++
++*/
++
++class eZTelemetaData
++{
++ function eZTelemetaData()
++ {
++ }
++
++ function operatorList()
++ {
++ return array( 'eztelemetadata_set', 'eztelemetadata_append' );
++ }
++
++ function namedParameterPerOperator()
++ {
++ return true;
++ }
++
++ function namedParameterList()
++ {
++ return array( 'eztelemetadata_set' => array(
++ 'key' => array( 'type' => 'string',
++ 'required' => true,
++ 'default' => false ),
++ 'value' => array( 'type' => 'mixed',
++ 'required' => true,
++ 'default' => false ) ),
++ 'eztelemetadata_append' => array(
++ 'key' => array( 'type' => 'string',
++ 'required' => true,
++ 'default' => false ),
++ 'value' => array( 'type' => 'mixed',
++ 'required' => true,
++ 'default' => false ) ) );
++ }
++
++ function modify( $tpl, $operatorName, $operatorParameters, $rootNamespace, $currentNamespace, &$operatorValue, $namedParameters )
++ {
++ switch ( $operatorName )
++ {
++ // note: these functions are not cache-block safe
++ // as in: if called inside a cache-block then they will not be called when cache is used.
++ case 'eztelemetadata_set':
++ case 'eztelemetadata_append':
++ {
++ self::setPersistentVariable( $namedParameters['key'], $namedParameters['value'], $tpl, $operatorName === 'eztelemetadata_append' );
++ }break;
++ }
++ }
++
++ // reusable function for setting persistent_variable
++ static public function setPersistentVariable( $key, $value, $tpl, $append = false )
++ {
++ $persistentVariable = array();
++ if ( $tpl->hasVariable('persistent_variable') && is_array( $tpl->variable('persistent_variable') ) )
++ {
++ $persistentVariable = $tpl->variable('persistent_variable');
++ }
++ else if ( self::$persistentVariable !== null && is_array( self::$persistentVariable ) )
++ {
++ $persistentVariable = self::$persistentVariable;
++ }
++
++ if ( $append )
++ {
++ if ( isset( $persistentVariable[ $key ] ) && is_array( $persistentVariable[ $key ] ) )
++ {
++ $persistentVariable[ $key ][] = $value;
++ }
++ else
++ {
++ $persistentVariable[ $key ] = array( $value );
++ }
++ }
++ else
++ {
++ $persistentVariable[ $key ] = $value;
++ }
++
++ // set the finnished array in the template
++ $tpl->setVariable('persistent_variable', $persistentVariable);
++
++ // storing the value internally as well in case this is not a view that supports persistent_variable (eztelemetadata will look for it)
++ self::$persistentVariable = $persistentVariable;
++ }
++
++ // reusable function for getting persistent_variable
++ static public function getPersistentVariable( $key = null )
++ {
++ if ( $key !== null )
++ {
++ if ( isset( self::$persistentVariable[ $key ] ) )
++ return self::$persistentVariable[ $key ];
++ return null;
++ }
++ return self::$persistentVariable;
++ }
++
++ // Internal version of the $persistent_variable used on view that don't support it
++ static protected $persistentVariable = null;
++
++}
++
++?>
--- /dev/null
--- /dev/null
++<?php
++/*
++ * eZTelemeta page data handling
++ *
++ * Copyright (c) 2009 Samalyse
++ * Author: Olivier Guilyardi <olivier samalyse com>
++ * License: CeCILL Free Software License Agreement
++ */
++
++$eZTemplateOperatorArray = array();
++$eZTemplateOperatorArray[] = array( 'script' => 'extension/eztelemeta/autoloads/eztelemetadata.php',
++ 'class' => 'eZTelemetaData',
++ 'operator_names' => array( 'eztelemetadata_set', 'eztelemetadata_append' ) );
++?>
--- /dev/null
--- /dev/null
++<?php
++/**
++ * Definition of the Telemeta Item datatype
++ *
++ * @package eztelemeta
++ * @author Olivier Guilyardi <olivier samalyse com>
++ * @copyright 2009 Samalyse
++ * @license CeCILL Free Software License Agreement
++ */
++
++/**
++ * Class definining the Telemeta Item datatype
++ *
++ * @package eztelemeta
++ * @author Olivier Guilyardi
++ * @copyright 2009 Samalyse
++ * @license CeCILL Free Software License Agreement
++ */
++class eZTelemetaItemType extends eZDataType
++{
++ const DATA_TYPE_STRING = 'eztelemetaitem';
++
++ public function __construct()
++ {
++ parent::__construct(self::DATA_TYPE_STRING, 'Telemeta Item');
++ }
++
++ function validateObjectAttributeHTTPInput($http, $base, $attribute)
++ {
++ $idvar = "{$base}_itemid_" . $attribute->attribute('id');
++ $urlvar = "{$base}_url_" . $attribute->attribute('id');
++ if ($http->hasPostVariable($idvar)) {
++ $itemId = trim($http->postVariable($idvar));
++ $url = trim($http->postVariable($urlvar));
++ $classAttribute = $attribute->contentClassAttribute();
++ if ($classAttribute->attribute("is_required")) {
++ if (!$itemId) {
++ $attribute->setValidationError(ezi18n('content/datatypes',
++ "A valid Telemeta Item identifier is required",
++ __CLASS__));
++ return eZInputValidator::STATE_INVALID;
++ }
++ if (!$url) {
++ $attribute->setValidationError(ezi18n('content/datatypes',
++ "A valid Telemeta URL is required",
++ __CLASS__));
++ return eZInputValidator::STATE_INVALID;
++ }
++ }
++ $item = $this->initItem($url, $itemId);
++ try {
++ $this->fetchItem($item);
++ } catch (eZTelemetaError $e) {
++ $attribute->setValidationError(ezi18n('content/datatypes', $e->getMessage(), __CLASS__));
++ return eZInputValidator::STATE_INVALID;
++ }
++ }
++ return eZInputValidator::STATE_ACCEPTED;
++ }
++
++ function initItem($url, $itemId)
++ {
++ return array(
++ 'id' => $itemId,
++ 'url' => $url,
++ 'title' => '',
++ 'creator' => '',
++ 'description' => '',
++ 'rights' => '',
++ 'mp3' => '',
++ 'duration' => 0,
++ 'duration_str' => ''
++ );
++ }
++
++ function fetchItem($item)
++ {
++ $url = $item['url'];
++ if (!ereg('^http://', $url)) {
++ $url = "http://$url";
++ }
++ $url = ereg_replace('/*$', '', $url);
++ $encodedId = urlencode($item['id']);
++ $request = "$url/oai/?verb=GetRecord&identifier=item:$encodedId&metadataPrefix=oai_dc";
++
++ $doc = new DOMDocument();
++ if (!@$doc->load($request)) {
++ throw new eZTelemetaError("The Telemeta server couldn't be reached or returned malformed XML (request: $request)");
++ }
++
++ $root = $doc->getElementsByTagName('OAI-PMH');
++ if (!$root->length)
++ throw new eZTelemetaError("Retrieved XML document isn't a valid OAI-PMH response");
++
++ $root = $root->item(0);
++ $error = $root->getElementsByTagName('error');
++ if ($error->length) {
++ $msg = $error->item(0)->firstChild->nodeValue;
++ throw new eZTelemetaError("Telemeta OAI-PMH error: $msg");
++ }
++
++ $record = $root->getElementsByTagName('GetRecord');
++ if (!$record->length) {
++ throw new eZTelemetaError("Retrieved XML document isn't a valid OAI-PMH response (missing GetRecord tag)");
++ }
++
++ $dc = $record->item(0)->getElementsByTagNameNS('*', 'dc')->item(0);
++ $result = $this->initItem($item['url'], $item['id']);
++ foreach ($dc->childNodes as $element) {
++ if ($element->nodeType == XML_ELEMENT_NODE) {
++ $tag = str_replace('dc:', '', $element->tagName);
++ $value = $element->childNodes->length ? trim($element->firstChild->nodeValue) : '';
++ if ($tag == 'format' and ereg('^([0-9]{2}):([0-9]{2}):([0-9]{2})$', $value, $regs)) {
++ $tag = 'duration';
++ $value = $regs[1] * 3600 + $regs[2] * 60 + $regs[3];
++ }
++ if (array_key_exists($tag, $result) and empty($result[$tag])) {
++ $result[$tag] = $value;
++ }
++ }
++ }
++
++ if (!$result['title']) {
++ throw new eZTelemetaError("The retrieved item has no title");
++ }
++
++ if ($result['duration']) {
++ $d = $result['duration'];
++ $result['duration_str'] = sprintf("%02d:%02d:%02d", $d / 3600, $d % 3600 / 60, $d % 3600 % 60);
++ } else {
++ throw new eZTelemetaError("The retrieved item has no duration (no sound file?)");
++ }
++
++ $result['mp3'] = "$url/items/download/$encodedId.mp3";
++
++ return array_merge($item, $result);
++ }
++
++ function fetchObjectAttributeHTTPInput($http, $base, $attribute)
++ {
++ $idvar = "{$base}_itemid_" . $attribute->attribute('id');
++ $urlvar = "{$base}_url_" . $attribute->attribute('id');
++ if ($http->hasPostVariable($idvar)) {
++ $itemId = trim($http->postVariable($idvar));
++ $url = trim($http->postVariable($urlvar));
++ $item = $this->initItem($url, $itemId);
++ try {
++ $item = $this->fetchItem($item);
++ } catch (eZTelemetaError $e) {
++ }
++ $attribute->setAttribute("data_text", serialize($item));
++ }
++ return true;
++ }
++
++ function objectAttributeContent($attribute)
++ {
++ $item = unserialize($attribute->attribute("data_text"));
++ try {
++ $filled = $this->fetchItem($item);
++ return $filled;
++ } catch (eZTelemetaError $e) {
++ return $item;
++ }
++ }
++
++ function metaData($attribute)
++ {
++ $data = unserialize($attribute->attribute("data_text"));
++ $words = array();
++ $src = $data['title'] . ' ' . $data['description'];
++ $cut = split('[ =+()[{}_,.:;\\/"\'*#%!?&-]+', $src);
++ foreach ($cut as $w) {
++ if (strlen($w) >= 3) {
++ $words[] = $w;
++ }
++ }
++ $words = join(" ", $words);
++ file_put_contents("/tmp/c{$data['id']}", $words);
++ return $words;
++ }
++
++ function title($attribute, $name = null)
++ {
++ $item = $this->objectAttributeContent($attribute);
++ if (!$item['title'])
++ return 'untitled';
++ return $item['title'];
++ }
++
++ function isIndexable()
++ {
++ return true;
++ }
++
++}
++
++class eZTelemetaError extends ezcBaseException
++{
++ public function __construct($msg)
++ {
++ parent::__construct($msg);
++ }
++
++}
++
++eZDataType::register(eZTelemetaItemType::DATA_TYPE_STRING, "eztelemetaitemtype");
--- /dev/null
--- /dev/null
++/*
++ * eZTelemeta web audio player
++ *
++ * Copyright (c) 2009 Samalyse
++ * Author: Olivier Guilyardi <olivier samalyse com>
++ * License: CeCILL Free Software License Agreement
++ */
++
++function TelemetaPlayer(cfg)
++{
++ var that = this;
++ var soundManager = null;
++ var sound = null;
++ var currentLink = null;
++
++ this.init = function() {
++ var sounds = this.byClass(document, 'dd', 'telemeta-sound');
++ var i;
++ for (i in sounds) {
++ if (typeof(sounds[i].getElementsByTagName) != 'undefined') {
++ link = sounds[i].getElementsByTagName('a')[0];
++ link.onclick = this.togglePlayback;
++ }
++ }
++ }
++
++ this.findContainer = function(link) {
++ var e = link;
++ while (e) {
++ e = e.parentNode;
++ if (this.hasClass(e, 'telemeta-item'))
++ break;
++ if (e == document)
++ e = null;
++ }
++ return e;
++ }
++
++ this.setStateStyle = function(link, state) {
++ var container = this.findContainer(link);
++ if (state == 'stopped') {
++ if (this.hasClass(container, 'telemeta-playing'))
++ container.className = container.className.replace('telemeta-playing', '');
++ }
++
++ if (state == 'stopped' || state == 'playing') {
++ if (this.hasClass(container, 'telemeta-loading'))
++ container.className = container.className.replace('telemeta-loading', '');
++ }
++
++ if (state == 'playing' || state == 'loading') {
++ if (!this.hasClass(container, 'telemeta-playing'))
++ container.className += ' telemeta-playing';
++ if (state == 'loading') {
++ if (!this.hasClass(container, 'telemeta-loading'))
++ container.className += ' telemeta-loading';
++ }
++ }
++ }
++
++ this.togglePlayback = function() {
++ var link = this;
++ if (that.soundManager) {
++ if (that.sound)
++ that.sound.stop();
++ if (that.currentLink) {
++ that.setStateStyle(that.currentLink, 'stopped');
++ that.updatePosition(0);
++ }
++ if (!that.currentLink || that.currentLink != link) {
++ that.sound = that.soundManager.createSound({
++ id: 'telemeta_sound',
++ url: link.href,
++ whileplaying: function() { that.update(); },
++ onbufferchange: function() { that.update(); }
++ });
++ that.currentLink = link;
++ that.sound.play();
++ that.setStateStyle(link, 'loading');
++ that.updatePosition(0);
++ } else {
++ that.currentLink = null;
++ }
++ }
++ return false;
++ }
++
++ this.updatePosition = function(position)
++ {
++ var container = that.findContainer(that.currentLink)
++ var positionContainer = that.byClass(container, 'span', 'telemeta-position')[0];
++
++ function format(i) { i = '' + parseInt(i); return i.length < 2 ? '0' + i : i; }
++
++ var hours = format(position / 3600);
++ var mins = format(position % 3600 / 60);
++ var secs = format(position % 3600 % 60);
++ positionContainer.firstChild.nodeValue = hours + ':' + mins + ':' + secs;
++ }
++
++ this.update = function()
++ {
++ that.updatePosition(that.sound.position / 1000);
++ if (that.sound.isBuffering) {
++ that.setStateStyle(that.currentLink, 'loading');
++ } else {
++ that.setStateStyle(that.currentLink, 'playing');
++ }
++ }
++
++ this.hasClass = function(element, className) {
++ if (typeof(element.className) != 'undefined')
++ return new RegExp('(^|\\s)' + className + '(\\s|$)').test(element.className);
++
++ return false;
++ }
++
++ this.byClass = function(root, tag, className) {
++ var result = [];
++ var nodes = root.getElementsByTagName(tag);
++ var i;
++ for (i = 0; i < nodes.length; i++) {
++ if (this.hasClass(nodes[i], className))
++ result.push(nodes[i]);
++ }
++ return result;
++ }
++
++ this.setSoundManager = function(soundManager) {
++ this.soundManager = soundManager;
++ }
++
++ TelemetaDom.ready(function() { that.init(cfg); });
++}
++
++(function(){
++
++ var DomReady = window.TelemetaDom = {};
++
++ // Everything that has to do with properly supporting our document ready event. Brought over from the most awesome jQuery.
++
++ var userAgent = navigator.userAgent.toLowerCase();
++
++ // Figure out what browser is being used
++ var browser = {
++ version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
++ safari: /webkit/.test(userAgent),
++ opera: /opera/.test(userAgent),
++ msie: (/msie/.test(userAgent)) && (!/opera/.test( userAgent )),
++ mozilla: (/mozilla/.test(userAgent)) && (!/(compatible|webkit)/.test(userAgent))
++ };
++
++ var readyBound = false;
++ var isReady = false;
++ var readyList = [];
++
++ // Handle when the DOM is ready
++ function domReady() {
++ // Make sure that the DOM is not already loaded
++ if(!isReady) {
++ // Remember that the DOM is ready
++ isReady = true;
++
++ if(readyList) {
++ for(var fn = 0; fn < readyList.length; fn++) {
++ readyList[fn].call(window, []);
++ }
++
++ readyList = [];
++ }
++ }
++ };
++
++ // From Simon Willison. A safe way to fire onload w/o screwing up everyone else.
++ function addLoadEvent(func) {
++ var oldonload = window.onload;
++ if (typeof window.onload != 'function') {
++ window.onload = func;
++ } else {
++ window.onload = function() {
++ if (oldonload) {
++ oldonload();
++ }
++ func();
++ }
++ }
++ };
++
++ // does the heavy work of working through the browsers idiosyncracies (let's call them that) to hook onload.
++ function bindReady() {
++ if(readyBound) {
++ return;
++ }
++
++ readyBound = true;
++
++ // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event
++ if (document.addEventListener && !browser.opera) {
++ // Use the handy event callback
++ document.addEventListener("DOMContentLoaded", domReady, false);
++ }
++
++ // If IE is used and is not in a frame
++ // Continually check to see if the document is ready
++ if (browser.msie && window == top) (function(){
++ if (isReady) return;
++ try {
++ // If IE is used, use the trick by Diego Perini
++ // http://javascript.nwbox.com/IEContentLoaded/
++ document.documentElement.doScroll("left");
++ } catch(error) {
++ setTimeout(arguments.callee, 0);
++ return;
++ }
++ // and execute any waiting functions
++ domReady();
++ })();
++
++ if(browser.opera) {
++ document.addEventListener( "DOMContentLoaded", function () {
++ if (isReady) return;
++ for (var i = 0; i < document.styleSheets.length; i++)
++ if (document.styleSheets[i].disabled) {
++ setTimeout( arguments.callee, 0 );
++ return;
++ }
++ // and execute any waiting functions
++ domReady();
++ }, false);
++ }
++
++ if(browser.safari) {
++ var numStyles;
++ (function(){
++ if (isReady) return;
++ if (document.readyState != "loaded" && document.readyState != "complete") {
++ setTimeout( arguments.callee, 0 );
++ return;
++ }
++ if (numStyles === undefined) {
++ var links = document.getElementsByTagName("link");
++ for (var i=0; i < links.length; i++) {
++ if(links[i].getAttribute('rel') == 'stylesheet') {
++ numStyles++;
++ }
++ }
++ var styles = document.getElementsByTagName("style");
++ numStyles += styles.length;
++ }
++ if (document.styleSheets.length != numStyles) {
++ setTimeout( arguments.callee, 0 );
++ return;
++ }
++
++ // and execute any waiting functions
++ domReady();
++ })();
++ }
++
++ // A fallback to window.onload, that will always work
++ addLoadEvent(domReady);
++ };
++
++ // This is the public function that people can use to hook up ready.
++ DomReady.ready = function(fn, args) {
++ // Attach the listeners
++ bindReady();
++
++ // If the DOM is already ready
++ if (isReady) {
++ // Execute the function immediately
++ fn.call(window, []);
++ } else {
++ // Add the function to the wait list
++ readyList.push( function() { return fn.call(window, []); } );
++ }
++ };
++
++ bindReady();
++
++})();
--- /dev/null
--- /dev/null
++/*\r
++ SoundManager 2: Javascript Sound for the Web\r
++ --------------------------------------------\r
++ http://schillmania.com/projects/soundmanager2/\r
++\r
++ Copyright (c) 2008, Scott Schiller. All rights reserved.\r
++ Code licensed under the BSD License:\r
++ http://schillmania.com/projects/soundmanager2/license.txt\r
++\r
++ V2.94a.20090206\r
++*/\r
++var soundManager=null;function SoundManager(b,a){this.flashVersion=8;this.debugMode=true;this.useConsole=true;this.consoleOnly=false;this.waitForWindowLoad=false;this.nullURL="null.mp3";this.allowPolling=true;this.useMovieStar=false;this.bgColor="#ffffff";this.useHighPerformance=false;this.flashLoadTimeout=750;this.defaultOptions={autoLoad:false,stream:true,autoPlay:false,onid3:null,onload:null,whileloading:null,onplay:null,onpause:null,onresume:null,whileplaying:null,onstop:null,onfinish:null,onbeforefinish:null,onbeforefinishtime:5000,onbeforefinishcomplete:null,onjustbeforefinish:null,onjustbeforefinishtime:200,multiShot:true,position:null,pan:0,volume:100};this.flash9Options={onbufferchange:null,isMovieStar:null,usePeakData:false,useWaveformData:false,useEQData:false};this.movieStarOptions={onmetadata:null,useVideo:false};var f=null;var e=this;this.version=null;this.versionNumber="V2.94a.20090206";this.movieURL=null;this.url=null;this.altURL=null;this.swfLoaded=false;this.enabled=false;this.o=null;this.id=(a||"sm2movie");this.oMC=null;this.sounds={};this.soundIDs=[];this.muted=false;this.wmode=null;this.isIE=(navigator.userAgent.match(/MSIE/i));this.isSafari=(navigator.userAgent.match(/safari/i));this.isGecko=(navigator.userAgent.match(/gecko/i));this.debugID="soundmanager-debug";this._debugOpen=true;this._didAppend=false;this._appendSuccess=false;this._didInit=false;this._disabled=false;this._windowLoaded=false;this._hasConsole=(typeof console!="undefined"&&typeof console.log!="undefined");this._debugLevels=["log","info","warn","error"];this._defaultFlashVersion=8;this._oRemoved=null;this._oRemovedHTML=null;var g=function(h){return document.getElementById(h)};this.filePatterns={flash8:/\.mp3(\?.*)?$/i,flash9:/\.mp3(\?.*)?$/i};this.netStreamTypes=["aac","flv","mov","mp4","m4v","f4v","m4a","mp4v","3gp","3g2"];this.netStreamPattern=new RegExp("\\.("+this.netStreamTypes.join("|")+")(\\?.*)?$","i");this.filePattern=null;this.features={buffering:false,peakData:false,waveformData:false,eqData:false,movieStar:false};this.sandbox={type:null,types:{remote:"remote (domain-based) rules",localWithFile:"local with file access (no internet access)",localWithNetwork:"local with network (internet access only, no local access)",localTrusted:"local, trusted (local + internet access)"},description:null,noRemote:null,noLocal:null};this._setVersionInfo=function(){if(e.flashVersion!=8&&e.flashVersion!=9){alert('soundManager.flashVersion must be 8 or 9. "'+e.flashVersion+'" is invalid. Reverting to '+e._defaultFlashVersion+".");e.flashVersion=e._defaultFlashVersion}e.version=e.versionNumber+(e.flashVersion==9?" (AS3/Flash 9)":" (AS2/Flash 8)");if(e.flashVersion>8){e.defaultOptions=e._mergeObjects(e.defaultOptions,e.flash9Options);e.features.buffering=true}if(e.flashVersion>8&&e.useMovieStar){e.defaultOptions=e._mergeObjects(e.defaultOptions,e.movieStarOptions);e.filePatterns.flash9=new RegExp("\\.(mp3|"+e.netStreamTypes.join("|")+")(\\?.*)?$","i");e.features.movieStar=true}else{e.useMovieStar=false;e.features.movieStar=false}e.filePattern=e.filePatterns[(e.flashVersion!=8?"flash9":"flash8")];e.movieURL=(e.flashVersion==8?"soundmanager2.swf":"soundmanager2_flash9.swf");e.features.peakData=e.features.waveformData=e.features.eqData=(e.flashVersion==9)};this._overHTTP=(document.location?document.location.protocol.match(/http/i):null);this._waitingforEI=false;this._initPending=false;this._tryInitOnFocus=(this.isSafari&&typeof document.hasFocus=="undefined");this._isFocused=(typeof document.hasFocus!="undefined"?document.hasFocus():null);this._okToDisable=!this._tryInitOnFocus;this.useAltURL=!this._overHTTP;var d="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html";this.supported=function(){return(e._didInit&&!e._disabled)};this.getMovie=function(h){return e.isIE?window[h]:(e.isSafari?g(h)||document[h]:g(h))};this.loadFromXML=function(h){try{e.o._loadFromXML(h)}catch(i){e._failSafely();return true}};this.createSound=function(i){if(!e._didInit){throw new Error("soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods")}if(arguments.length==2){i={id:arguments[0],url:arguments[1]}}var j=e._mergeObjects(i);var h=j;if(e._idCheck(h.id,true)){return e.sounds[h.id]}if(e.flashVersion>8&&e.useMovieStar){if(h.isMovieStar===null){h.isMovieStar=(h.url.match(e.netStreamPattern)?true:false)}if(h.isMovieStar&&(h.usePeakData||h.useWaveformData||h.useEQData)){h.usePeakData=false;h.useWaveformData=false;h.useEQData=false}}e.sounds[h.id]=new f(h);e.soundIDs[e.soundIDs.length]=h.id;if(e.flashVersion==8){e.o._createSound(h.id,h.onjustbeforefinishtime)}else{e.o._createSound(h.id,h.url,h.onjustbeforefinishtime,h.usePeakData,h.useWaveformData,h.useEQData,h.isMovieStar,(h.isMovieStar?h.useVideo:false))}if(h.autoLoad||h.autoPlay){if(e.sounds[h.id]){e.sounds[h.id].load(h)}}if(h.autoPlay){e.sounds[h.id].play()}return e.sounds[h.id]};this.createVideo=function(h){if(arguments.length==2){h={id:arguments[0],url:arguments[1]}}if(e.flashVersion>=9){h.isMovieStar=true;h.useVideo=true}else{return false}return e.createSound(h)};this.destroySound=function(j,h){if(!e._idCheck(j)){return false}for(var k=0;k<e.soundIDs.length;k++){if(e.soundIDs[k]==j){e.soundIDs.splice(k,1);continue}}e.sounds[j].unload();if(!h){e.sounds[j].destruct()}delete e.sounds[j]};this.destroyVideo=this.destroySound;this.load=function(h,i){if(!e._idCheck(h)){return false}e.sounds[h].load(i)};this.unload=function(h){if(!e._idCheck(h)){return false}e.sounds[h].unload()};this.play=function(h,i){if(!e._idCheck(h)){if(typeof i!="Object"){i={url:i}}if(i&&i.url){i.id=h;e.createSound(i)}else{return false}}e.sounds[h].play(i)};this.start=this.play;this.setPosition=function(h,i){if(!e._idCheck(h)){return false}e.sounds[h].setPosition(i)};this.stop=function(h){if(!e._idCheck(h)){return false}e.sounds[h].stop()};this.stopAll=function(){for(var h in e.sounds){if(e.sounds[h] instanceof f){e.sounds[h].stop()}}};this.pause=function(h){if(!e._idCheck(h)){return false}e.sounds[h].pause()};this.pauseAll=function(){for(var h=e.soundIDs.length;h--;){e.sounds[e.soundIDs[h]].pause()}};this.resume=function(h){if(!e._idCheck(h)){return false}e.sounds[h].resume()};this.resumeAll=function(){for(var h=e.soundIDs.length;h--;){e.sounds[e.soundIDs[h]].resume()}};this.togglePause=function(h){if(!e._idCheck(h)){return false}e.sounds[h].togglePause()};this.setPan=function(h,i){if(!e._idCheck(h)){return false}e.sounds[h].setPan(i)};this.setVolume=function(i,h){if(!e._idCheck(i)){return false}e.sounds[i].setVolume(h)};this.mute=function(h){if(typeof h!="string"){h=null}if(!h){for(var j=e.soundIDs.length;j--;){e.sounds[e.soundIDs[j]].mute()}e.muted=true}else{if(!e._idCheck(h)){return false}e.sounds[h].mute()}};this.muteAll=function(){e.mute()};this.unmute=function(h){if(typeof h!="string"){h=null}if(!h){for(var j=e.soundIDs.length;j--;){e.sounds[e.soundIDs[j]].unmute()}e.muted=false}else{if(!e._idCheck(h)){return false}e.sounds[h].unmute()}};this.unmuteAll=function(){e.unmute()};this.getMemoryUse=function(){if(e.flashVersion==8){return 0}if(e.o){return parseInt(e.o._getMemoryUse(),10)}};this.setPolling=function(h){if(!e.o||!e.allowPolling){return false}e.o._setPolling(h)};this.disable=function(j){if(typeof j=="undefined"){j=false}if(e._disabled){return false}e._disabled=true;for(var h=e.soundIDs.length;h--;){e._disableObject(e.sounds[e.soundIDs[h]])}e.initComplete(j)};this.canPlayURL=function(h){return(h?(h.match(e.filePattern)?true:false):null)};this.getSoundById=function(i,j){if(!i){throw new Error("SoundManager.getSoundById(): sID is null/undefined")}var h=e.sounds[i];return h};this.onload=function(){soundManager._wD("<em>Warning</em>: soundManager.onload() is undefined.",2)};this.onerror=function(){};this._idCheck=this.getSoundById;var c=function(){return false};c._protected=true;this._disableObject=function(i){for(var h in i){if(typeof i[h]=="function"&&typeof i[h]._protected=="undefined"){i[h]=c}}h=null};this._failSafely=function(h){if(typeof h=="undefined"){h=false}if(!e._disabled||h){e.disable(h)}};this._normalizeMovieURL=function(h){var i=null;if(h){if(h.match(/\.swf(\?.*)?$/i)){i=h.substr(h.toLowerCase().lastIndexOf(".swf?")+4);if(i){return h}}else{if(h.lastIndexOf("/")!=h.length-1){h=h+"/"}}}return(h&&h.lastIndexOf("/")!=-1?h.substr(0,h.lastIndexOf("/")+1):"./")+e.movieURL};this._getDocument=function(){return(document.body?document.body:(document.documentElement?document.documentElement:document.getElementsByTagName("div")[0]))};this._getDocument._protected=true;this._createMovie=function(n,l){if(e._didAppend&&e._appendSuccess){return false}if(window.location.href.indexOf("debug=1")+1){e.debugMode=true}e._didAppend=true;e._setVersionInfo();var u=(l?l:e.url);var k=(e.altURL?e.altURL:u);e.url=e._normalizeMovieURL(e._overHTTP?u:k);l=e.url;var m=null;if(e.useHighPerformance&&e.useMovieStar){m="Note: disabling highPerformance, not applicable with movieStar mode on";e.useHighPerformance=false}e.wmode=(e.useHighPerformance&&!e.useMovieStar?"transparent":"");var t={name:n,id:n,src:l,width:"100%",height:"100%",quality:"high",allowScriptAccess:"always",bgcolor:e.bgColor,pluginspage:"http://www.macromedia.com/go/getflashplayer",type:"application/x-shockwave-flash",wmode:e.wmode};var w={id:n,data:l,type:"application/x-shockwave-flash",width:"100%",height:"100%",wmode:e.wmode};var o={movie:l,AllowScriptAccess:"always",quality:"high",bgcolor:e.bgColor,wmode:e.wmode};var j=null;var r=null;if(e.isIE){j=document.createElement("div");var h='<object id="'+n+'" data="'+l+'" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="'+l+'" /><param name="AllowScriptAccess" value="always" /><param name="quality" value="high" />'+(e.useHighPerformance&&!e.useMovieStar?'<param name="wmode" value="'+e.wmode+'" /> ':"")+'<param name="bgcolor" value="'+e.bgColor+'" /><!-- --></object>'}else{j=document.createElement("embed");for(r in t){if(t.hasOwnProperty(r)){j.setAttribute(r,t[r])}}}var q="soundManager._createMovie(): appendChild/innerHTML set failed. May be app/xhtml+xml DOM-related.";var i=e._getDocument();if(i){e.oMC=g("sm2-container")?g("sm2-container"):document.createElement("div");if(!e.oMC.id){e.oMC.id="sm2-container";e.oMC.className="movieContainer";var z=null;var p=null;if(e.useHighPerformance){z={position:"fixed",width:"8px",height:"8px",bottom:"0px",left:"0px"}}else{z={position:"absolute",width:"1px",height:"1px",top:"-999px",left:"-999px"}}var y=null;for(y in z){if(z.hasOwnProperty(y)){e.oMC.style[y]=z[y]}}try{if(!e.isIE){e.oMC.appendChild(j)}i.appendChild(e.oMC);if(e.isIE){p=e.oMC.appendChild(document.createElement("div"));p.className="sm2-object-box";p.innerHTML=h}e._appendSuccess=true}catch(v){throw new Error(q)}}else{e.oMC.appendChild(j);if(e.isIE){p=e.oMC.appendChild(document.createElement("div"));p.className="sm2-object-box";p.innerHTML=h}e._appendSuccess=true}}};this._writeDebug=function(h,j,i){};this._writeDebug._protected=true;this._wdCount=0;this._wdCount._protected=true;this._wD=this._writeDebug;this._toggleDebug=function(){};this._toggleDebug._protected=true;this._debug=function(){};this._debugTS=function(j,h,i){};this._debugTS._protected=true;this._mergeObjects=function(j,h){var m={};for(var k in j){if(j.hasOwnProperty(k)){m[k]=j[k]}}var l=(typeof h=="undefined"?e.defaultOptions:h);for(var n in l){if(l.hasOwnProperty(n)&&typeof m[n]=="undefined"){m[n]=l[n]}}return m};this.createMovie=function(h){if(h){e.url=h}e._initMovie()};this.go=this.createMovie;this._initMovie=function(){if(e.o){return false}e.o=e.getMovie(e.id);if(!e.o){if(!e.oRemoved){e._createMovie(e.id,e.url)}else{if(!e.isIE){e.oMC.appendChild(e.oRemoved)}else{e.oMC.innerHTML=e.oRemovedHTML}e.oRemoved=null;e._didAppend=true}e.o=e.getMovie(e.id)}};this.waitForExternalInterface=function(){if(e._waitingForEI){return false}e._waitingForEI=true;if(e._tryInitOnFocus&&!e._isFocused){return false}if(e.flashLoadTimeout>0){setTimeout(function(){if(!e._didInit&&e._okToDisable){e._failSafely(true)}},e.flashLoadTimeout)}};this.handleFocus=function(){if(e._isFocused||!e._tryInitOnFocus){return true}e._okToDisable=true;e._isFocused=true;if(e._tryInitOnFocus){window.removeEventListener("mousemove",e.handleFocus,false)}e._waitingForEI=false;setTimeout(e.waitForExternalInterface,500);if(window.removeEventListener){window.removeEventListener("focus",e.handleFocus,false)}else{if(window.detachEvent){window.detachEvent("onfocus",e.handleFocus)}}};this.initComplete=function(h){if(e._didInit){return false}e._didInit=true;if(e._disabled||h){e.onerror.apply(window);return false}else{}if(e.waitForWindowLoad&&!e._windowLoaded){if(window.addEventListener){window.addEventListener("load",e.initUserOnload,false)}else{if(window.attachEvent){window.attachEvent("onload",e.initUserOnload)}}return false}else{e.initUserOnload()}};this.initUserOnload=function(){e.onload.apply(window)};this.init=function(){e._initMovie();if(e._didInit){return false}if(window.removeEventListener){window.removeEventListener("load",e.beginDelayedInit,false)}else{if(window.detachEvent){window.detachEvent("onload",e.beginDelayedInit)}}try{e.o._externalInterfaceTest(false);e.setPolling(true);if(!e.debugMode){e.o._disableDebug()}e.enabled=true}catch(h){e._failSafely(true);e.initComplete();return false}e.initComplete()};this.beginDelayedInit=function(){e._windowLoaded=true;setTimeout(e.waitForExternalInterface,500);setTimeout(e.beginInit,20)};this.beginInit=function(){if(e._initPending){return false}e.createMovie();e._initMovie();e._initPending=true;return true};this.domContentLoaded=function(){if(document.removeEventListener){document.removeEventListener("DOMContentLoaded",e.domContentLoaded,false)}e.go()};this._externalInterfaceOK=function(){if(e.swfLoaded){return false}e.swfLoaded=true;e._tryInitOnFocus=false;if(e.isIE){setTimeout(e.init,100)}else{e.init()}};this._setSandboxType=function(h){var i=e.sandbox;i.type=h;i.description=i.types[(typeof i.types[h]!="undefined"?h:"unknown")];if(i.type=="localWithFile"){i.noRemote=true;i.noLocal=false}else{if(i.type=="localWithNetwork"){i.noRemote=false;i.noLocal=true}else{if(i.type=="localTrusted"){i.noRemote=false;i.noLocal=false}}}};this.reboot=function(){if(e.soundIDs.length){}for(var h=e.soundIDs.length;h--;){e.sounds[e.soundIDs[h]].destruct()}try{if(e.isIE){e.oRemovedHTML=e.o.innerHTML}e.oRemoved=e.o.parentNode.removeChild(e.o)}catch(j){}e.enabled=false;e._didInit=false;e._waitingForEI=false;e._initPending=false;e._didInit=false;e._didAppend=false;e._appendSuccess=false;e._didInit=false;e._disabled=false;e._waitingforEI=true;e.swfLoaded=false;e.soundIDs={};e.sounds=[];e.o=null;window.setTimeout(function(){soundManager.beginDelayedInit()},20)};this.destruct=function(){e.disable(true)};f=function(h){var i=this;this.sID=h.id;this.url=h.url;this.options=e._mergeObjects(h);this.instanceOptions=this.options;this._iO=this.instanceOptions;this.pan=this.options.pan;this.volume=this.options.volume;this._debug=function(){if(e.debugMode){var l=null;var n=[];var k=null;var m=null;var j=64;for(l in i.options){if(i.options[l]!==null){if(i.options[l] instanceof Function){k=i.options[l].toString();k=k.replace(/\s\s+/g," ");m=k.indexOf("{");n[n.length]=" "+l+": {"+k.substr(m+1,(Math.min(Math.max(k.indexOf("\n")-1,j),j))).replace(/\n/g,"")+"... }"}else{n[n.length]=" "+l+": "+i.options[l]}}}}};this._debug();this.id3={};this.resetProperties=function(j){i.bytesLoaded=null;i.bytesTotal=null;i.position=null;i.duration=null;i.durationEstimate=null;i.loaded=false;i.playState=0;i.paused=false;i.readyState=0;i.muted=false;i.didBeforeFinish=false;i.didJustBeforeFinish=false;i.isBuffering=false;i.instanceOptions={};i.instanceCount=0;i.peakData={left:0,right:0};i.waveformData=[];i.eqData=[]};i.resetProperties();this.load=function(j){if(typeof j!="undefined"){i._iO=e._mergeObjects(j);i.instanceOptions=i._iO}else{j=i.options;i._iO=j;i.instanceOptions=i._iO}if(typeof i._iO.url=="undefined"){i._iO.url=i.url}if(i._iO.url==i.url&&i.readyState!==0&&i.readyState!=2){return false}i.loaded=false;i.readyState=1;i.playState=0;try{if(e.flashVersion==8){e.o._load(i.sID,i._iO.url,i._iO.stream,i._iO.autoPlay,(i._iO.whileloading?1:0))}else{e.o._load(i.sID,i._iO.url,i._iO.stream?true:false,i._iO.autoPlay?true:false);if(i._iO.isMovieStar&&i._iO.autoLoad&&!i._iO.autoPlay){i.pause()}}}catch(k){e.onerror();e.disable()}};this.unload=function(){if(i.readyState!==0){if(i.readyState!=2){i.setPosition(0,true)}e.o._unload(i.sID,e.nullURL);i.resetProperties()}};this.destruct=function(){e.o._destroySound(i.sID);e.destroySound(i.sID,true)};this.play=function(k){if(!k){k={}}i._iO=e._mergeObjects(k,i._iO);i._iO=e._mergeObjects(i._iO,i.options);i.instanceOptions=i._iO;if(i.playState==1){var j=i._iO.multiShot;if(!j){return false}}if(!i.loaded){if(i.readyState===0){i._iO.stream=true;i._iO.autoPlay=true;i.load(i._iO)}else{if(i.readyState==2){return false}}}if(i.paused){i.resume()}else{i.playState=1;if(!i.instanceCount||e.flashVersion==9){i.instanceCount++}i.position=(typeof i._iO.position!="undefined"&&!isNaN(i._iO.position)?i._iO.position:0);if(i._iO.onplay){i._iO.onplay.apply(i)}i.setVolume(i._iO.volume,true);i.setPan(i._iO.pan,true);e.o._start(i.sID,i._iO.loop||1,(e.flashVersion==9?i.position:i.position/1000))}};this.start=this.play;this.stop=function(j){if(i.playState==1){i.playState=0;i.paused=false;if(i._iO.onstop){i._iO.onstop.apply(i)}e.o._stop(i.sID,j);i.instanceCount=0;i._iO={}}};this.setPosition=function(k,j){if(typeof k=="undefined"){k=0}var l=Math.min(i.duration,Math.max(k,0));i._iO.position=l;e.o._setPosition(i.sID,(e.flashVersion==9?i._iO.position:i._iO.position/1000),(i.paused||!i.playState))};this.pause=function(){if(i.paused||i.playState===0){return false}i.paused=true;e.o._pause(i.sID);if(i._iO.onpause){i._iO.onpause.apply(i)}};this.resume=function(){if(!i.paused||i.playState===0){return false}i.paused=false;e.o._pause(i.sID);if(i._iO.onresume){i._iO.onresume.apply(i)}};this.togglePause=function(){if(!i.playState){i.play({position:(e.flashVersion==9?i.position:i.position/1000)});return false}if(i.paused){i.resume()}else{i.pause()}};this.setPan=function(k,j){if(typeof k=="undefined"){k=0}if(typeof j=="undefined"){j=false}e.o._setPan(i.sID,k);i._iO.pan=k;if(!j){i.pan=k}};this.setVolume=function(j,k){if(typeof j=="undefined"){j=100}if(typeof k=="undefined"){k=false}e.o._setVolume(i.sID,(e.muted&&!i.muted)||i.muted?0:j);i._iO.volume=j;if(!k){i.volume=j}};this.mute=function(){i.muted=true;e.o._setVolume(i.sID,0)};this.unmute=function(){i.muted=false;var j=typeof i._iO.volume!="undefined";e.o._setVolume(i.sID,j?i._iO.volume:i.options.volume)};this._whileloading=function(j,k,l){if(!i._iO.isMovieStar){i.bytesLoaded=j;i.bytesTotal=k;i.duration=Math.floor(l);i.durationEstimate=parseInt((i.bytesTotal/i.bytesLoaded)*i.duration,10);if(i.readyState!=3&&i._iO.whileloading){i._iO.whileloading.apply(i)}}else{i.bytesLoaded=j;i.bytesTotal=k;i.duration=Math.floor(l);i.durationEstimate=i.duration;if(i.readyState!=3&&i._iO.whileloading){i._iO.whileloading.apply(i)}}};this._onid3=function(n,k){var o=[];for(var m=0,l=n.length;m<l;m++){o[n[m]]=k[m]}i.id3=e._mergeObjects(i.id3,o);if(i._iO.onid3){i._iO.onid3.apply(i)}};this._whileplaying=function(k,l,j,m){if(isNaN(k)||k===null){return false}i.position=k;if(i._iO.usePeakData&&typeof l!="undefined"&&l){i.peakData={left:l.leftPeak,right:l.rightPeak}}if(i._iO.useWaveformData&&typeof j!="undefined"&&j){i.waveformData=j}if(i._iO.useEQData&&typeof m!="undefined"&&m){i.eqData=m}if(i.playState==1){if(i._iO.whileplaying){i._iO.whileplaying.apply(i)}if(i.loaded&&i._iO.onbeforefinish&&i._iO.onbeforefinishtime&&!i.didBeforeFinish&&i.duration-i.position<=i._iO.onbeforefinishtime){i._onbeforefinish()}}};this._onload=function(j){j=(j==1?true:false);i.loaded=j;i.readyState=j?3:2;if(i._iO.onload){i._iO.onload.apply(i)}};this._onbeforefinish=function(){if(!i.didBeforeFinish){i.didBeforeFinish=true;if(i._iO.onbeforefinish){i._iO.onbeforefinish.apply(i)}}};this._onjustbeforefinish=function(j){if(!i.didJustBeforeFinish){i.didJustBeforeFinish=true;if(i._iO.onjustbeforefinish){i._iO.onjustbeforefinish.apply(i)}}};this._onfinish=function(){if(i._iO.onbeforefinishcomplete){i._iO.onbeforefinishcomplete.apply(i)}i.didBeforeFinish=false;i.didJustBeforeFinish=false;if(i.instanceCount){i.instanceCount--;if(!i.instanceCount){i.playState=0;i.paused=false;i.instanceCount=0;i.instanceOptions={};if(i._iO.onfinish){i._iO.onfinish.apply(i)}}}else{}};this._onmetadata=function(j){if(!j.width&&!j.height){j.width=320;j.height=240}i.metadata=j;i.width=j.width;i.height=j.height;if(i._iO.onmetadata){i._iO.onmetadata.apply(i)}};this._onbufferchange=function(j){if(j==i.isBuffering){return false}i.isBuffering=(j==1?true:false);if(i._iO.onbufferchange){i._iO.onbufferchange.apply(i)}}};if(window.addEventListener){window.addEventListener("focus",e.handleFocus,false);window.addEventListener("load",e.beginDelayedInit,false);window.addEventListener("unload",e.destruct,false);if(e._tryInitOnFocus){window.addEventListener("mousemove",e.handleFocus,false)}}else{if(window.attachEvent){window.attachEvent("onfocus",e.handleFocus);window.attachEvent("onload",e.beginDelayedInit);window.attachEvent("unload",e.destruct)}else{soundManager.onerror();soundManager.disable()}}if(document.addEventListener){document.addEventListener("DOMContentLoaded",e.domContentLoaded,false)}}soundManager=new SoundManager();
--- /dev/null
--- /dev/null
++/*!\r
++ SoundManager 2: Javascript Sound for the Web\r
++ --------------------------------------------\r
++ http://schillmania.com/projects/soundmanager2/\r
++\r
++ Copyright (c) 2008, Scott Schiller. All rights reserved.\r
++ Code licensed under the BSD License:\r
++ http://schillmania.com/projects/soundmanager2/license.txt\r
++\r
++ V2.94a.20090206\r
++*/\r
++\r
++var soundManager = null;\r
++\r
++function SoundManager(smURL,smID) {\r
++ \r
++ this.flashVersion = 8; // version of flash to require, either 8 or 9. Some API features require Flash 9.\r
++ this.debugMode = true; // enable debugging output (div#soundmanager-debug, OR console if available + configured)\r
++ this.useConsole = true; // use firebug/safari console.log()-type debug console if available\r
++ this.consoleOnly = false; // if console is being used, do not create/write to #soundmanager-debug\r
++ this.waitForWindowLoad = false; // force SM2 to wait for window.onload() before trying to call soundManager.onload()\r
++ this.nullURL = 'null.mp3'; // path to "null" (empty) MP3 file, used to unload sounds (Flash 8 only)\r
++ this.allowPolling = true; // allow flash to poll for status update (required for "while playing", peak, sound spectrum functions to work.)\r
++ this.useMovieStar = false; // enable support for Flash 9.0r115+ (codename "MovieStar") MPEG4 audio + video formats (AAC, M4V, FLV, MOV etc.)\r
++ this.bgColor = '#ffffff'; // movie (.swf) background color, useful if showing on-screen for video etc.\r
++ this.useHighPerformance = false; // position:fixed flash movie gives increased js/flash speed\r
++ this.flashLoadTimeout = 750; // ms to wait for flash movie to load before failing (0 = infinity)\r
++\r
++ this.defaultOptions = {\r
++ 'autoLoad': false, // enable automatic loading (otherwise .load() will be called on demand with .play(), the latter being nicer on bandwidth - if you want to .load yourself, you also can)\r
++ 'stream': true, // allows playing before entire file has loaded (recommended)\r
++ 'autoPlay': false, // enable playing of file as soon as possible (much faster if "stream" is true)\r
++ 'onid3': null, // callback function for "ID3 data is added/available"\r
++ 'onload': null, // callback function for "load finished"\r
++ 'whileloading': null, // callback function for "download progress update" (X of Y bytes received)\r
++ 'onplay': null, // callback for "play" start\r
++ 'onpause': null, // callback for "pause"\r
++ 'onresume': null, // callback for "resume" (pause toggle)\r
++ 'whileplaying': null, // callback during play (position update)\r
++ 'onstop': null, // callback for "user stop"\r
++ 'onfinish': null, // callback function for "sound finished playing"\r
++ 'onbeforefinish': null, // callback for "before sound finished playing (at [time])"\r
++ 'onbeforefinishtime': 5000, // offset (milliseconds) before end of sound to trigger beforefinish (eg. 1000 msec = 1 second)\r
++ 'onbeforefinishcomplete':null, // function to call when said sound finishes playing\r
++ 'onjustbeforefinish':null, // callback for [n] msec before end of current sound\r
++ 'onjustbeforefinishtime':200, // [n] - if not using, set to 0 (or null handler) and event will not fire.\r
++ 'multiShot': true, // let sounds "restart" or layer on top of each other when played multiple times, rather than one-shot/one at a time\r
++ 'position': null, // offset (milliseconds) to seek to within loaded sound data.\r
++ 'pan': 0, // "pan" settings, left-to-right, -100 to 100\r
++ 'volume': 100 // self-explanatory. 0-100, the latter being the max.\r
++ };\r
++\r
++ this.flash9Options = { // flash 9-only options, merged into defaultOptions if flash 9 is being used\r
++ 'onbufferchange': null, // callback for "isBuffering" property change\r
++ 'isMovieStar': null, // "MovieStar" MPEG4 audio/video mode. Null (default) = auto detect MP4, AAC etc. based on URL. true = force on, ignore URL\r
++ 'usePeakData': false, // enable left/right channel peak (level) data\r
++ 'useWaveformData': false, // enable sound spectrum (raw waveform data) - WARNING: CPU-INTENSIVE: may set CPUs on fire.\r
++ 'useEQData': false // enable sound EQ (frequency spectrum data) - WARNING: Also CPU-intensive.\r
++ };\r
++\r
++ this.movieStarOptions = { // flash 9.0r115+ MPEG4 audio/video options, merged into defaultOptions if flash 9 + movieStar mode is enabled\r
++ 'onmetadata': null, // callback for when video width/height etc. are received\r
++ 'useVideo': false // if loading movieStar content, whether to show video\r
++ };\r
++\r
++ // jslint global declarations\r
++ /*global sm2Debugger, alert, console, document, navigator, setTimeout, window */\r
++\r
++ var SMSound = null; // defined later\r
++\r
++ var _s = this;\r
++ this.version = null;\r
++ this.versionNumber = 'V2.94a.20090206';\r
++ this.movieURL = null;\r
++ this.url = null;\r
++ this.altURL = null;\r
++ this.swfLoaded = false;\r
++ this.enabled = false;\r
++ this.o = null;\r
++ this.id = (smID||'sm2movie');\r
++ this.oMC = null;\r
++ this.sounds = {};\r
++ this.soundIDs = [];\r
++ this.muted = false;\r
++ this.wmode = null;\r
++ this.isIE = (navigator.userAgent.match(/MSIE/i));\r
++ this.isSafari = (navigator.userAgent.match(/safari/i));\r
++ this.isGecko = (navigator.userAgent.match(/gecko/i));\r
++ this.debugID = 'soundmanager-debug';\r
++ this._debugOpen = true;\r
++ this._didAppend = false;\r
++ this._appendSuccess = false;\r
++ this._didInit = false;\r
++ this._disabled = false;\r
++ this._windowLoaded = false;\r
++ this._hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined');\r
++ this._debugLevels = ['log','info','warn','error'];\r
++ this._defaultFlashVersion = 8;\r
++ this._oRemoved = null;\r
++ this._oRemovedHTML = null;\r
++\r
++ var _$ = function(sID) {\r
++ return document.getElementById(sID);\r
++ };\r
++\r
++ this.filePatterns = {\r
++ flash8: /\.mp3(\?.*)?$/i,\r
++ flash9: /\.mp3(\?.*)?$/i\r
++ };\r
++\r
++ this.netStreamTypes = ['aac','flv','mov','mp4','m4v','f4v','m4a','mp4v','3gp','3g2']; // Flash v9.0r115+ "moviestar" formats\r
++ this.netStreamPattern = new RegExp('\\.('+this.netStreamTypes.join('|')+')(\\?.*)?$','i');\r
++\r
++ this.filePattern = null;\r
++ this.features = {\r
++ buffering: false,\r
++ peakData: false,\r
++ waveformData: false,\r
++ eqData: false,\r
++ movieStar: false\r
++ };\r
++\r
++ this.sandbox = {\r
++ 'type': null,\r
++ 'types': {\r
++ 'remote': 'remote (domain-based) rules',\r
++ 'localWithFile': 'local with file access (no internet access)',\r
++ 'localWithNetwork': 'local with network (internet access only, no local access)',\r
++ 'localTrusted': 'local, trusted (local + internet access)'\r
++ },\r
++ 'description': null,\r
++ 'noRemote': null,\r
++ 'noLocal': null\r
++ };\r
++\r
++ this._setVersionInfo = function() {\r
++ if (_s.flashVersion != 8 && _s.flashVersion != 9) {\r
++ alert('soundManager.flashVersion must be 8 or 9. "'+_s.flashVersion+'" is invalid. Reverting to '+_s._defaultFlashVersion+'.');\r
++ _s.flashVersion = _s._defaultFlashVersion;\r
++ }\r
++ _s.version = _s.versionNumber+(_s.flashVersion==9?' (AS3/Flash 9)':' (AS2/Flash 8)');\r
++ // set up default options\r
++ if (_s.flashVersion > 8) {\r
++ _s.defaultOptions = _s._mergeObjects(_s.defaultOptions,_s.flash9Options);\r
++ _s.features.buffering = true;\r
++ }\r
++ if (_s.flashVersion > 8 && _s.useMovieStar) {\r
++ // flash 9+ support for movieStar formats as well as MP3\r
++ _s.defaultOptions = _s._mergeObjects(_s.defaultOptions,_s.movieStarOptions);\r
++ _s.filePatterns.flash9 = new RegExp('\\.(mp3|'+_s.netStreamTypes.join('|')+')(\\?.*)?$','i');\r
++ _s.features.movieStar = true;\r
++ } else {\r
++ _s.useMovieStar = false;\r
++ _s.features.movieStar = false;\r
++ }\r
++ _s.filePattern = _s.filePatterns[(_s.flashVersion!=8?'flash9':'flash8')];\r
++ _s.movieURL = (_s.flashVersion==8?'soundmanager2.swf':'soundmanager2_flash9.swf');\r
++ _s.features.peakData = _s.features.waveformData = _s.features.eqData = (_s.flashVersion==9);\r
++ };\r
++\r
++ this._overHTTP = (document.location?document.location.protocol.match(/http/i):null);\r
++ this._waitingforEI = false;\r
++ this._initPending = false;\r
++ this._tryInitOnFocus = (this.isSafari && typeof document.hasFocus == 'undefined');\r
++ this._isFocused = (typeof document.hasFocus != 'undefined'?document.hasFocus():null);\r
++ this._okToDisable = !this._tryInitOnFocus;\r
++\r
++ this.useAltURL = !this._overHTTP; // use altURL if not "online"\r
++\r
++ var flashCPLink = 'http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html';\r
++\r
++ // --- public methods ---\r
++ \r
++ this.supported = function() {\r
++ return (_s._didInit && !_s._disabled);\r
++ };\r
++\r
++ this.getMovie = function(smID) {\r
++ return _s.isIE?window[smID]:(_s.isSafari?_$(smID)||document[smID]:_$(smID));\r
++ };\r
++\r
++ this.loadFromXML = function(sXmlUrl) {\r
++ try {\r
++ _s.o._loadFromXML(sXmlUrl);\r
++ } catch(e) {\r
++ _s._failSafely();\r
++ return true;\r
++ }\r
++ };\r
++\r
++ this.createSound = function(oOptions) {\r
++ if (!_s._didInit) {\r
++ throw new Error('soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods');\r
++ }\r
++ if (arguments.length == 2) {\r
++ // function overloading in JS! :) ..assume simple createSound(id,url) use case\r
++ oOptions = {'id':arguments[0],'url':arguments[1]};\r
++ }\r
++ var thisOptions = _s._mergeObjects(oOptions); // inherit SM2 defaults\r
++ var _tO = thisOptions; // alias\r
++ _s._wD('soundManager.createSound(): '+_tO.id+' ('+_tO.url+')',1);\r
++ if (_s._idCheck(_tO.id,true)) {\r
++ _s._wD('soundManager.createSound(): '+_tO.id+' exists',1);\r
++ return _s.sounds[_tO.id];\r
++ }\r
++ if (_s.flashVersion > 8 && _s.useMovieStar) {\r
++ if (_tO.isMovieStar === null) {\r
++ _tO.isMovieStar = (_tO.url.match(_s.netStreamPattern)?true:false);\r
++ }\r
++ if (_tO.isMovieStar) {\r
++ _s._wD('soundManager.createSound(): using MovieStar handling');\r
++ }\r
++ if (_tO.isMovieStar && (_tO.usePeakData || _tO.useWaveformData || _tO.useEQData)) {\r
++ _s._wD('Warning: peak/waveform/eqData features unsupported for non-MP3 formats');\r
++ _tO.usePeakData = false;\r
++ _tO.useWaveformData = false;\r
++ _tO.useEQData = false;\r
++ }\r
++ }\r
++ _s.sounds[_tO.id] = new SMSound(_tO);\r
++ _s.soundIDs[_s.soundIDs.length] = _tO.id;\r
++ // AS2:\r
++ if (_s.flashVersion == 8) {\r
++ _s.o._createSound(_tO.id,_tO.onjustbeforefinishtime);\r
++ } else {\r
++ _s.o._createSound(_tO.id,_tO.url,_tO.onjustbeforefinishtime,_tO.usePeakData,_tO.useWaveformData,_tO.useEQData,_tO.isMovieStar,(_tO.isMovieStar?_tO.useVideo:false));\r
++ }\r
++ if (_tO.autoLoad || _tO.autoPlay) {\r
++ // TODO: does removing timeout here cause problems?\r
++ if (_s.sounds[_tO.id]) {\r
++ _s.sounds[_tO.id].load(_tO);\r
++ }\r
++ }\r
++ if (_tO.autoPlay) {\r
++ _s.sounds[_tO.id].play();\r
++ }\r
++ return _s.sounds[_tO.id];\r
++ };\r
++\r
++ this.createVideo = function(oOptions) {\r
++ if (arguments.length==2) {\r
++ oOptions = {'id':arguments[0],'url':arguments[1]};\r
++ }\r
++ if (_s.flashVersion >= 9) {\r
++ oOptions.isMovieStar = true;\r
++ oOptions.useVideo = true;\r
++ } else {\r
++ _s._wD('soundManager.createVideo(): flash 9 required for video. Exiting.',2);\r
++ return false;\r
++ }\r
++ if (!_s.useMovieStar) {\r
++ _s._wD('soundManager.createVideo(): MovieStar mode not enabled. Exiting.',2);\r
++ }\r
++ return _s.createSound(oOptions);\r
++ };\r
++\r
++ this.destroySound = function(sID,bFromSound) {\r
++ // explicitly destroy a sound before normal page unload, etc.\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ for (var i=0; i<_s.soundIDs.length; i++) {\r
++ if (_s.soundIDs[i] == sID) {\r
++ _s.soundIDs.splice(i,1);\r
++ continue;\r
++ }\r
++ }\r
++ // conservative option: avoid crash with ze flash 8\r
++ // calling destroySound() within a sound onload() might crash firefox, certain flavours of winXP + flash 8??\r
++ // if (_s.flashVersion != 8) {\r
++ _s.sounds[sID].unload();\r
++ // }\r
++ if (!bFromSound) {\r
++ // ignore if being called from SMSound instance\r
++ _s.sounds[sID].destruct();\r
++ }\r
++ delete _s.sounds[sID];\r
++ };\r
++\r
++ this.destroyVideo = this.destroySound;\r
++\r
++ this.load = function(sID,oOptions) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].load(oOptions);\r
++ };\r
++\r
++ this.unload = function(sID) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].unload();\r
++ };\r
++\r
++ this.play = function(sID,oOptions) {\r
++ if (!_s._idCheck(sID)) {\r
++ if (typeof oOptions != 'Object') {\r
++ oOptions = {url:oOptions}; // overloading use case: play('mySound','/path/to/some.mp3');\r
++ }\r
++ if (oOptions && oOptions.url) {\r
++ // overloading use case, creation + playing of sound: .play('someID',{url:'/path/to.mp3'});\r
++ _s._wD('soundController.play(): attempting to create "'+sID+'"',1);\r
++ oOptions.id = sID;\r
++ _s.createSound(oOptions);\r
++ } else {\r
++ return false;\r
++ }\r
++ }\r
++ _s.sounds[sID].play(oOptions);\r
++ };\r
++\r
++ this.start = this.play; // just for convenience\r
++\r
++ this.setPosition = function(sID,nMsecOffset) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].setPosition(nMsecOffset);\r
++ };\r
++\r
++ this.stop = function(sID) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s._wD('soundManager.stop('+sID+')',1);\r
++ _s.sounds[sID].stop(); \r
++ };\r
++\r
++ this.stopAll = function() {\r
++ _s._wD('soundManager.stopAll()',1);\r
++ for (var oSound in _s.sounds) {\r
++ if (_s.sounds[oSound] instanceof SMSound) {\r
++ _s.sounds[oSound].stop(); // apply only to sound objects\r
++ }\r
++ }\r
++ };\r
++\r
++ this.pause = function(sID) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].pause();\r
++ };\r
++\r
++ this.pauseAll = function() {\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].pause();\r
++ }\r
++ };\r
++\r
++ this.resume = function(sID) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].resume();\r
++ };\r
++\r
++ this.resumeAll = function() {\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].resume();\r
++ }\r
++ };\r
++\r
++ this.togglePause = function(sID) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].togglePause();\r
++ };\r
++\r
++ this.setPan = function(sID,nPan) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].setPan(nPan);\r
++ };\r
++\r
++ this.setVolume = function(sID,nVol) {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s.sounds[sID].setVolume(nVol);\r
++ };\r
++\r
++ this.mute = function(sID) {\r
++ if (typeof sID != 'string') {\r
++ sID = null;\r
++ }\r
++ if (!sID) {\r
++ _s._wD('soundManager.mute(): Muting all sounds');\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].mute();\r
++ }\r
++ _s.muted = true;\r
++ } else {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s._wD('soundManager.mute(): Muting "'+sID+'"');\r
++ _s.sounds[sID].mute();\r
++ }\r
++ };\r
++\r
++ this.muteAll = function() {\r
++ _s.mute();\r
++ };\r
++\r
++ this.unmute = function(sID) {\r
++ if (typeof sID != 'string') {\r
++ sID = null;\r
++ }\r
++ if (!sID) {\r
++ _s._wD('soundManager.unmute(): Unmuting all sounds');\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].unmute();\r
++ }\r
++ _s.muted = false;\r
++ } else {\r
++ if (!_s._idCheck(sID)) {\r
++ return false;\r
++ }\r
++ _s._wD('soundManager.unmute(): Unmuting "'+sID+'"');\r
++ _s.sounds[sID].unmute();\r
++ }\r
++ };\r
++\r
++ this.unmuteAll = function() {\r
++ _s.unmute();\r
++ };\r
++\r
++ this.getMemoryUse = function() {\r
++ if (_s.flashVersion == 8) {\r
++ // not supported in Flash 8\r
++ return 0;\r
++ }\r
++ if (_s.o) {\r
++ return parseInt(_s.o._getMemoryUse(),10);\r
++ }\r
++ };\r
++\r
++ this.setPolling = function(bPolling) {\r
++ if (!_s.o || !_s.allowPolling) {\r
++ return false;\r
++ }\r
++ _s.o._setPolling(bPolling);\r
++ };\r
++\r
++ this.disable = function(bNoDisable) {\r
++ // destroy all functions\r
++ if (typeof bNoDisable == 'undefined') {\r
++ bNoDisable = false;\r
++ }\r
++ if (_s._disabled) {\r
++ return false;\r
++ }\r
++ _s._disabled = true;\r
++ _s._wD('soundManager.disable(): Shutting down',1);\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s._disableObject(_s.sounds[_s.soundIDs[i]]);\r
++ }\r
++ _s.initComplete(bNoDisable); // fire "complete", despite fail\r
++ // _s._disableObject(_s); // taken out to allow reboot()\r
++ };\r
++\r
++ this.canPlayURL = function(sURL) {\r
++ return (sURL?(sURL.match(_s.filePattern)?true:false):null); \r
++ };\r
++\r
++ this.getSoundById = function(sID,suppressDebug) {\r
++ if (!sID) {\r
++ throw new Error('SoundManager.getSoundById(): sID is null/undefined');\r
++ }\r
++ var result = _s.sounds[sID];\r
++ if (!result && !suppressDebug) {\r
++ _s._wD('"'+sID+'" is an invalid sound ID.',2);\r
++ // soundManager._wD('trace: '+arguments.callee.caller);\r
++ }\r
++ return result;\r
++ };\r
++\r
++ this.onload = function() {\r
++ // window.onload() equivalent for SM2, ready to create sounds etc.\r
++ // this is a stub - you can override this in your own external script, eg. soundManager.onload = function() {}\r
++ soundManager._wD('<em>Warning</em>: soundManager.onload() is undefined.',2);\r
++ };\r
++\r
++ this.onerror = function() {\r
++ // stub for user handler, called when SM2 fails to load/init\r
++ };\r
++\r
++ // --- "private" methods ---\r
++\r
++ this._idCheck = this.getSoundById;\r
++\r
++ var _doNothing = function() {\r
++ return false;\r
++ };\r
++ _doNothing._protected = true;\r
++\r
++ this._disableObject = function(o) {\r
++ for (var oProp in o) {\r
++ if (typeof o[oProp] == 'function' && typeof o[oProp]._protected == 'undefined') {\r
++ o[oProp] = _doNothing;\r
++ }\r
++ }\r
++ oProp = null;\r
++ };\r
++\r
++ this._failSafely = function(bNoDisable) {\r
++ // general failure exception handler\r
++ if (typeof bNoDisable == 'undefined') {\r
++ bNoDisable = false;\r
++ }\r
++ if (!_s._disabled || bNoDisable) {\r
++ _s._wD('soundManager: Failed to initialise.',2);\r
++ _s.disable(bNoDisable);\r
++ }\r
++ };\r
++ \r
++ this._normalizeMovieURL = function(smURL) {\r
++ var urlParams = null;\r
++ if (smURL) {\r
++ if (smURL.match(/\.swf(\?.*)?$/i)) {\r
++ urlParams = smURL.substr(smURL.toLowerCase().lastIndexOf('.swf?')+4);\r
++ if (urlParams) {\r
++ return smURL; // assume user knows what they're doing\r
++ }\r
++ } else if (smURL.lastIndexOf('/') != smURL.length-1) {\r
++ smURL = smURL+'/';\r
++ }\r
++ }\r
++ return(smURL && smURL.lastIndexOf('/')!=-1?smURL.substr(0,smURL.lastIndexOf('/')+1):'./')+_s.movieURL;\r
++ };\r
++\r
++ this._getDocument = function() {\r
++ return (document.body?document.body:(document.documentElement?document.documentElement:document.getElementsByTagName('div')[0]));\r
++ };\r
++\r
++ this._getDocument._protected = true;\r
++\r
++ this._createMovie = function(smID,smURL) {\r
++ if (_s._didAppend && _s._appendSuccess) {\r
++ return false; // ignore if already succeeded\r
++ }\r
++ if (window.location.href.indexOf('debug=1')+1) {\r
++ _s.debugMode = true; // allow force of debug mode via URL\r
++ }\r
++ _s._didAppend = true;\r
++ \r
++ // safety check for legacy (change to Flash 9 URL)\r
++ _s._setVersionInfo();\r
++ var remoteURL = (smURL?smURL:_s.url);\r
++ var localURL = (_s.altURL?_s.altURL:remoteURL);\r
++ _s.url = _s._normalizeMovieURL(_s._overHTTP?remoteURL:localURL);\r
++ smURL = _s.url;\r
++\r
++ var specialCase = null;\r
++\r
++ if (_s.useHighPerformance && _s.useMovieStar) {\r
++ specialCase = 'Note: disabling highPerformance, not applicable with movieStar mode on';\r
++ _s.useHighPerformance = false;\r
++ }\r
++\r
++ _s.wmode = (_s.useHighPerformance && !_s.useMovieStar?'transparent':''); // wmode=opaque seems to break firefox/windows.\r
++\r
++ var oEmbed = {\r
++ name: smID,\r
++ id: smID,\r
++ src: smURL,\r
++ width: '100%',\r
++ height: '100%',\r
++ quality: 'high',\r
++ allowScriptAccess: 'always',\r
++ bgcolor: _s.bgColor,\r
++ pluginspage: 'http://www.macromedia.com/go/getflashplayer',\r
++ type: 'application/x-shockwave-flash',\r
++ wmode: _s.wmode\r
++ };\r
++\r
++ var oObject = {\r
++ id: smID,\r
++ data: smURL,\r
++ type: 'application/x-shockwave-flash',\r
++ width: '100%',\r
++ height: '100%',\r
++ wmode: _s.wmode\r
++ };\r
++\r
++ var oObjectParams = {\r
++ movie: smURL,\r
++ AllowScriptAccess: 'always',\r
++ quality: 'high',\r
++ bgcolor: _s.bgColor,\r
++ wmode: _s.wmode\r
++ };\r
++\r
++ var oMovie = null;\r
++ var tmp = null;\r
++\r
++ if (_s.isIE) {\r
++ // IE is "special".\r
++ oMovie = document.createElement('div');\r
++ var movieHTML = '<object id="'+smID+'" data="'+smURL+'" type="application/x-shockwave-flash" width="100%" height="100%"><param name="movie" value="'+smURL+'" /><param name="AllowScriptAccess" value="always" /><param name="quality" value="high" />'+(_s.useHighPerformance && !_s.useMovieStar?'<param name="wmode" value="'+_s.wmode+'" /> ':'')+'<param name="bgcolor" value="'+_s.bgColor+'" /><!-- --></object>';\r
++ } else {\r
++ oMovie = document.createElement('embed');\r
++ for (tmp in oEmbed) {\r
++ if (oEmbed.hasOwnProperty(tmp)) {\r
++ oMovie.setAttribute(tmp,oEmbed[tmp]);\r
++ }\r
++ }\r
++ }\r
++\r
++ var oD = document.createElement('div');\r
++ oD.id = _s.debugID+'-toggle';\r
++ var oToggle = {\r
++ position: 'fixed',\r
++ bottom: '0px',\r
++ right: '0px',\r
++ width: '1.2em',\r
++ height: '1.2em',\r
++ lineHeight: '1.2em',\r
++ margin: '2px',\r
++ textAlign: 'center',\r
++ border: '1px solid #999',\r
++ cursor: 'pointer',\r
++ background: '#fff',\r
++ color: '#333',\r
++ zIndex: 10001\r
++ };\r
++\r
++ oD.appendChild(document.createTextNode('-'));\r
++ oD.onclick = _s._toggleDebug;\r
++ oD.title = 'Toggle SM2 debug console';\r
++\r
++ if (navigator.userAgent.match(/msie 6/i)) {\r
++ oD.style.position = 'absolute';\r
++ oD.style.cursor = 'hand';\r
++ }\r
++\r
++ for (tmp in oToggle) {\r
++ if (oToggle.hasOwnProperty(tmp)) {\r
++ oD.style[tmp] = oToggle[tmp];\r
++ }\r
++ }\r
++\r
++ var appXHTML = 'soundManager._createMovie(): appendChild/innerHTML set failed. May be app/xhtml+xml DOM-related.';\r
++\r
++ var oTarget = _s._getDocument();\r
++\r
++ if (oTarget) {\r
++ \r
++ _s.oMC = _$('sm2-container')?_$('sm2-container'):document.createElement('div');\r
++\r
++ if (!_s.oMC.id) {\r
++ _s.oMC.id = 'sm2-container';\r
++ _s.oMC.className = 'movieContainer';\r
++ // "hide" flash movie\r
++ var s = null;\r
++ var oEl = null;\r
++ if (_s.useHighPerformance) {\r
++ s = {\r
++ position: 'fixed',\r
++ width: '8px',\r
++ height: '8px', // must be at least 6px for flash to run fast. odd? yes.\r
++ bottom: '0px',\r
++ left: '0px'\r
++ // zIndex:-1 // sit behind everything else - potentially dangerous/buggy?\r
++ };\r
++ } else {\r
++ s = {\r
++ position: 'absolute',\r
++ width: '1px',\r
++ height: '1px',\r
++ top: '-999px',\r
++ left: '-999px'\r
++ };\r
++ }\r
++ var x = null;\r
++ for (x in s) {\r
++ if (s.hasOwnProperty(x)) {\r
++ _s.oMC.style[x] = s[x];\r
++ }\r
++ }\r
++ try {\r
++ if (!_s.isIE) {\r
++ _s.oMC.appendChild(oMovie);\r
++ }\r
++ oTarget.appendChild(_s.oMC);\r
++ if (_s.isIE) {\r
++ oEl = _s.oMC.appendChild(document.createElement('div'));\r
++ oEl.className = 'sm2-object-box';\r
++ oEl.innerHTML = movieHTML;\r
++ }\r
++ _s._appendSuccess = true;\r
++ } catch(e) {\r
++ throw new Error(appXHTML);\r
++ }\r
++ } else {\r
++ // it's already in the document.\r
++ _s.oMC.appendChild(oMovie);\r
++ if (_s.isIE) {\r
++ oEl = _s.oMC.appendChild(document.createElement('div'));\r
++ oEl.className = 'sm2-object-box';\r
++ oEl.innerHTML = movieHTML;\r
++ }\r
++ _s._appendSuccess = true;\r
++ }\r
++\r
++ if (!_$(_s.debugID) && ((!_s._hasConsole||!_s.useConsole)||(_s.useConsole && _s._hasConsole && !_s.consoleOnly))) {\r
++ var oDebug = document.createElement('div');\r
++ oDebug.id = _s.debugID;\r
++ oDebug.style.display = (_s.debugMode?'block':'none');\r
++ if (_s.debugMode && !_$(oD.id)) {\r
++ try {\r
++ oTarget.appendChild(oD);\r
++ } catch(e2) {\r
++ throw new Error(appXHTML);\r
++ }\r
++ oTarget.appendChild(oDebug);\r
++ }\r
++ }\r
++ oTarget = null;\r
++ }\r
++\r
++ if (specialCase) {\r
++ _s._wD(specialCase);\r
++ }\r
++\r
++ _s._wD('-- SoundManager 2 '+_s.version+(_s.useMovieStar?', MovieStar mode':'')+(_s.useHighPerformance?', high performance mode':'')+' --',1);\r
++ _s._wD('soundManager._createMovie(): Trying to load '+smURL+(!_s._overHTTP && _s.altURL?'(alternate URL)':''),1);\r
++ };\r
++\r
++ // aliased to this._wD()\r
++ this._writeDebug = function(sText,sType,bTimestamp) {\r
++ if (!_s.debugMode) {\r
++ return false;\r
++ }\r
++ if (typeof bTimestamp != 'undefined' && bTimestamp) {\r
++ sText = sText + ' | '+new Date().getTime();\r
++ }\r
++ if (_s._hasConsole && _s.useConsole) {\r
++ var sMethod = _s._debugLevels[sType];\r
++ if (typeof console[sMethod] != 'undefined') {\r
++ console[sMethod](sText);\r
++ } else {\r
++ console.log(sText);\r
++ }\r
++ if (_s.useConsoleOnly) {\r
++ return true;\r
++ }\r
++ }\r
++ var sDID = 'soundmanager-debug';\r
++ try {\r
++ var o = _$(sDID);\r
++ if (!o) {\r
++ return false;\r
++ }\r
++ var oItem = document.createElement('div');\r
++ if (++_s._wdCount%2===0) {\r
++ oItem.className = 'sm2-alt';\r
++ }\r
++ // sText = sText.replace(/\n/g,'<br />');\r
++ if (typeof sType == 'undefined') {\r
++ sType = 0;\r
++ } else {\r
++ sType = parseInt(sType,10);\r
++ }\r
++ oItem.appendChild(document.createTextNode(sText));\r
++ if (sType) {\r
++ if (sType >= 2) {\r
++ oItem.style.fontWeight = 'bold';\r
++ }\r
++ if (sType == 3) {\r
++ oItem.style.color = '#ff3333';\r
++ }\r
++ }\r
++ // o.appendChild(oItem); // top-to-bottom\r
++ o.insertBefore(oItem,o.firstChild); // bottom-to-top\r
++ } catch(e) {\r
++ // oh well\r
++ }\r
++ o = null;\r
++ };\r
++ this._writeDebug._protected = true;\r
++ this._wdCount = 0;\r
++ this._wdCount._protected = true;\r
++ this._wD = this._writeDebug;\r
++\r
++ this._wDAlert = function(sText) { alert(sText); };\r
++\r
++ if (window.location.href.indexOf('debug=alert')+1 && _s.debugMode) {\r
++ _s._wD = _s._wDAlert;\r
++ }\r
++\r
++ this._toggleDebug = function() {\r
++ var o = _$(_s.debugID);\r
++ var oT = _$(_s.debugID+'-toggle');\r
++ if (!o) {\r
++ return false;\r
++ }\r
++ if (_s._debugOpen) {\r
++ // minimize\r
++ oT.innerHTML = '+';\r
++ o.style.display = 'none';\r
++ } else {\r
++ oT.innerHTML = '-';\r
++ o.style.display = 'block';\r
++ }\r
++ _s._debugOpen = !_s._debugOpen;\r
++ };\r
++\r
++ this._toggleDebug._protected = true;\r
++\r
++ this._debug = function() {\r
++ _s._wD('--- soundManager._debug(): Current sound objects ---',1);\r
++ for (var i=0,j=_s.soundIDs.length; i<j; i++) {\r
++ _s.sounds[_s.soundIDs[i]]._debug();\r
++ }\r
++ };\r
++\r
++ this._debugTS = function(sEventType,bSuccess,sMessage) {\r
++ // troubleshooter debug hooks\r
++ if (typeof sm2Debugger != 'undefined') {\r
++ try {\r
++ sm2Debugger.handleEvent(sEventType,bSuccess,sMessage);\r
++ } catch(e) {\r
++ // oh well \r
++ }\r
++ }\r
++ };\r
++\r
++ this._debugTS._protected = true;\r
++\r
++ this._mergeObjects = function(oMain,oAdd) {\r
++ // non-destructive merge\r
++ var o1 = {}; // clone o1\r
++ for (var i in oMain) {\r
++ if (oMain.hasOwnProperty(i)) {\r
++ o1[i] = oMain[i];\r
++ }\r
++ }\r
++ var o2 = (typeof oAdd == 'undefined'?_s.defaultOptions:oAdd);\r
++ for (var o in o2) {\r
++ if (o2.hasOwnProperty(o) && typeof o1[o] == 'undefined') {\r
++ o1[o] = o2[o];\r
++ }\r
++ }\r
++ return o1;\r
++ };\r
++\r
++ this.createMovie = function(sURL) {\r
++ if (sURL) {\r
++ _s.url = sURL;\r
++ }\r
++ _s._initMovie();\r
++ };\r
++\r
++ this.go = this.createMovie; // nice alias\r
++\r
++ this._initMovie = function() {\r
++ // attempt to get, or create, movie\r
++ if (_s.o) {\r
++ return false; // may already exist\r
++ }\r
++ _s.o = _s.getMovie(_s.id); // (inline markup)\r
++ if (!_s.o) {\r
++ if (!_s.oRemoved) {\r
++ // try to create\r
++ _s._createMovie(_s.id,_s.url);\r
++ } else {\r
++ // try to re-append removed movie after reboot()\r
++ if (!_s.isIE) {\r
++ _s.oMC.appendChild(_s.oRemoved);\r
++ } else {\r
++ _s.oMC.innerHTML = _s.oRemovedHTML;\r
++ }\r
++ _s.oRemoved = null;\r
++ _s._didAppend = true;\r
++ }\r
++ _s.o = _s.getMovie(_s.id);\r
++ }\r
++ if (_s.o) {\r
++ _s._wD('soundManager._initMovie(): Got '+_s.o.nodeName+' element ('+(_s._didAppend?'created via JS':'static HTML')+')',1);\r
++ if (_s.flashLoadTimeout>0) {\r
++ _s._wD('soundManager._initMovie(): Waiting for ExternalInterface call from Flash..');\r
++ }\r
++ }\r
++ };\r
++\r
++ this.waitForExternalInterface = function() {\r
++ if (_s._waitingForEI) {\r
++ return false;\r
++ }\r
++ _s._waitingForEI = true;\r
++ if (_s._tryInitOnFocus && !_s._isFocused) {\r
++ _s._wD('soundManager: Special case: Waiting for focus-related event..');\r
++ return false;\r
++ }\r
++ if (_s.flashLoadTimeout>0) {\r
++ if (!_s._didInit) {\r
++ _s._wD('soundManager: Getting impatient, still waiting for Flash.. ;)');\r
++ }\r
++ setTimeout(function() {\r
++ if (!_s._didInit) {\r
++ _s._wD('soundManager: No Flash response within reasonable time after document load.\nPossible causes: Flash version under 8, no support, or Flash security denying JS-Flash communication.',2);\r
++ if (!_s._overHTTP) {\r
++ _s._wD('soundManager: Loading this page from local/network file system (not over HTTP?) Flash security likely restricting JS-Flash access. Consider adding current URL to "trusted locations" in the Flash player security settings manager at '+flashCPLink+', or simply serve this content over HTTP.',2);\r
++ }\r
++ _s._debugTS('flashtojs',false,': Timed out'+(_s._overHTTP)?' (Check flash security)':' (No plugin/missing SWF?)');\r
++ }\r
++ // if still not initialized and no other options, give up\r
++ if (!_s._didInit && _s._okToDisable) {\r
++ _s._failSafely(true); // don't disable, for reboot()\r
++ }\r
++ },_s.flashLoadTimeout);\r
++ } else if (!_s.didInit) {\r
++ _s._wD('soundManager: Waiting indefinitely for Flash...');\r
++ }\r
++ };\r
++\r
++ this.handleFocus = function() {\r
++ if (_s._isFocused || !_s._tryInitOnFocus) {\r
++ return true;\r
++ }\r
++ _s._okToDisable = true;\r
++ _s._isFocused = true;\r
++ _s._wD('soundManager.handleFocus()');\r
++ if (_s._tryInitOnFocus) {\r
++ // giant Safari 3.1 hack - assume window in focus if mouse is moving, since document.hasFocus() not currently implemented.\r
++ window.removeEventListener('mousemove',_s.handleFocus,false);\r
++ }\r
++ // allow init to restart\r
++ _s._waitingForEI = false;\r
++ setTimeout(_s.waitForExternalInterface,500);\r
++ // detach event\r
++ if (window.removeEventListener) {\r
++ window.removeEventListener('focus',_s.handleFocus,false);\r
++ } else if (window.detachEvent) {\r
++ window.detachEvent('onfocus',_s.handleFocus);\r
++ }\r
++ };\r
++\r
++ this.initComplete = function(bNoDisable) {\r
++ if (_s._didInit) {\r
++ return false;\r
++ }\r
++ _s._didInit = true;\r
++ _s._wD('-- SoundManager 2 '+(_s._disabled?'failed to load':'loaded')+' ('+(_s._disabled?'security/load error':'OK')+') --',1);\r
++ if (_s._disabled || bNoDisable) {\r
++ _s._wD('soundManager.initComplete(): calling soundManager.onerror()',1);\r
++ _s._debugTS('onload',false);\r
++ _s.onerror.apply(window);\r
++ return false;\r
++ } else {\r
++ _s._debugTS('onload',true);\r
++ }\r
++ if (_s.waitForWindowLoad && !_s._windowLoaded) {\r
++ _s._wD('soundManager: Waiting for window.onload()');\r
++ if (window.addEventListener) {\r
++ window.addEventListener('load',_s.initUserOnload,false);\r
++ } else if (window.attachEvent) {\r
++ window.attachEvent('onload',_s.initUserOnload);\r
++ }\r
++ return false;\r
++ } else {\r
++ if (_s.waitForWindowLoad && _s._windowLoaded) {\r
++ _s._wD('soundManager: Document already loaded');\r
++ }\r
++ _s.initUserOnload();\r
++ }\r
++ };\r
++\r
++ this.initUserOnload = function() {\r
++ _s._wD('soundManager.initComplete(): calling soundManager.onload()',1);\r
++ // call user-defined "onload", scoped to window\r
++ _s.onload.apply(window);\r
++ _s._wD('soundManager.onload() complete',1);\r
++ };\r
++\r
++ this.init = function() {\r
++ _s._wD('-- soundManager.init() --');\r
++ // called after onload()\r
++ _s._initMovie();\r
++ if (_s._didInit) {\r
++ _s._wD('soundManager.init(): Already called?');\r
++ return false;\r
++ }\r
++ // event cleanup\r
++ if (window.removeEventListener) {\r
++ window.removeEventListener('load',_s.beginDelayedInit,false);\r
++ } else if (window.detachEvent) {\r
++ window.detachEvent('onload',_s.beginDelayedInit);\r
++ }\r
++ try {\r
++ _s._wD('Attempting to call Flash from JS..');\r
++ _s.o._externalInterfaceTest(false); // attempt to talk to Flash\r
++ // _s._wD('Flash ExternalInterface call (JS-Flash) OK',1);\r
++ if (!_s.allowPolling) {\r
++ _s._wD('Polling (whileloading/whileplaying support) is disabled.',1);\r
++ }\r
++ _s.setPolling(true);\r
++ if (!_s.debugMode) {\r
++ _s.o._disableDebug();\r
++ }\r
++ _s.enabled = true;\r
++ _s._debugTS('jstoflash',true);\r
++ } catch(e) {\r
++ _s._debugTS('jstoflash',false);\r
++ _s._failSafely(true); // don't disable, for reboot()\r
++ _s.initComplete();\r
++ return false;\r
++ }\r
++ _s.initComplete();\r
++ };\r
++\r
++ this.beginDelayedInit = function() {\r
++ _s._wD('soundManager.beginDelayedInit()');\r
++ _s._windowLoaded = true;\r
++ setTimeout(_s.waitForExternalInterface,500);\r
++ setTimeout(_s.beginInit,20);\r
++ };\r
++\r
++ this.beginInit = function() {\r
++ if (_s._initPending) {\r
++ return false;\r
++ }\r
++ _s.createMovie(); // ensure creation if not already done\r
++ _s._initMovie();\r
++ _s._initPending = true;\r
++ return true;\r
++ };\r
++\r
++ this.domContentLoaded = function() {\r
++ _s._wD('soundManager.domContentLoaded()');\r
++ if (document.removeEventListener) {\r
++ document.removeEventListener('DOMContentLoaded',_s.domContentLoaded,false);\r
++ }\r
++ _s.go();\r
++ };\r
++\r
++ this._externalInterfaceOK = function() {\r
++ // callback from flash for confirming that movie loaded, EI is working etc.\r
++ if (_s.swfLoaded) {\r
++ return false;\r
++ }\r
++ _s._wD('soundManager._externalInterfaceOK()');\r
++ _s._debugTS('swf',true);\r
++ _s._debugTS('flashtojs',true);\r
++ _s.swfLoaded = true;\r
++ _s._tryInitOnFocus = false;\r
++ if (_s.isIE) {\r
++ // IE needs a timeout OR delay until window.onload - may need TODO: investigating\r
++ setTimeout(_s.init,100);\r
++ } else {\r
++ _s.init();\r
++ }\r
++ };\r
++\r
++ this._setSandboxType = function(sandboxType) {\r
++ var sb = _s.sandbox;\r
++ sb.type = sandboxType;\r
++ sb.description = sb.types[(typeof sb.types[sandboxType] != 'undefined'?sandboxType:'unknown')];\r
++ _s._wD('Flash security sandbox type: '+sb.type);\r
++ if (sb.type == 'localWithFile') {\r
++ sb.noRemote = true;\r
++ sb.noLocal = false;\r
++ _s._wD('Flash security note: Network/internet URLs will not load due to security restrictions. Access can be configured via Flash Player Global Security Settings Page: http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html',2);\r
++ } else if (sb.type == 'localWithNetwork') {\r
++ sb.noRemote = false;\r
++ sb.noLocal = true;\r
++ } else if (sb.type == 'localTrusted') {\r
++ sb.noRemote = false;\r
++ sb.noLocal = false;\r
++ }\r
++ };\r
++\r
++ this.reboot = function() {\r
++ // attempt to reset and init SM2\r
++ _s._wD('soundManager.reboot()');\r
++ if (_s.soundIDs.length) {\r
++ _s._wD('Destroying '+_s.soundIDs.length+' SMSound objects...');\r
++ }\r
++ for (var i=_s.soundIDs.length; i--;) {\r
++ _s.sounds[_s.soundIDs[i]].destruct();\r
++ }\r
++ // trash ze flash\r
++ try {\r
++ if (_s.isIE) {\r
++ _s.oRemovedHTML = _s.o.innerHTML;\r
++ }\r
++ _s.oRemoved = _s.o.parentNode.removeChild(_s.o);\r
++ _s._wD('Flash movie removed.');\r
++ } catch(e) {\r
++ // uh-oh.\r
++ _s._wD('Warning: Failed to remove flash movie.',2);\r
++ }\r
++ _s.enabled = false;\r
++ _s._didInit = false;\r
++ _s._waitingForEI = false;\r
++ _s._initPending = false;\r
++ _s._didInit = false;\r
++ _s._didAppend = false;\r
++ _s._appendSuccess = false;\r
++ _s._didInit = false;\r
++ _s._disabled = false;\r
++ _s._waitingforEI = true;\r
++ _s.swfLoaded = false;\r
++ _s.soundIDs = {};\r
++ _s.sounds = [];\r
++ _s.o = null;\r
++ _s._wD('soundManager: Rebooting...');\r
++ window.setTimeout(function() {\r
++ soundManager.beginDelayedInit();\r
++ },20);\r
++ };\r
++\r
++ this.destruct = function() {\r
++ _s._wD('soundManager.destruct()');\r
++ _s.disable(true);\r
++ };\r
++ \r
++ // SMSound (sound object)\r
++ \r
++ SMSound = function(oOptions) {\r
++ var _t = this;\r
++ this.sID = oOptions.id;\r
++ this.url = oOptions.url;\r
++ this.options = _s._mergeObjects(oOptions);\r
++ this.instanceOptions = this.options; // per-play-instance-specific options\r
++ this._iO = this.instanceOptions; // short alias\r
++\r
++ // assign property defaults (volume, pan etc.)\r
++ this.pan = this.options.pan;\r
++ this.volume = this.options.volume;\r
++\r
++ this._debug = function() {\r
++ if (_s.debugMode) {\r
++ var stuff = null;\r
++ var msg = [];\r
++ var sF = null;\r
++ var sfBracket = null;\r
++ var maxLength = 64; // # of characters of function code to show before truncating\r
++ for (stuff in _t.options) {\r
++ if (_t.options[stuff] !== null) {\r
++ if (_t.options[stuff] instanceof Function) {\r
++ // handle functions specially\r
++ sF = _t.options[stuff].toString();\r
++ sF = sF.replace(/\s\s+/g,' '); // normalize spaces\r
++ sfBracket = sF.indexOf('{');\r
++ msg[msg.length] = ' '+stuff+': {'+sF.substr(sfBracket+1,(Math.min(Math.max(sF.indexOf('\n')-1,maxLength),maxLength))).replace(/\n/g,'')+'... }';\r
++ } else {\r
++ msg[msg.length] = ' '+stuff+': '+_t.options[stuff];\r
++ }\r
++ }\r
++ }\r
++ _s._wD('SMSound() merged options: {\n'+msg.join(', \n')+'\n}');\r
++ }\r
++ };\r
++\r
++ this._debug();\r
++\r
++ this.id3 = {\r
++ /* \r
++ Name/value pairs set via Flash when available - see reference for names:\r
++ http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001567.html\r
++ (eg., this.id3.songname or this.id3['songname'])\r
++ */\r
++ };\r
++\r
++ this.resetProperties = function(bLoaded) {\r
++ _t.bytesLoaded = null;\r
++ _t.bytesTotal = null;\r
++ _t.position = null;\r
++ _t.duration = null;\r
++ _t.durationEstimate = null;\r
++ _t.loaded = false;\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ _t.readyState = 0; // 0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success\r
++ _t.muted = false;\r
++ _t.didBeforeFinish = false;\r
++ _t.didJustBeforeFinish = false;\r
++ _t.isBuffering = false;\r
++ _t.instanceOptions = {};\r
++ _t.instanceCount = 0;\r
++ _t.peakData = {\r
++ left: 0,\r
++ right: 0\r
++ };\r
++ _t.waveformData = [];\r
++ _t.eqData = [];\r
++ };\r
++\r
++ _t.resetProperties();\r
++\r
++ // --- public methods ---\r
++\r
++ this.load = function(oOptions) {\r
++ if (typeof oOptions != 'undefined') {\r
++ _t._iO = _s._mergeObjects(oOptions);\r
++ _t.instanceOptions = _t._iO;\r
++ } else {\r
++ oOptions = _t.options;\r
++ _t._iO = oOptions;\r
++ _t.instanceOptions = _t._iO;\r
++ } \r
++ if (typeof _t._iO.url == 'undefined') {\r
++ _t._iO.url = _t.url;\r
++ }\r
++ _s._wD('soundManager.load(): '+_t._iO.url,1);\r
++ if (_t._iO.url == _t.url && _t.readyState !== 0 && _t.readyState != 2) {\r
++ _s._wD('soundManager.load(): current URL already assigned.',1);\r
++ return false;\r
++ }\r
++ _t.loaded = false;\r
++ _t.readyState = 1;\r
++ _t.playState = 0; // (oOptions.autoPlay?1:0); // if autoPlay, assume "playing" is true (no way to detect when it actually starts in Flash unless onPlay is watched?)\r
++ try {\r
++ if (_s.flashVersion==8) {\r
++ _s.o._load(_t.sID,_t._iO.url,_t._iO.stream,_t._iO.autoPlay,(_t._iO.whileloading?1:0));\r
++ } else {\r
++ _s.o._load(_t.sID,_t._iO.url,_t._iO.stream?true:false,_t._iO.autoPlay?true:false); // ,(_tO.whileloading?true:false)\r
++ if (_t._iO.isMovieStar && _t._iO.autoLoad && !_t._iO.autoPlay) {\r
++ // special case: MPEG4 content must start playing to load, then pause to prevent playing.\r
++ _t.pause();\r
++ }\r
++ }\r
++ } catch(e) {\r
++ _s._wD('SMSound.load(): Exception: JS-Flash communication failed, or JS error.',2);\r
++ _s._debugTS('onload',false);\r
++ _s.onerror();\r
++ _s.disable();\r
++ }\r
++\r
++ };\r
++\r
++ this.unload = function() {\r
++ // Flash 8/AS2 can't "close" a stream - fake it by loading an empty MP3\r
++ // Flash 9/AS3: Close stream, preventing further load\r
++ if (_t.readyState !== 0) {\r
++ _s._wD('SMSound.unload(): "'+_t.sID+'"');\r
++ if (_t.readyState != 2) { // reset if not error\r
++ _t.setPosition(0,true); // reset current sound positioning\r
++ }\r
++ _s.o._unload(_t.sID,_s.nullURL);\r
++ // reset load/status flags\r
++ _t.resetProperties();\r
++ }\r
++ };\r
++\r
++ this.destruct = function() {\r
++ // kill sound within Flash\r
++ _s._wD('SMSound.destruct(): "'+_t.sID+'"');\r
++ _s.o._destroySound(_t.sID);\r
++ _s.destroySound(_t.sID,true); // ensure deletion from controller\r
++ };\r
++\r
++ this.play = function(oOptions) {\r
++ if (!oOptions) {\r
++ oOptions = {};\r
++ }\r
++ _t._iO = _s._mergeObjects(oOptions,_t._iO);\r
++ _t._iO = _s._mergeObjects(_t._iO,_t.options);\r
++ _t.instanceOptions = _t._iO;\r
++ if (_t.playState == 1) {\r
++ var allowMulti = _t._iO.multiShot;\r
++ if (!allowMulti) {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" already playing (one-shot)',1);\r
++ return false;\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" already playing (multi-shot)',1);\r
++ }\r
++ }\r
++ if (!_t.loaded) {\r
++ if (_t.readyState === 0) {\r
++ _s._wD('SMSound.play(): Attempting to load "'+_t.sID+'"',1);\r
++ // try to get this sound playing ASAP\r
++ _t._iO.stream = true;\r
++ _t._iO.autoPlay = true;\r
++ // TODO: need to investigate when false, double-playing\r
++ // if (typeof oOptions.autoPlay=='undefined') _tO.autoPlay = true; // only set autoPlay if unspecified here\r
++ _t.load(_t._iO); // try to get this sound playing ASAP\r
++ } else if (_t.readyState == 2) {\r
++ _s._wD('SMSound.play(): Could not load "'+_t.sID+'" - exiting',2);\r
++ return false;\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'" is loading - attempting to play..',1);\r
++ }\r
++ } else {\r
++ _s._wD('SMSound.play(): "'+_t.sID+'"');\r
++ }\r
++ if (_t.paused) {\r
++ _t.resume();\r
++ } else {\r
++ _t.playState = 1;\r
++ if (!_t.instanceCount || _s.flashVersion == 9) {\r
++ _t.instanceCount++;\r
++ }\r
++ _t.position = (typeof _t._iO.position != 'undefined' && !isNaN(_t._iO.position)?_t._iO.position:0);\r
++ if (_t._iO.onplay) {\r
++ _t._iO.onplay.apply(_t);\r
++ }\r
++ _t.setVolume(_t._iO.volume,true); // restrict volume to instance options only\r
++ _t.setPan(_t._iO.pan,true);\r
++ _s.o._start(_t.sID,_t._iO.loop||1,(_s.flashVersion==9?_t.position:_t.position/1000));\r
++ }\r
++ };\r
++\r
++ this.start = this.play; // just for convenience\r
++\r
++ this.stop = function(bAll) {\r
++ if (_t.playState == 1) {\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ // if (_s.defaultOptions.onstop) _s.defaultOptions.onstop.apply(_s);\r
++ if (_t._iO.onstop) {\r
++ _t._iO.onstop.apply(_t);\r
++ }\r
++ _s.o._stop(_t.sID,bAll);\r
++ _t.instanceCount = 0;\r
++ _t._iO = {};\r
++ // _t.instanceOptions = _t._iO;\r
++ }\r
++ };\r
++\r
++ this.setPosition = function(nMsecOffset,bNoDebug) {\r
++ if (typeof nMsecOffset == 'undefined') {\r
++ nMsecOffset = 0;\r
++ }\r
++ var offset = Math.min(_t.duration,Math.max(nMsecOffset,0)); // position >= 0 and <= current available (loaded) duration\r
++ _t._iO.position = offset;\r
++ if (!bNoDebug) {\r
++ _s._wD('SMSound.setPosition('+nMsecOffset+')'+(nMsecOffset != offset?', corrected value: '+offset:''));\r
++ }\r
++ _s.o._setPosition(_t.sID,(_s.flashVersion==9?_t._iO.position:_t._iO.position/1000),(_t.paused||!_t.playState)); // if paused or not playing, will not resume (by playing)\r
++ };\r
++\r
++ this.pause = function() {\r
++ if (_t.paused || _t.playState === 0) {\r
++ return false;\r
++ }\r
++ _s._wD('SMSound.pause()');\r
++ _t.paused = true;\r
++ _s.o._pause(_t.sID);\r
++ if (_t._iO.onpause) {\r
++ _t._iO.onpause.apply(_t);\r
++ }\r
++ };\r
++\r
++ this.resume = function() {\r
++ if (!_t.paused || _t.playState === 0) {\r
++ return false;\r
++ }\r
++ _s._wD('SMSound.resume()');\r
++ _t.paused = false;\r
++ _s.o._pause(_t.sID); // flash method is toggle-based (pause/resume)\r
++ if (_t._iO.onresume) {\r
++ _t._iO.onresume.apply(_t);\r
++ }\r
++ };\r
++\r
++ this.togglePause = function() {\r
++ _s._wD('SMSound.togglePause()');\r
++ if (!_t.playState) {\r
++ _t.play({position:(_s.flashVersion==9?_t.position:_t.position/1000)});\r
++ return false;\r
++ }\r
++ if (_t.paused) {\r
++ _t.resume();\r
++ } else {\r
++ _t.pause();\r
++ }\r
++ };\r
++\r
++ this.setPan = function(nPan,bInstanceOnly) {\r
++ if (typeof nPan == 'undefined') {\r
++ nPan = 0;\r
++ }\r
++ if (typeof bInstanceOnly == 'undefined') {\r
++ bInstanceOnly = false;\r
++ }\r
++ _s.o._setPan(_t.sID,nPan);\r
++ _t._iO.pan = nPan;\r
++ if (!bInstanceOnly) {\r
++ _t.pan = nPan;\r
++ }\r
++ };\r
++\r
++ this.setVolume = function(nVol,bInstanceOnly) {\r
++ if (typeof nVol == 'undefined') {\r
++ nVol = 100;\r
++ }\r
++ if (typeof bInstanceOnly == 'undefined') {\r
++ bInstanceOnly = false;\r
++ }\r
++ _s.o._setVolume(_t.sID,(_s.muted&&!_t.muted)||_t.muted?0:nVol);\r
++ _t._iO.volume = nVol;\r
++ if (!bInstanceOnly) {\r
++ _t.volume = nVol;\r
++ }\r
++ };\r
++\r
++ this.mute = function() {\r
++ _t.muted = true;\r
++ _s.o._setVolume(_t.sID,0);\r
++ };\r
++\r
++ this.unmute = function() {\r
++ _t.muted = false;\r
++ var hasIO = typeof _t._iO.volume != 'undefined';\r
++ _s.o._setVolume(_t.sID,hasIO?_t._iO.volume:_t.options.volume);\r
++ };\r
++\r
++ // --- "private" methods called by Flash ---\r
++\r
++ this._whileloading = function(nBytesLoaded,nBytesTotal,nDuration) {\r
++ if (!_t._iO.isMovieStar) {\r
++ _t.bytesLoaded = nBytesLoaded;\r
++ _t.bytesTotal = nBytesTotal;\r
++ _t.duration = Math.floor(nDuration);\r
++ _t.durationEstimate = parseInt((_t.bytesTotal/_t.bytesLoaded)*_t.duration,10); // estimate total time (will only be accurate with CBR MP3s.)\r
++ if (_t.readyState != 3 && _t._iO.whileloading) {\r
++ _t._iO.whileloading.apply(_t);\r
++ }\r
++ } else {\r
++ _t.bytesLoaded = nBytesLoaded;\r
++ _t.bytesTotal = nBytesTotal;\r
++ _t.duration = Math.floor(nDuration);\r
++ _t.durationEstimate = _t.duration;\r
++ if (_t.readyState != 3 && _t._iO.whileloading) {\r
++ _t._iO.whileloading.apply(_t);\r
++ }\r
++ }\r
++ };\r
++\r
++ this._onid3 = function(oID3PropNames,oID3Data) {\r
++ // oID3PropNames: string array (names)\r
++ // ID3Data: string array (data)\r
++ _s._wD('SMSound._onid3(): "'+this.sID+'" ID3 data received.');\r
++ var oData = [];\r
++ for (var i=0,j=oID3PropNames.length; i<j; i++) {\r
++ oData[oID3PropNames[i]] = oID3Data[i];\r
++ // _s._wD(oID3PropNames[i]+': '+oID3Data[i]);\r
++ }\r
++ _t.id3 = _s._mergeObjects(_t.id3,oData);\r
++ if (_t._iO.onid3) {\r
++ _t._iO.onid3.apply(_t);\r
++ }\r
++ };\r
++\r
++ this._whileplaying = function(nPosition,oPeakData,oWaveformData,oEQData) {\r
++ if (isNaN(nPosition) || nPosition === null) {\r
++ return false; // Flash may return NaN at times\r
++ }\r
++ _t.position = nPosition;\r
++ if (_t._iO.usePeakData && typeof oPeakData != 'undefined' && oPeakData) {\r
++ _t.peakData = {\r
++ left: oPeakData.leftPeak,\r
++ right: oPeakData.rightPeak\r
++ };\r
++ }\r
++ if (_t._iO.useWaveformData && typeof oWaveformData != 'undefined' && oWaveformData) {\r
++ _t.waveformData = oWaveformData;\r
++ /*\r
++ _t.spectrumData = {\r
++ left: oSpectrumData.left.split(','),\r
++ right: oSpectrumData.right.split(',')\r
++ }\r
++ */\r
++ }\r
++ if (_t._iO.useEQData && typeof oEQData != 'undefined' && oEQData) {\r
++ _t.eqData = oEQData;\r
++ }\r
++ if (_t.playState == 1) {\r
++ if (_t._iO.whileplaying) {\r
++ _t._iO.whileplaying.apply(_t); // flash may call after actual finish\r
++ }\r
++ if (_t.loaded && _t._iO.onbeforefinish && _t._iO.onbeforefinishtime && !_t.didBeforeFinish && _t.duration-_t.position <= _t._iO.onbeforefinishtime) {\r
++ _s._wD('duration-position <= onbeforefinishtime: '+_t.duration+' - '+_t.position+' <= '+_t._iO.onbeforefinishtime+' ('+(_t.duration-_t.position)+')');\r
++ _t._onbeforefinish();\r
++ }\r
++ }\r
++ };\r
++\r
++ this._onload = function(bSuccess) {\r
++ bSuccess = (bSuccess==1?true:false);\r
++ _s._wD('SMSound._onload(): "'+_t.sID+'"'+(bSuccess?' loaded.':' failed to load? - '+_t.url),(bSuccess?1:2));\r
++ if (!bSuccess) {\r
++ if (_s.sandbox.noRemote === true) {\r
++ _s._wD('SMSound._onload(): Reminder: Flash security is denying network/internet access',1);\r
++ }\r
++ if (_s.sandbox.noLocal === true) {\r
++ _s._wD('SMSound._onload(): Reminder: Flash security is denying local access',1);\r
++ }\r
++ }\r
++ _t.loaded = bSuccess;\r
++ _t.readyState = bSuccess?3:2;\r
++ if (_t._iO.onload) {\r
++ _t._iO.onload.apply(_t);\r
++ }\r
++ };\r
++\r
++ this._onbeforefinish = function() {\r
++ if (!_t.didBeforeFinish) {\r
++ _t.didBeforeFinish = true;\r
++ if (_t._iO.onbeforefinish) {\r
++ _s._wD('SMSound._onbeforefinish(): "'+_t.sID+'"');\r
++ _t._iO.onbeforefinish.apply(_t);\r
++ }\r
++ }\r
++ };\r
++\r
++ this._onjustbeforefinish = function(msOffset) {\r
++ // msOffset: "end of sound" delay actual value (eg. 200 msec, value at event fire time was 187)\r
++ if (!_t.didJustBeforeFinish) {\r
++ _t.didJustBeforeFinish = true;\r
++ if (_t._iO.onjustbeforefinish) {\r
++ _s._wD('SMSound._onjustbeforefinish(): "'+_t.sID+'"');\r
++ _t._iO.onjustbeforefinish.apply(_t);\r
++ }\r
++ }\r
++ };\r
++\r
++ this._onfinish = function() {\r
++ // sound has finished playing\r
++\r
++ // TODO: calling user-defined onfinish() should happen after setPosition(0)\r
++ // OR: onfinish() and then setPosition(0) is bad.\r
++\r
++ if (_t._iO.onbeforefinishcomplete) {\r
++ _t._iO.onbeforefinishcomplete.apply(_t);\r
++ }\r
++ // reset some state items\r
++ _t.didBeforeFinish = false;\r
++ _t.didJustBeforeFinish = false;\r
++ if (_t.instanceCount) {\r
++ _t.instanceCount--;\r
++ if (!_t.instanceCount) {\r
++ // reset instance options\r
++ // _t.setPosition(0);\r
++ _t.playState = 0;\r
++ _t.paused = false;\r
++ _t.instanceCount = 0;\r
++ _t.instanceOptions = {};\r
++ if (_t._iO.onfinish) {\r
++ _s._wD('SMSound._onfinish(): "'+_t.sID+'"');\r
++ _t._iO.onfinish.apply(_t);\r
++ }\r
++ }\r
++ } else {\r
++ // _t.setPosition(0);\r
++ }\r
++ };\r
++\r
++ this._onmetadata = function(oMetaData) {\r
++ // movieStar mode only\r
++ _s._wD('SMSound.onmetadata()');\r
++ // Contains a subset of metadata. Note that files may have their own unique metadata.\r
++ // http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00000267.html\r
++ if (!oMetaData.width && !oMetaData.height) {\r
++ _s._wD('No width/height given, assuming defaults');\r
++ oMetaData.width = 320;\r
++ oMetaData.height = 240;\r
++ }\r
++ _t.metadata = oMetaData; // potentially-large object from flash\r
++ _t.width = oMetaData.width;\r
++ _t.height = oMetaData.height;\r
++ if (_t._iO.onmetadata) {\r
++ _s._wD('SMSound._onmetadata(): "'+_t.sID+'"');\r
++ _t._iO.onmetadata.apply(_t);\r
++ }\r
++ _s._wD('SMSound.onmetadata() complete');\r
++ };\r
++\r
++ this._onbufferchange = function(bIsBuffering) {\r
++ if (bIsBuffering == _t.isBuffering) {\r
++ // ignore initial "false" default, if matching\r
++ return false;\r
++ }\r
++ _t.isBuffering = (bIsBuffering==1?true:false);\r
++ if (_t._iO.onbufferchange) {\r
++ _s._wD('SMSound._onbufferchange(): '+bIsBuffering);\r
++ _t._iO.onbufferchange.apply(_t);\r
++ }\r
++ };\r
++\r
++ }; // SMSound()\r
++\r
++ // register a few event handlers\r
++ if (window.addEventListener) {\r
++ window.addEventListener('focus',_s.handleFocus,false);\r
++ window.addEventListener('load',_s.beginDelayedInit,false);\r
++ window.addEventListener('unload',_s.destruct,false);\r
++ if (_s._tryInitOnFocus) {\r
++ window.addEventListener('mousemove',_s.handleFocus,false); // massive Safari focus hack\r
++ }\r
++ } else if (window.attachEvent) {\r
++ window.attachEvent('onfocus',_s.handleFocus);\r
++ window.attachEvent('onload',_s.beginDelayedInit);\r
++ window.attachEvent('unload',_s.destruct);\r
++ } else {\r
++ // no add/attachevent support - safe to assume no JS -> Flash either.\r
++ _s._debugTS('onload',false);\r
++ soundManager.onerror();\r
++ soundManager.disable();\r
++ }\r
++\r
++ if (document.addEventListener) {\r
++ document.addEventListener('DOMContentLoaded',_s.domContentLoaded,false);\r
++ }\r
++\r
++} // SoundManager()\r
++\r
++soundManager = new SoundManager();
--- /dev/null
--- /dev/null
++{eztelemetadata_set('eztelemeta_player', true)}
++<div class="view-embed">
++ <div class="content-media">
++ {include uri="design:content/datatype/view/eztelemetaitem.tpl"
++ attribute=$object.data_map.item}
++ </div>
++</div>
++
--- /dev/null
--- /dev/null
++{* Telemeta Item - Full view *}
++
++<div class="content-view-full">
++ <div class="class-telemetaitem">
++
++ <h2>{$node.data_map.item.content.title|wash}</h2>
++
++ <div class="content-media">
++ {include uri="design:content/datatype/view/eztelemetaitem.tpl"
++ attribute=$node.data_map.item}
++ </div>
++
++ </div>
++</div>
--- /dev/null
--- /dev/null
++/*
++ * eZTelemeta default CSS rules
++ *
++ * Copyright (c) 2009 Samalyse
++ * Author: Olivier Guilyardi <olivier samalyse com>
++ * License: CeCILL Free Software License Agreement
++ */
++
++/* Core styles
++ *
++ * These style rules are quite neutral in regard to visual appearance, and
++ * are meant to provide basic ergonomic enhancements such as:
++ * - play/pause icons
++ * - sound load blinking
++ * - position hiding when stopped
++ */
++
++.telemeta-item { text-align: left; }
++
++.telemeta-item .telemeta-sound a {
++ display: block;
++ background: url('../images/play.gif') no-repeat left top;
++ padding-left: 29px;
++ height: 22px;
++ padding-top: 0.5ex;
++}
++.telemeta-item .telemeta-position, .telemeta-item .telemeta-separator { display: none; }
++.telemeta-playing .telemeta-sound a { background-image: url('../images/stop.gif'); }
++.telemeta-playing .telemeta-position, .telemeta-playing .telemeta-separator { display: inline; }
++.telemeta-loading .telemeta-position { text-decoration: blink; }
++
++/* Compact box styles
++ *
++ * While remaining quite visually neutral, these rules are meant to make telemeta
++ * items more appealing and compact, and may not fit with all designs.
++ */
++
++.telemeta-item {
++ position: relative;
++ background: #EEEEEE;
++ padding: 0.3ex 1.3ex 1.3ex 1.3ex;
++ border: solid 1px #DDDDDD;
++}
++
++.telemeta-item dd { margin-left: 0; }
++
++.telemeta-item dt.telemeta-sound, .telemeta-item dt.telemeta-duration,
++.telemeta-item dt.telemeta-description { display: none; }
++
++.telemeta-item .telemeta-sound { padding-right: 8.3em; }
++
++.telemeta-item .telemeta-sound a {
++ text-decoration: none;
++ font-weight: bold;
++ color: #000066;
++ outline: none;
++ padding-bottom: 0.6ex;
++}
++
++.telemeta-item dd.telemeta-duration {
++ position: absolute;
++ right: 0.7ex;
++ top: 1.4ex;
++ font-size: 80%;
++ color: #000066;
++ padding: 0.4ex 0.7ex 0.3ex 0.7ex;
++ border-bottom: solid 1px #E0E0E0;
++ border-top: solid 1px #DDDDDD;
++ font-weight: bold;
++}
++
++.telemeta-item .telemeta-sound a:hover, .telemeta-playing dd.telemeta-duration { color: #0000AA; }
++.telemeta-playing .telemeta-position { color: #AA0000; }
++.telemeta-item dd.telemeta-description { font-style: italic; margin-left: 0.2em; }
++.telemeta-item .telemeta-creator, .telemeta-item .telemeta-rights { font-size: 90%; margin-bottom: 1px; }
++
++.telemeta-item dt.telemeta-creator, .telemeta-item dt.telemeta-rights {
++ float: left;
++ padding-right: 1ex;
++ position: relative;
++ margin-left: 0.2em;
++}
++
++.telemeta-item .telemeta-clear { clear: both; }
++.telemeta-item .telemeta-position, .telemeta-item .telemeta-separator { display: inline; }
++
--- /dev/null
--- /dev/null
++{* DO NOT EDIT THIS FILE! Use an override template instead. *}
++{default attribute_base=ContentObjectAttribute}
++
++<div class="block">
++<label>{'Telemeta URL'|i18n( 'design/standard/content/datatype' )}:</label>
++<input class="box ezcc-{$attribute.object.content_class.identifier} ezcca-{$attribute.object.content_class.identifier}_{$attribute.contentclass_attribute_identifier}" type="text" name="{$attribute_base}_url_{$attribute.id}" value="{$attribute.content.url}" />
++</div>
++
++<div class="block">
++<label>{'Item Identifier'|i18n( 'design/standard/content/datatype' )}:</label>
++<input class="box ezcc-{$attribute.object.content_class.identifier} ezcca-{$attribute.object.content_class.identifier}_{$attribute.contentclass_attribute_identifier}" type="text" name="{$attribute_base}_itemid_{$attribute.id}" value="{$attribute.content.id}" />
++</div>
--- /dev/null
--- /dev/null
++{eztelemetadata_set('eztelemeta_player', true)}
++{def $item=$attribute.content}
++<div class="telemeta-item">
++ <dl>
++ <dt class="telemeta-sound">{'Sound'|i18n('eztelemeta')} :</dt>
++ <dd class="telemeta-sound"><a href="{$item.mp3}">{$item.title|wash}</a></dd>
++
++ <dt class="telemeta-duration">{'Duration'|i18n('eztelemeta')} :</dt>
++ <dd class="telemeta-duration">
++ <span class="telemeta-position">00:00:00</span>
++ <span class="telemeta-separator"> / </span>
++ {$item.duration_str}
++ </dd>
++
++ {if $item.description }
++ <dt class="telemeta-description">{'Description'|i18n('eztelemeta')} :</dt>
++ <dd class="telemeta-description">{$item.description|wash}</dd>
++ {/if}
++
++ {if $item.creator }
++ <dt class="telemeta-creator">{'Creator'|i18n('eztelemeta')} :</dt>
++ <dd class="telemeta-creator">{$item.creator|wash}</dd>
++ {/if}
++
++ {if $item.rights }
++ <dt class="telemeta-rights">{'Legal rights'|i18n('eztelemeta')} :</dt>
++ <dd class="telemeta-rights">{$item.rights|wash}</dd>
++ {/if}
++ </dl>
++ <div class="telemeta-clear"></div>
++</div>
++{undef}
--- /dev/null
--- /dev/null
++{if is_set( $module_result.content_info.persistent_variable.eztelemeta_player )}
++<style type="text/css">
++ @import url({"stylesheets/eztelemeta.css"|ezdesign});
++</style>
++<script language="JavaScript" type="text/javascript" src={"javascript/soundmanager2-nodebug-jsmin.js"|ezdesign}></script>
++<script language="JavaScript" type="text/javascript" src={"javascript/eztelemeta-player.js"|ezdesign}></script>
++<script language="JavaScript" type="text/javascript">
++/* SoundManager2 configuration */
++soundManager.url = {'swf/'|ezdesign};
++
++telemetaPlayer = new TelemetaPlayer();
++
++{literal}
++soundManager.onload = function() {
++ telemetaPlayer.setSoundManager(soundManager);
++}
++{/literal}
++</script>
++{/if}
--- /dev/null
--- /dev/null
++VERSION := $(shell cat ../VERSION)
++DOCS=README.fr.html README.fr.pdf README.fr README.fr.latex
++
++doc: $(DOCS)
++
++README.fr.html: README.fr doc.css player.png
++ cat README.fr | sed 's/:scale: .*/:scale: 100/' | \
++ rst2html -lfr --stylesheet=doc.css --link-stylesheet - $@
++
++README.fr.pdf: README.fr.latex
++ pdflatex $^
++ pdflatex $^ # Double run is sometimes needed
++
++README.fr.latex: README.fr player.png
++ rst2latex -lfr README.fr $@
++
++README.fr: README.fr.in ../VERSION
++ cat README.fr.in | sed "s/EZTVERSION/$(VERSION)/g" > $@
++
++clean:
++ rm -f $(DOCS) README.fr.aux README.fr.out README.fr.log
++
++# vim: set noexpandtab: ts=2: sw=2:
--- /dev/null
--- /dev/null
++=============================================
++eZTelemeta |version| - Mise en place et usage
++=============================================
++
++:Auteur: Olivier Guilyardi <olivier samalyse com>
++:Date: |today|
++
++.. contents:: **Table des matières**
++.. sectnum::
++
++----
++
++Introduction
++~~~~~~~~~~~~
++
++Le présent document décrit les procédures de mise en place et d'usage
++de l'extension eZPublish eZTelemeta |version|. Cette extension a pour but
++de permettre l'intégration dynamique d'éléments sonores en provenance
++du logiciel Telemeta.
++
++Pré-requis
++~~~~~~~~~~
++
++- Système Linux ou FreeBSD:
++- PHP version 5.2 ou supérieur
++- Apache version 1.3 ou supérieur
++- eZPublish 4.1.0
++- l'accès distant à une installation Telemeta
++
++Mise en place
++~~~~~~~~~~~~~
++
++Installation de l'extension
++---------------------------
++
++eZTelemeta |version| est distribuée sous la forme d'une archive .tar.gz,
++contenant le répertoire ``eztelemeta``, à placer dans le répertoire
++``extension`` de l'installation eZPublish.
++
++Puis activer l'extension dans l'administration, onglet Setup/Extensions,
++et régénerer les données de chargement automatique (``Regenerate
++autoload arrays for extensions``)
++
++Création de la classe principale
++--------------------------------
++
++eZTelemeta définit un nouveau type de données, appelé ``Telemeta
++Item``. Les utilisateur avancés de eZPublish peuvent envisager
++différents scénarios d'utilisation de ce type de données. La procédure
++décrite ici consiste à créer une classe qui ne contiendra qu'un
++seul attribut, de type ``Telemeta Item``. Il est fortement recommandé
++de procéder ainsi lors d'une première mise en place, notamment pour
++intégrer facilement le lecteur audio aux pages publiques.
++
++Dans l'administration, dans Setup/Classes, dans le groupe Media, créer
++une classe avec les paramètres suivants::
++
++ - Name: Telemeta Audio Item
++ - Identifier: telemetaitem
++ - Object name pattern: <item>
++
++Ajouter un attribut de type ``Telemeta Item``, avec pour paramètres (*respecter
++la casse*)::
++
++ - Name: Item
++ - Identifier: item
++ - Required: activé
++ - Searchable: activé
++
++Cliquer sur OK pour enregistrer la nouvelle classe.
++
++Réglage des permissions
++-----------------------
++
++Pour pouvoir afficher les items sur les pages publiques, il faut autoriser
++leur accès aux utilisateurs *anonymes*.
++
++Dans l'espace d'administration, onglet Setup, dans Roles and policies:
++
++1. Éditer le rôle ``Anonymous``
++2. Cliquer sur ``New policy``
++3. Choisir le module ``content`` puis cliquer sur ``Grant access to one function``
++4. Choisir la fonction ``read`` puis cliquer sur ``Grant limited access``
++5. Choisir la classe ``Telemeta Audio Item`` puis cliquer en bas de page sur OK
++6. De retour sur le role, cliquer à nouveau sur OK
++
++Création d'un objet de contenu
++------------------------------
++
++Il est maintenant possible de créer un objet de contenu (une instance)
++à partir de cette classe, par exemple dans l'onglet Media Library,
++dossier Multimedia, créer un objet de type Telemeta Audio Item avec
++pour paramètres::
++
++ - Telemeta URL: L'url de l'installation Telemeta distante.
++ (exemple: http://mucem.telemeta.org)
++
++ - Item Identifier: La cote de l'item. Celle-ci peut être trouvée
++ en accédant à l'interface web de Telemeta, sur
++ la page de l'item choisi.
++
++Puis enregistrer les modifications (``Send for publishing``).
++
++**Remarque**: au moment de l'enregistrement, eZTelemeta établit
++une connexion avec l'installation Telemeta distante, en utilisant le
++protocole OAI-PMH via HTTP. Si la cote de l'item est invalide, ou
++si la connexion HTTP ne peut-être établi à cause d'un mauvais URL,
++l'item ne sera pas enregistré, et une erreur s'affichera. Dans ce cas
++vérifiez bien votre saisie.
++
++Intégration de l'objet de contenu dans un article
++-------------------------------------------------
++
++Maintenant que nous disposons d'un objet de contenu Telemeta, il est facile
++de l'intégrer à un article. Pour ce faire, lors de l'édition d'un article:
++
++1. Cliquer sur l'icône représentant un *trombone* (``Insérer/modifier un objet``)
++2. Une fenêtre DHTML doit s'ouvrir, cliquer sur Parcourir, Media puis sur Multimedia
++3. Sélectionner l'item Telemeta à insérer, un aperçu (lien, titre, etc...) doit s'afficher
++4. Cliquer sur OK
++
++L'item doit maintenant être intégré au corps de l'article, sous la
++forme d'une liste de définition HTML (``<dl>...</dl>``), affichant le
++titre de l'item sous la forme d'un lien vers le fichier son hébergé
++sur le serveur Telemeta, la durée (HH:MM:SS) de l'item, et suivant les
++informations qui sont disponibles, un ou plusieurs éléments parmi les
++suivants: Auteur/Collecteur, Description, Droits d'usage.
++
++L'intégration sous la forme d'une liste de définition HTML a plusieurs avantages:
++
++- en terme de contenu, c'est la construction HTML la plus adaptée à une liste de méta-données
++- la présentation est facilement personnalisable avec des feuilles de styles CSS.
++- elle est accessible, facilitant par exemple la consultation à l'aide de périphériques de type lecteur
++ d'écran destinés aux mal-voyants
++
++Intégration du lecteur audio
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++Remarques générales sur le lecteur
++----------------------------------
++
++eZTelemeta inclut un lecteur audio web employant javascript et flash de
++façon dîte *dégradable*: si flash ou javascript sont absents, le lien
++HTML vers le fichier son (mp3) est laissé intacte, et la lecture reste
++donc possible à l'aide d'un module externe au navigateur (Windows Media
++Player, iTunes, VLC, etc...).
++
++Cependant, la plupart des utilisateurs pourront profiter du lecteur audio
++permettant la lecture interactive du son sans quitter la page en cours,
++à la condition que le lecteur Adobe Flash 8 soit installé, et javascript
++activé, sous:
++
++- Internet Explorer 6 et 7
++- Firefox 2 et 3
++- Safari 3
++- Opera 9
++
++Voici un aperçu du lecteur :
++
++.. image:: player.png
++ :scale: 75
++
++Dans le respect des règles de l'art du web actuel, les routines
++javascript sont séparées de façon stricte du contenu HTML. L'affichage
++interactif du lecteur est entièrement personnalisable via CSS et/ou
++modification des templates eZPublish. Flash est utilisé de façon
++invisible, via la librairie SoundManager2, offrant une API javascript
++dédiée au son.
++
++Plusieurs items peuvent être placés arbitrairement dans la page,
++s'intégrant bien au flot du contenu HTML. Lorsqu'on clique sur
++l'un deux, si la lecture d'un autre item est déjà en cours, elle
++s'interrompt, de façon à éviter la lecture accidentelle simultanée
++de plusieurs sons.
++
++**Remarque :** Pour simplifier la mise en place du lecteur, il est
++recommandé d'utiliser une classe de contenu eZPublish dont l'identifiant
++est ``telemetaitem`` comme indiqué à la section `Création de la classe
++principale`_.
++
++Chargement des dépendances
++--------------------------
++
++Le lecteur possède des dépendances CSS et Javascript qui doivent êtres
++chargées dans la section ``<head/>`` des pages du site. Pour ce faire
++eZTelemeta contient un template qui doit être inclut dans cette section,
++en personnalisant le template ``pagelayout.tpl``, qui est utilisé
++par eZPublish pour construire toutes les pages.
++
++Pour ce faire, se rendre dans l'onglet Design de l'espace
++d'administration eZPublish, et (si ce n'est déjà fait) y créer
++un ``override`` du template ``pagelayout.tpl`` pour le ou les sites
++concernés. Il est également recommandé de créer un tel ``override``
++pour le template ``pagelayout.tpl`` de la partie administrative.
++
++Puis, dans chacun des templates ``pagelayout.tpl`` concernés, inclure
++le template d'initialisation en plaçant l'expression suivante dans la section
++``<head/>``::
++
++{include uri="design:eztelemeta_head.tpl"}
++
++Enfin, vider le cache eZPublish. Le lecteur audio doit maintenant être actif
++à la fois sur les pages publiques intégrant un item Telemeta, et lors de la
++pré-visualisation d'un article dans l'espace administratif.
++
++**Remarque**: le fait d'inclure le template ``eztelemeta_head.tpl`` dans toutes
++les pages du site via la personnalisation de ``pagelayout.tpl``, n'alourdit pas
++inutilement le chargement des pages. Les dépendances CSS, JS et Flash ne sont
++chargées que si la page en cours contient effectivement un item Telemeta.
++
++Personnalisation à l'aide de feuilles de style
++----------------------------------------------
++
++Comme indiqué à la section `Remarques générales sur le lecteur`_
++l'apparence du lecteur audio repose intégralement sur HTML et CSS,
++contrairement à un lecteur possédant une interface utilisateur flash,
++et peut donc facilement être personnalisée.
++
++Dans la majorité des cas, la personnalisation peut être effectuée à l'aide règles
++de style CSS.
++
++Par défaut, l'affichage d'un item par défaut a la structure suivante::
++
++ <div class="telemeta-item">
++ <dl>
++ <dt class="telemeta-sound">Son :</dt>
++ <dd class="telemeta-sound"><a href="...">...</a></dd>
++
++ <dt class="telemeta-duration">Durée :</dt>
++ <dd class="telemeta-duration">
++ <span class="telemeta-position">...</span>
++ <span class="telemeta-separator"> / </span>
++ ...
++ </dd>
++
++ <dt class="telemeta-description">Description :</dt>
++ <dd class="telemeta-description">...</dd>
++
++ <dt class="telemeta-creator">Auteur / Collecteur :</dt>
++ <dd class="telemeta-creator">...</dd>
++
++ <dt class="telemeta-rights">Droits d'usage :</dt>
++ <dd class="telemeta-rights">...</dd>
++ </dl>
++ <div class="telemeta-clear"></div>
++ </div>
++
++Lorsque la lecture est en cours, la classe ``telemeta-playing`` est
++ajoutée automatiquement (par la classe javascript ``TelemetaPlayer``)
++à l'élément ``div``::
++
++ <div class="telemeta-item telemeta-playing">
++ ...
++ </div>
++
++Si la lecture est activée, mais que le son ne peut-être joué car il est
++en cours de chargement (mise en tampon), la classe ``telemeta-loading``
++est ajoutée à l'élément ``div``::
++
++ <div class="telemeta-item telemeta-playing telemeta-loading">
++ ...
++ </div>
++
++La feuille de style par défaut est quant à elle localisée dans::
++
++ eztelemeta/design/standard/stylesheets/eztelemeta.css
++
++Cette feuille de style contient deux sections:
++
++ - Core styles: ces règles laisse la liste de définition HTML ``<dl/>``
++ quasiment intacte, ajoutant simplement l'icône play/pause au lien,
++ et un effet de clignotement en cours de chargement.
++ - Compact box styles: ces règles, légèrement plus intrusives, donne son
++ apparence plus compacte au lecteur, avec couleur de fond, etc...
++
++Personnalisation des Templates
++------------------------------
++
++Pour une personnalisation plus poussée de l'apparence du lecteur il est possible
++de modifier les templates HTML. Pour ce faire, comme ailleurs dans eZPublish, il
++est recommandé de créer des ``override`` de template, et non de modifier
++directement les templates. Se reporter à la documentation de eZPublish pour plus
++de détails.
++
++Le code HTML du lecteur réside essentiellement dans le template de vue du type
++de donnée ``Telemeta Item``::
++
++ eztelemeta/design/standard/templates/content/datatype/view/eztelemetaitem.tpl
++
++Cependant, d'autres templates sont nécessaires suivant le contexte d'affichage.
++Mais, pour éviter la redondance ils *incluent* le template ci-dessus. De cette
++façon, la modification de ce template se répercutent automatiquement dans les
++différents contextes. Néanmoins, dans certains cas, il peut-être utile d'éviter
++ce mécanisme d'inclusion pour une personnalisation plus poussée, ce qui reste
++possible via le système de surcharge (``override``) de eZPublish.
++
++Ces templates annexes, qui incluent le template principal sont::
++
++ - template d'imbrication (dans un article, etc...) :
++ eztelemeta/design/standard/override/templates/embed/eztelemetaitem.tpl
++
++ - template de vue autonome (résultat de recherche, etc...) :
++ eztelemeta/design/standard/override/templates/full/eztelemetaitem.tpl
++
++Par ailleurs, le chargement des dépendances et l'initialisation du
++lecteur sont réalisés dans::
++
++ eztelemeta/design/standard/templates/eztelemeta_head.tpl
++
++
++Mise à jour dynamique et gestion du cache
++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
++
++Contenu dynamique
++-----------------
++
++Contrairement à la grande majorité des contenus gérés dans eZPublish,
++les items sont susceptibles de changer depuis l'extérieur, c'est à
++dire dans le contexte de Telemeta lui-même.
++
++L'une des raisons d'être de eZTelemeta est la répercussion automatique
++de ces changements (titre, son, auteur, etc...), sans qu'il soit
++nécessaire d'intervenir dans l'espace d'administration de eZPublish.
++
++Cette fonctionnalité est rendue possible grâce au lien OAI-PMH établi
++avec Telemeta, et la gestion du cache eZPublish.
++
++Gestion du cache
++----------------
++
++L'établissement d'une connexion avec le serveur distant Telemeta ne peut
++bien évidemment pas être effectuée à chaque affichage d'un item,
++ce serait trop lourd.
++
++Cependant, eZTelemeta n'inclut pas de système de gestion de cache spécifique.
++C'est le cache standard de eZPublish qui est utilisé.
++
++Ainsi, il convient que l'administrateur vérifie les réglages du cache,
++de façon à ce qu'il soit vidé périodiquement, pour recharger les
++méta-données des items Telemeta.
++
++Cette opération peut notamment être réalisée via un cronjob appelant régulièrement
++le script eZPublish suivant::
++
++ php bin/php/ezcache.php --clear-tag=content
++
++Cette opération entraînera effectivement le rafraîchissement de l'ensemble des
++méta-données des items, affichées dans le lecteur audio.
++
++Cependant, le nom des objets de contenu n'est pas mis à jour par la
++purge du cache. C'est une limitation de eZPublish, qui est légèrement
++problématique dans le contexte de la gestion d'objets distants comme
++les items Telemeta.
++
++Les noms d'objets contiennent le titre d'item et apparaissent:
++
++- dans le titre HTML de la page lors de la vue autonome d'un item Telemeta
++- dans la liste des résultats de recherche
++- dans la liste d'objets de contenu dans l'espace d'administration
++
++Aucune opération de purge de cache ne met à jour ces noms d'objets, il faut soit
++modifier l'item, soit avoir recours au script eZPublish suivant, via un cronjob
++par exemple (il est recommandé de faire une sauvegarde avant le premier lancement
++de ce script)::
++
++ php update/common/scripts/updatecontentobjectname.php
++
++
++.. |version| replace:: EZTVERSION
++.. |today| date::
++.. vim: set ft=rst:
--- /dev/null
--- /dev/null
++body { font-size: 90%; }
++h1 a, h2 a { text-decoration: none; color: black; }
++h1 a { border-bottom: solid 2px #BBBBBB; }
++h1 a:hover, h2 a:hover { border-bottom: solid 2px #990000; }
++h1 { font-size: 150%; }
++h2 { font-size: 110%; }
++h1.title { border-bottom: solid 2px #990000; font-size: 170%; }
++tt.literal, pre.literal-block { background: #EEEEEE; }
++.contents a { color: #880000; }
--- /dev/null
--- /dev/null
++[DataTypeSettings]
++ExtensionDirectories[]=eztelemeta
++AvailableDataTypes[]=eztelemetaitem
++
--- /dev/null
--- /dev/null
++[ExtensionSettings]
++DesignExtensions[]=eztelemeta
++
--- /dev/null
--- /dev/null
++[telemetaitem_full]
++Source=node/view/full.tpl
++MatchFile=full/eztelemetaitem.tpl
++Subdir=templates
++Match[class_identifier]=telemetaitem
++
++[embed_telemetaitem]
++Source=content/view/embed.tpl
++MatchFile=embed/eztelemetaitem.tpl
++Subdir=templates
++Match[class_identifier]=telemetaitem
--- /dev/null
--- /dev/null
++[TemplateSettings]
++ExtensionAutoloadPath[]=eztelemeta
++
++[RegionalSettings]
++TranslationExtensions[]=eztelemeta
++
--- /dev/null
--- /dev/null
++<!DOCTYPE TS><TS>
++<defaultcodec></defaultcodec>
++<context>
++ <name>eztelemeta</name>
++ <message>
++ <source>Sound</source>
++ <translation>Son</translation>
++ </message>
++ <message>
++ <source>Duration</source>
++ <translation>Durée</translation>
++ </message>
++ <message>
++ <source>Description</source>
++ <translation>Description</translation>
++ </message>
++ <message>
++ <source>Creator</source>
++ <translation>Auteur / Collecteur</translation>
++ </message>
++ <message>
++ <source>Legal rights</source>
++ <translation>Droits d'usage</translation>
++ </message>
++</context>
++</TS>